2011-03-03 50 views
0

我有以下CarrierWave初始化它在我的Heroku/MONGOHQ/GridFS的ENV正常工作:不能分割「:壞的URI(不URI):

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 /通用」,但並不作品。

有人知道嗎? 在此先感謝 盧卡

+1

ENV ['MONGOHQ_URL']是否設置在您的開發環境中?我猜不是。 – KenB

+0

好的,沒有設置在我的本地機器上;-)現在它的工作。謝謝 –

回答

0

如建議通過的KeNB的ENV [「MONGOHQ_URL」]沒有設置好的在我的本地機器的研究與開發環境:

[email protected]:~/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」]參數值。

如果您有更好的方法,請分享一下嗎? 非常感謝:-) 盧卡

1

指定URI.parse(ENV['MONGOHQ_URL'] || 'some_other_link')另一個解決辦法是增加一個「.ENV」文件中的項目的根和定義有環境變量如:

MONGOHQ_URL=mongodb://someuser:[email protected]:10040/appid