2

単純化されたケース:

アクティブなレコードなしで、新しい 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 にデプロイしていません。私のローカルホストでテストしています。

どんな助けでも大歓迎です。

4

0 に答える 0