我正在使用paperclip处理我的Rails应用中的图片上传。使用文件存储在本地开发环境中运行良好。
现在我正在尝试使用S3(因为该应用程序将在Heroku上运行)。我已根据此处的说明设置了一个存储桶并在development.rb和production.rb中设置了相应的参数:https://devcenter.heroku.com/articles/paperclip-s3
当我启动服务器时,出现以下错误:
/Users/ganzogo/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.13/lib/rails/railtie/configuration.rb:85:in `method_missing': undefined method `paperclip' for #<Rails::Application::Configuration:0x007fcb8b952000> (NoMethodError)
from /Users/ganzogo/Documents/acknowledgement/true-rails/config/environments/development.rb:41:in `block in <top (required)>'
然后它崩溃了。
错误中提到的行是:
config.paperclip.defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['S3_BUCKET_NAME'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
如果我尝试在Heroku上运行,我会得到完全相同的错误。有没有人经历过这个并且知道我错过了什么?
答案 0 :(得分:3)
您的配置块中可能会出现拼写错误。尝试将config.paperclip.defaults = {...}
更改为config.paperclip_defaults = {...}
,这样可以解决您的问题。
答案 1 :(得分:0)
我们在我们的一个实时应用程序上工作了
不同之处在于您需要将凭据放入模型本身。这是我们得到的:
#app/models/image.rb
#Image Upload
Paperclip.options[:command_path] = 'C:\RailsInstaller\ImageMagick'
has_attached_file :image,
:styles => { :medium => "x300", :thumb => "x100" },
:default_url => "*******",
:storage => :s3,
:bucket => '******',
:s3_credentials => S3_CREDENTIALS
#app/config/application.rb
config.paperclip_defaults = {
:storage => :s3,
:s3_host_name => 's3-eu-west-1.amazonaws.com'
}
在Heroku中,您需要将各种环境变量添加到配置设置