我已经使用蜻蜓宝石上传图片到我的应用程序,我也尝试将它链接到S3。但是当我将它部署到heroku时,我收到以下错误:
NoMethodError: undefined method `datastore' for main:Object
/config/initializers/dragonfly.rb:4:in `<top (required)>'
这是dragonfly.rb文件
require 'dragonfly'
if Rails.env.production?
datastore :s3,
bucket_name: ENV['S3_BUCKET'],
access_key_id: ENV['S3_KEY'],
secret_access_key: ENV['S3_SECRET'],
region: ENV['S3_REGION'],
url_scheme: 'https'
else
datastore :file,
root_path: Rails.root.join('public/system/dragonfly', Rails.env),
server_root: Rails.root.join('public')
end
# Configure
Dragonfly.app.configure do
plugin :imagemagick
secret "baaa65a6761943c5b52bfb927ffbe193bcb03858bf1bd73fa3d655f8208a1c39"
url_format "/media/:job/:name"
#datastore :file,
#root_path: Rails.root.join('public/system/dragonfly', Rails.env),
#server_root: Rails.root.join('public')
end
# Logger
Dragonfly.logger = Rails.logger
# Mount as middleware
Rails.application.middleware.use Dragonfly::Middleware
# Add model functionality
ActiveSupport.on_load(:active_record) do
extend Dragonfly::Model
extend Dragonfly::Model::Validations
end
我还将ENV直接添加到heroku
干杯!
答案 0 :(得分:1)
我之前并没有真正使用过Dragonfly,但是看看你的代码,我认为你得到的错误是因为你正在调用数据存储区超出Dragonfly的范围,除非Dragonfly有一个全局mixin添加{ {1}}应用程序的方法。
基本上,一点点重组应该为你解决这个问题。 你能尝试一下:
datastore
基本上,这会使您的数据存储区访问者在Dragonfly的范围内。 如果有效,请告诉我。