Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 无法拆分';:错误的URI(不是URI?):_Ruby On Rails_Ruby On Rails 3_Url_Mongodb_Carrierwave - Fatal编程技术网

Ruby on rails 无法拆分';:错误的URI(不是URI?):

Ruby on rails 无法拆分';:错误的URI(不是URI?):,ruby-on-rails,ruby-on-rails-3,url,mongodb,carrierwave,Ruby On Rails,Ruby On Rails 3,Url,Mongodb,Carrierwave,我有以下CarrierWave初始值设定项,它在我的Heroku/MONGOHQ/GridFS环境中运行良好: 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 ur

我有以下CarrierWave初始值设定项,它在我的Heroku/MONGOHQ/GridFS环境中运行良好:

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
但是,当我尝试在本地(在developement中)运行代码时,我得到以下错误:

`split': bad URI(is not URI?):  (URI::InvalidURIError)
下面是完整的堆栈:我尝试在初始值设定项的顶部添加require'uri/generic',但不起作用

有人知道路吗? 提前谢谢
luca

根据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']参数值

如果你有更好的方法,请分享一下好吗? 非常感谢:-)
luca

在初始值设定项中,您可以这样做:
URI.parse(ENV['MONGOHQ_URL']| |'some_other_link')

中所述,另一个解决方案是在项目根目录中添加一个“.ENV”文件,并定义这些环境变量,如:

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

在您的开发环境中是否设置了ENV['MONGOHQ_URL']?我猜不是。好吧,不是在我的本地机器上设置的;-)现在它起作用了。非常感谢。