Я работаю над простым проектом, используя Paperclip для загрузки изображений. Все работает отлично, пока я не попытался интегрировать S3 с Paperclip. При загрузке изображения пользователя я получаю ошибку NoMethodError (undefined method 'match' for nil:NilClass):
. Это происходит только тогда, когда у меня запущена моя конфигурация S3 - если я прокомментирую ее загрузку файла отлично.
Моя конфигурация:
development.rb:
....
....
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET_ID'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
Моя модель:
class User < ActiveRecord::Base
has_attached_file :image_file, default_url: "/myapp/images/:style/missing.png"
validates_attachment_file_name :image_file, matches: [/png\Z/, /jpeg\Z/, /tiff\Z/, /bmp\Z/, /jpg\Z/]
вывод всей ошибки с консоли:
NoMethodError (undefined method `match' for nil:NilClass):
app/controllers/images_controller.rb:33:in `block in create'
app/controllers/images_controller.rb:32:in `create'
Вещи, которые я пробовал:
-
Я добавил ключи AWS и имя ковша непосредственно в код вместо как переменной среды.
-
Как уже упоминалось выше, я прокомментировал конфигурацию AWS в файле окружения и, казалось, работал отлично.
Возможно, стоит упомянуть, что раньше я установил камень fog
, чтобы начать настройку для Google Cloud Storage, но решил использовать S3 вместо этого. Я использовал gem uninstall fog
для удаления драгоценного камня, но оказалось, что некоторые зависимости остались.