我有以下CarrierWave初始化它在我的Heroku / MONGOHQ / GridFS的ENV正常工作:
CarrierWave.configure do |config|
config.storage = :grid_fs
uri = URI.parse(ENV['MONGOHQ_URL'])
config.grid_fs_database = File.basename(uri.path)
config.grid_fs_host = uri.host unless uri.host.blank?
config.grid_fs_port = uri.port unless uri.port.blank?
config.grid_fs_username = uri.user unless uri.user.blank?
config.grid_fs_password = uri.password unless uri.password.blank?
config.grid_fs_access_url = '/gridfs'
config.cache_dir = "uploads"
config.root = Rails.root.join('tmp')
end
但是,当我尝试在本地运行的代码(研究与开发)我得到以下错误:
`split': bad URI(is not URI?): (URI::InvalidURIError)
这里是完整的堆栈: http://pastie.org/1630069我试图添加需要在初始化的顶部“URI /通用”,但并不作品。
有谁知道呀? 在此先感谢卢卡
另一种解决方案是在工程中添加根“.ENV”文件并定义有环境变量,如:
MONGOHQ_URL=mongodb://someuser:somepass@paulo.mongohq.com:10040/appid
正如在的KeNB建议ENV [“MONGOHQ_URL”]没有设置好的在我的本地机器的研究与开发环境:
lsoave@ubuntu:~/rails/heroku/mp3upload$ rails c
Loading development environment (Rails 3.0.5)
ruby-1.9.2-p136 :001 > ENV['MONGOHQ_URL']
=> nil
ruby-1.9.2-p136 :002 >
这是没有初始化的一个分支,所以我的本地机器上,我不得不跳过。 我做了这样的:
if ENV['MONGOHQ_URL']
CarrierWave.configure do |config|
config.storage = :grid_fs
uri = URI.parse(ENV['MONGOHQ_URL'])
config.grid_fs_database = File.basename(uri.path)
config.grid_fs_host = uri.host unless uri.host.blank?
config.grid_fs_port = uri.port unless uri.port.blank?
config.grid_fs_username = uri.user unless uri.user.blank?
config.grid_fs_password = uri.password unless uri.password.blank?
config.grid_fs_access_url = '/gridfs'
config.cache_dir = "uploads"
config.root = Rails.root.join('tmp')
end
end
我认为这应该是一个非常美好的方式在引导过程中跳过Ralis 3.0.5初始化,有条件的ENV [“MONGOHQ_URL”]参数值。
如果你有更好的办法,请你分享呢? 非常感谢:-)卢卡
在你的初始化,你可以这样做: URI.parse(ENV['MONGOHQ_URL'] || 'some_other_link')
作为指定MongoHQ Heroku的文档