15

2012年6月9日更新:

herokuでmongoid3.0.0.rcを使用してセットアップします。この要点を参照してください:https ://gist.github.com/2900804

2011年1月22日更新:

Uriがmongoid.ymlで優先されるようになりました

https://github.com/mongoid/mongoid/issues/issue/266

2010年8月12日更新:Jackues Crockerから5月6日までに承認された回答を得ましたが、この問題には混乱を招きやすい側面があります。それはまた私に起こりました、そして私はモンゴイドソースコードを研究することに決めました。だから、ここに行きます:

現在、ホスト:ポート:名前/データベース:設定URI:設定よりも優先されます。したがって、flame.local.mongohq.com :xxxxではなくlocalhost:xxxxへのリクエストが原因で、非常に情報量の少ないエラーメッセージが表示されます。

これは壊れます!

defaults: &defaults
  host: localhost  <- THIS 'OVERWRITES' host in the uri!

production:
  <<: *defaults    <- BE CAREFUL WITH WHAT YOU BRING IN. THE host: FROM DEFAULTS WILL BE THE ONE APPLIED, not your uri host.
  uri: <%= ENV['MONGOHQ_URL'] %>

デフォルトでホストを削除するか、 <<:*defaultsを削除して修正します。


オリジナルQ:

herokuでmongodbのmongoHQアドオンを追加しました。でクラッシュします:

connect_to_master': failed to connect to any given host:port (Mongo::ConnectionFailure)

オンラインでの説明(heroku mongohq)は、私が見ているように、mongomapperに向けられています。私はruby1.9.1とrails3-betaをmongoidで実行しています。

ENV['MONGOHQ_URL']MongoHQアドオンが設定されているとのことですが、アプリのどこにも設定しMONGOHQ_URLていません。問題は私のmongoid.ymlにあると思いますか?

defaults: &defaults
  host: localhost

development:
  <<: *defaults
  database: aliado_development

test:
  <<: *defaults
  database: aliado_test

# set these environment variables on your prod server
production:
  <<: *defaults
  host: <%= ENV['MONGOID_HOST'] %>
  port: <%= ENV['MONGOID_PORT'] %>
  username: <%= ENV['MONGOID_USERNAME'] %>
  password: <%= ENV['MONGOID_PASSWORD'] %>
  database: <%= ENV['MONGOID_DATABASE'] %>

ローカルでは正常に動作しますが、herokuでは失敗します。スタックトレースが増えます。

==> crashlog.log <==
Cannot write to outdated .bundle/environment.rb to update it
/disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/rack-1.1.0/lib/rack.rb:14: warning: already initialized constant VERSION
/disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongo-0.20.1/lib/mongo/connection.rb:435:in `connect_to_master': failed to connect to any given host:port (Mongo::ConnectionFailure)
    from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongo-0.20.1/lib/mongo/connection.rb:112:in `initialize'
    from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongoid-2.0.0.beta4
/lib/mongoid/railtie.rb:32:in `new'
    from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongoid-2.0.0.beta4/lib/mongoid/railtie.rb:32:in `block (2 levels) in <class:Railtie>'
    from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongoid-2.0.0.beta4/lib/mongoid.rb:110:in `configure'
    from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongoid-2.0.0.beta4/lib/mongoid/railtie.rb:21:in `block in <class:Railtie>'
    from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/railties-3.0.0.beta3/lib/rails/initializable.rb:25:in `instance_exec'
.....

テストとアプリの両方で、すべてローカルで動作します。私はアイデアがありません...何か提案はありますか?

PS:高い評判を持っている人は、タグ「mongohq」を作成しますか?

4

4 に答える 4

25

Mongoid(マスター)のmongoid.ymlにURIオプションが追加されました。だからあなたはすることができます:

production:
  uri: <%= ENV['MONGOHQ_URL'] %>

プロジェクトでmongoidmasterを使用するには、これをGemfileに設定します

gem "mongoid", :git => "git@github.com:mongoid/mongoid.git"

うまくいけば、物事をきれいにする新しい宝石がすぐにリリースされるでしょう。

于 2010-05-06T22:18:50.360 に答える
11

デフォルトのハッシュでホストを指定すると、uriの値が上書きされるように思われます。これを修正するには、デフォルトからホストを削除するだけです。これが私のconfig/mongo.ymlです。

defaults: &defaults
  allow_dynamic_fields: true
  parameterize_keys: true
  persist_in_safe_mode: true
  raise_not_found_error: true
  reconnect_time: 3
  use_object_ids: true

production:
  <<: *defaults
  uri: <%= ENV['MONGOHQ_URL'] %>

これがmongoidのconfig.rbからのスニペットです:

  mongo_uri = settings["uri"].present? ? URI.parse(settings["uri"]) : OpenStruct.new

  name = settings["database"] || mongo_uri.path.to_s.sub("/", "")
  host = settings["host"] || mongo_uri.host || "localhost" # <= look here
  port = settings["port"] || mongo_uri.port || 27017
于 2010-05-31T06:16:04.303 に答える
4

ドキュメントのherokuセクションにいくつかのmongoidドキュメントがあります。まだ正式にはリリースされていませんが、すでにリリースされています。まだスタイルやコンテンツについてはあまり期待しないでください。ただし、mongoidに役立つ情報がいくつかあります。

https://devcenter.heroku.com/articles/mongohq

于 2010-05-07T02:42:18.260 に答える
0

http://mongoid.github.com/docs/installation/で宣伝されているように、これは問題なく機能することに注意してください。

Gemfile:

gem "rails", '3.0.0.beta3'
gem "mongoid", "2.0.0.beta4"
gem "bson_ext", "0.20.1"

mongoid.yml:

host: xxx.mongohq.com
port: xxx
database: db
username: user
password: xxx
于 2010-05-10T13:17:15.033 に答える