基本的に、ec2で実行および動作しているmongodbインスタンスがあります。側では、mongoid を orm としてローカルで作業している Rails 3.2 アプリがあります。次にやりたいことは、mongoid を使用して、レール アプリを mongodb インスタンスに接続することです。また、後で Dotcloud で Rails アプリをホストするつもりです
rails g mongoid:config
次のコードを使用して、mongoid.yml ファイルを生成するコードを実行します。
development:
host: localhost
database: mongotest_development
test:
host: localhost
database: mongotest_test
set these environment variables on your prod server
production:
host: <%= ENV['MONGOID_HOST'] %>
port: <%= ENV['MONGOID_PORT'] %>
username: <%= ENV['MONGOID_USERNAME'] %>
password: <%= ENV['MONGOID_PASSWORD'] %>
database: <%= ENV['MONGOID_DATABASE'] %>
# slaves:
# - host: slave1.local
# port: 27018
# - host: slave2.local
# port: 27019
ここから先、このすべてがどのように機能するかについて明確なイメージを持っているとは思いません。しかし、私はいくつかの試行錯誤をしました。まず開発時にmongodbインスタンスに接続してみたかったので、mongoid.ymlのデフォルトをコメントアウトして以下を追加しました。
development:
host: <public dns of the mongodb instance>
port: 27017
# username:
# password:
database: <I ssh into the instance and created a database>
ユーザー名とパスワードをコメント アウトした理由の 1 つは、何を入力すればよいかわからないことと、ec2 の mongod.conf ファイルを調べたときに、デフォルトで :auth が false であることを確認したため、認証は不要であると想定したためです。だから私は走っrails console
て、次のエラーを得ました:
Failed to connect to a master node at <public dns of the mongodb instance>:27017 (Mongo::ConnectionFailure)
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongo-1.6.2/lib/mongo/connection.rb:589:in `setup'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongo-1.6.2/lib/mongo/connection.rb:114:in `initialize'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongo-1.6.2/lib/mongo/connection.rb:165:in `new'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongo-1.6.2/lib/mongo/connection.rb:165:in `from_uri'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongoid-2.4.10/lib/mongoid/config/database.rb:86:in `master'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongoid-2.4.10/lib/mongoid/config/database.rb:19:in `configure'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongoid-2.4.10/lib/mongoid/config.rb:290:in `configure_databases'
....
この時点で、私はちょっと混乱しています。mongodb に接続するにはユーザー名とパスワードが必要ですか? 私はそれらが必要であることを80%確信していますが、それらを見つける場所がわからないか、mongodb ec2インスタンスまたはmongodbデータベースの何に接続しているのかわかりません. どうすればいいですか?インスタンスでポート 27017 と 28017 を開く必要がありますか? config を database.yml に追加する必要がありますか?
ドキュメントとチュートリアルのリストを見てきました:
- http://mongoid.org/docs/installation/configuration.html
- http://www.mongodb.org/display/DOCS/Security+and+Authentication#SecurityandAuthentication-AbouttheKeyFile
- 本番環境の MongoDB と Mongoid - 私が探しているもののように見えますが、試してみるつもりです。
- http://craiccomputing.blogspot.com/2011/02/authentication-in-mongo-and-mongoid.html
ここにいる人からのアドバイスに感謝します。