Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails NoMethodError:未定义的方法`数据存储';对于main:Object_Ruby On Rails - Fatal编程技术网

Ruby on rails NoMethodError:未定义的方法`数据存储';对于main:Object

Ruby on rails NoMethodError:未定义的方法`数据存储';对于main:Object,ruby-on-rails,Ruby On Rails,我使用蜻蜓宝石将图像上传到我的应用程序,我还尝试将其链接到S3。但是,当我将其部署到heroku时,我遇到以下错误: NoMethodError: undefined method `datastore' for main:Object /config/initializers/dragonfly.rb:4:in `<top (required)>' 我还将ENV直接添加到heroku 干杯 我以前没有实际使用过Dragonfly,但看看您的代码,我认为您遇到的错误是因为您调用的数

我使用蜻蜓宝石将图像上传到我的应用程序,我还尝试将其链接到S3。但是,当我将其部署到heroku时,我遇到以下错误:

NoMethodError: undefined method `datastore' for main:Object
/config/initializers/dragonfly.rb:4:in `<top (required)>'
我还将ENV直接添加到heroku


干杯

我以前没有实际使用过Dragonfly,但看看您的代码,我认为您遇到的错误是因为您调用的数据存储超出了Dragonfly的范围,除非Dragonfly有一个全局混合,将
数据存储
方法添加到应用程序中

从本质上讲,稍微重新组织一下应该可以为您解决这个问题。 你能试试吗

require 'dragonfly'

# Configure
Dragonfly.app.configure do
  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
  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
基本上,这使您的数据存储访问器在Dragonfly的范围内。
让我知道这是否有效。

先生,您是一位传奇人物。就这样!谢谢您
require 'dragonfly'

# Configure
Dragonfly.app.configure do
  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
  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