нельзя разделить ': плохой URI (не URI?): - PullRequest
0 голосов
/ 03 марта 2011

У меня есть следующий инициализатор 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

но, когда я пытаюсь запустить код локально (в разработке), я получаю следующую ошибку:

`split': bad URI(is not URI?):  (URI::InvalidURIError)

вот полный стек: http://pastie.org/1630069 Я пытался добавить require 'uri / generic' поверх инициализатора, но не работает.

Кто-нибудь знает способ? заранее спасибо Luca

Ответы [ 3 ]

1 голос
/ 18 августа 2013

другое решение - добавить файл «.env» в корень проекта и определить там переменные среды, например:

MONGOHQ_URL=mongodb://someuser:somepass@paulo.mongohq.com:10040/appid
0 голосов
/ 25 апреля 2012

В вашем инициализаторе вы можете сделать это: URI.parse(ENV['MONGOHQ_URL'] || 'some_other_link') как указано в документации MongoHQ Heroku

0 голосов
/ 04 марта 2011

Как предложил 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

...