【问题标题】:cannot split': bad URI(is not URI?):无法拆分':错误的 URI(不是 URI?):
【发布时间】:2011-03-03 20:59:27
【问题描述】:

我有以下 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 我尝试在初始化程序顶部添加 require 'uri/generic' 但不起作用。

有人知道吗? 提前致谢 卢卡

【问题讨论】:

  • 您的开发环境中是否设置了 ENV['MONGOHQ_URL']?我猜不是。
  • 好的,我的本地机器上没有设置 ;-) 现在可以了。谢谢

标签: ruby-on-rails ruby-on-rails-3 url mongodb carrierwave


【解决方案1】:

另一种解决方案是在项目根目录中添加一个“.env”文件并在那里定义环境变量,例如:

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

【讨论】:

    【解决方案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'] 参数值。

    如果你有更好的方法,可以分享一下吗? 非常感谢 :-) 卢卡

    【讨论】:

      【解决方案3】:

      在您的初始化程序中,您可以这样做:URI.parse(ENV['MONGOHQ_URL'] || 'some_other_link') 中指定的 MongoHQ Heroku docs

      【讨论】:

        猜你喜欢
        • 2012-02-23
        • 2011-07-19
        • 2012-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-20
        相关资源
        最近更新 更多