我试图让Carrierwave(0.5.1)与Mongoid(2.0.0.beta.20),Rails 3一起工作。我在this guide处遵循了每一步。
在config / initializers / carrierwave.rb中,我有:
CarrierWave.configure do |config|
config.grid_fs_database = Mongoid.database.name
config.grid_fs_host = Mongoid.config.master.connection.host
config.storage = :grid_fs
config.grid_fs_access_url = "/uploads"
end
当我尝试启动服务器时( rails服务器)。在控制台中,我得到:
...config/initializers/carrierwave.rb:3:in `block in <top
(required)>': undefined method `host' for #<Mongo::Connection:
0x00000103802420> (NoMethodError)
我不明白为什么我会收到此错误。我到处都看 并且似乎无法找到为什么会发生这种情况......
看来, Mongoid.config.master.connection.host 不再有效了 在较新版本的Mongoid中。这被删除了吗?是什么 替换这个?
到目前为止,我的解决方法是以下代码:
CarrierWave.configure do |config|
config.grid_fs_database = Mongoid.database.name
config.grid_fs_host = 'localhost'
config.storage = :grid_fs
config.grid_fs_access_url = "/uploads"
end
第3行应该是: config.grid_fs_host ='localhost'。 &lt; - 是否有更好的方法根据环境动态指示主机?
答案 0 :(得分:1)
发现mongo gem已经改变了。所以它现在必须是:
config.grid_fs_host = Mongoid.database.connection.primary_pool.host