NoMethodError:未定义的方法`datastore' for main:对象

时间:2018-02-20 23:40:07

标签: ruby-on-rails

我已经使用蜻蜓宝石上传图片到我的应用程序,我也尝试将它链接到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

干杯!

1 个答案:

答案 0 :(得分:1)

我之前并没有真正使用过Dragonfly,但是看看你的代码,我认为你得到的错误是因为你正在调用数据存储区超出Dragonfly的范围,除非Dragonfly有一个全局mixin添加{ {1}}应用程序的方法。

基本上,一点点重组应该为你解决这个问题。 你能尝试一下:

datastore

基本上,这会使您的数据存储区访问者在Dragonfly的范围内。 如果有效,请告诉我。