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
> _

之后,我从mongodswitch--auth开始强制身份验证:

$ mongod --auth --dbpath /my/db/path

现在一切似乎都很好,我创建了一些随机脚手架,例如:

$ rails g scaffold User name email

并尝试在浏览器中运行项目:localhost:3000/users。繁荣!我被下面发布的错误消息击中。

这是mongoid中的错误吗?还是我错过了什么?


原始问题

在带有 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