Ошибка Rails 3 Carrierwave-Fog-S3: ожидаемая (200) <=> фактическая (404 не найдена) - PullRequest
3 голосов
/ 20 мая 2011

Я использую Carrerwave 0.5.3 и получаю ошибку 404 при моем вызове Picture.save в методе Create моего контроллера изображения. В соответствии с инструкциями в lib / carrierwave / storage / s3.rb в моем файле инициализации (config / initializers / carrierwave_fog.rb) есть следующее:

CarrierWave.configure do |config|
     config.s3_access_key_id = "xxxxx"
     config.s3_secret_access_key = "xxxxx"
     config.s3_bucket = "mybucket"  #already created in my S3 account
end

В photo_uploader.rb у меня есть:

class PhotoUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :s3
  def store_dir
    "uploads"  # already created in my s3 account
  end
  def cache_dir
    "uploads/cache"  #already created in my s3 account
  end
end

Точная ошибка:

Excon::Errors::NotFound in PicturesController#create
Expected(200) <=> Actual(404 Not Found)
  request => {:expects=>200}
  response => #<Excon::Response:0x00000104a72448 @body="", @headers={}, @status=404>

Я нашел немного похожий вопрос здесь Carrierwave и s3 с ошибкой heroku неопределенный метод `fog_credentials = '. Но настройка вещей, как у меня сейчас, очевидно работала в этом случае. К сожалению, это не для меня.

Я положил картинку в свое ведро, установил разрешения для общего доступа и могу получить к ней доступ через браузер. Так что вещи на стороне AWS S3, кажется, работают.

Не уверен, куда идти дальше. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 21 мая 2011

Ну, я спал на эту ночь, вернулся на следующий день, и все было хорошо. Не уверен, почему это вдруг начало работать.

0 голосов
/ 27 декабря 2015

Убедитесь, что имена ваших файлов очищены и не содержат недопустимых символов, таких как пробелы или косые черты. Для очистки строки вы можете вызвать метод gsub. Следующий вызов метода очистит файлы для загрузки в S3, Google Cloud Storage и т. Д.

"Invalid\ file *& | | name.png".gsub(/[^0-9A-z.\-]/, '_')
...