0

Heroku / MONGOHQ / GridFS環境で正常に動作する次のCarrierWave初期化子があります:

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

4

3 に答える 3

1

別の解決策は、プロジェクトルートに「.env」ファイルを追加し、そこに次のような環境変数を定義することです。

MONGOHQ_URL=mongodb://someuser:somepass@paulo.mongohq.com:10040/appid
于 2013-08-18T13:32:46.510 に答える
0

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']パラメーター値になります。

もっと良い方法があれば、共有していただけませんか?どうもありがとう:-)ルカ

于 2011-03-04T06:38:51.643 に答える
0

イニシャライザで、これを行うことができます:MongoHQHerokuドキュメントURI.parse(ENV['MONGOHQ_URL'] || 'some_other_link')で指定されているように

于 2012-04-25T12:27:27.860 に答える