不能分割“:坏的URI(是不是URI):(cannot split': bad URI(is

2019-10-28 09:10发布

我有以下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 /通用”,但并不作品。

有谁知道呀? 在此先感谢卢卡

Answer 1:

另一种解决方案是在工程中添加根“.ENV”文件并定义有环境变量,如:

MONGOHQ_URL=mongodb://someuser:somepass@paulo.mongohq.com:10040/appid


Answer 2:

正如在的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”]参数值。

如果你有更好的办法,请你分享呢? 非常感谢:-)卢卡



Answer 3:

在你的初始化,你可以这样做: URI.parse(ENV['MONGOHQ_URL'] || 'some_other_link')作为指定MongoHQ Heroku的文档



文章来源: cannot split': bad URI(is not URI?):