単純化されたケース:
アクティブなレコードなしで、新しい Rails 3.2 プロジェクトを作成します。mongoid 3.0.0.rc を Gemfile に追加してからrails g mongoid:config
. 以下に投稿したものと同じように編集mongoid.yml
します (ホストが に設定されていることを除いてlocalhost:27068
)。
mongodb に管理者ユーザーを追加しました。
$ mongo localhost/admin
> db.addUser(myadmin,adminpass)
また、データベースに通常のユーザーを追加しました。
use mydb
> db.addUser(myuser, mypassword)
データベースに接続できることを確認します。
$ mongo localhost/mydb -u myuser -pmypassword
MongoDB shell version: 2.0.4
connecting to: localhost/mydb
> _
その後、認証を強制mongod
するスイッチから始めます。--auth
$ mongod --auth --dbpath /my/db/path
すべてが問題ないように見えるので、次のようなランダムな足場を作成します。
$ rails g scaffold User name email
ブラウザでプロジェクトを実行してみます: localhost:3000/users. ブーム!以下に投稿されたエラーメッセージが表示されます。
これはモンゴイドのバグですか?または、何か不足していますか?
元の質問
Mongoid 3 rc を使用した Rails 3.2 プロジェクトで、MongoHQ がホストするデータベースで何もできません。ログイン アクションの単純なクエリを実行すると、次のようなエラー メッセージが表示されます。
The operation: #<Moped::Protocol::Query
@length=83
@request_id=3
@response_to=0
@op_code=2004
@flags=[]
@full_collection_name="mydb.users"
@skip=0
@limit=-1
@selector={"name"=>"Abbas"}
@fields=nil>
failed with error 10057: "unauthorized db:mydb lock type:-1 client [some ip]"
これが私のmongoid.yml
見た目です:
development:
sessions:
default:
database: mydb
user: myuser
password: mypassword
hosts:
- flame.mongohq.com:27068
options:
consistency: :strong
options:
include_type_for_serialization: true
だから私はそれを間違った方法でやっています。db ユーザーは、MongoHQ パネルで「読み取り専用」としてマークされていません。そして、私は Heroku にデプロイしていません。私のローカルホストでテストしています。
どんな助けでも大歓迎です。