MongoDB不会使用Mongoid连接到MongoHQ
我刚刚开始了一个全新的rails项目,我正在尝试完成的第一项任务是创建一个对象并将其保存在我的数据库中。 我经历了生成对象的自动方式,在这种情况下是一个URL对象,如下所示:
rails generate scaffold Url domain:string
我还测试了两个单独的mongoid.yml配置设置。 第一个如下:
development: sessions: default: # Defines the name of the default database that Mongoid can connect to. # (required). uri: mongodb://[username]:[password]@flame.mongohq.com:27046/[database] options: consistency: :strong
此配置的结果是,当发生查询时,我收到以下错误:
The operation: # failed with error 13075: "db name can't be empty"
我还测试了以下配置:
development: uri: mongodb://[username]:[password]@flame.mongohq.com:27046/[database]
当代码到达urls_controller的create方法时,它在@ url.save失败,并出现以下错误:
mongoid (3.0.0.rc) lib/mongoid/sessions/factory.rb:100:in `parse' mongoid (3.0.0.rc) lib/mongoid/sessions/factory.rb:61:in `create_session' mongoid (3.0.0.rc) lib/mongoid/sessions/factory.rb:43:in `default' mongoid (3.0.0.rc) lib/mongoid/sessions.rb:109:in `default' mongoid (3.0.0.rc) lib/mongoid/sessions.rb:354:in `__session__' mongoid (3.0.0.rc) lib/mongoid/sessions.rb:199:in `mongo_session' mongoid (3.0.0.rc) lib/mongoid/sessions.rb:157:in `collection' mongoid (3.0.0.rc) lib/mongoid/sessions.rb:25:in `collection' mongoid (3.0.0.rc) lib/mongoid/persistence/operations.rb:26:in `collection' mongoid (3.0.0.rc) lib/mongoid/persistence/operations/insert.rb:27:in `block in persist' mongoid (3.0.0.rc) lib/mongoid/persistence/insertion.rb:25:in `block (2 levels) in prepare' activesupport (3.2.3) lib/active_support/callbacks.rb:403:in `_run__2492706777632263523__create__3276423133299307975__callbacks' activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_create_callbacks' activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks' mongoid (3.0.0.rc) lib/mongoid/callbacks.rb:95:in `run_callbacks' mongoid (3.0.0.rc) lib/mongoid/persistence/insertion.rb:24:in `block in prepare' activesupport (3.2.3) lib/active_support/callbacks.rb:403:in `_run__2492706777632263523__save__3276423133299307975__callbacks' activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_save_callbacks' activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks' mongoid (3.0.0.rc) lib/mongoid/callbacks.rb:95:in `run_callbacks' mongoid (3.0.0.rc) lib/mongoid/persistence/insertion.rb:23:in `prepare' mongoid (3.0.0.rc) lib/mongoid/persistence/operations/insert.rb:26:in `persist' mongoid (3.0.0.rc) lib/mongoid/persistence.rb:49:in `insert' mongoid (3.0.0.rc) lib/mongoid/persistence.rb:188:in `upsert' app/controllers/urls_controller.rb:46:in `block in create'
我的假设是我的mongoid.yml文件不正确,但我不知道如何让它工作。 有什么想法吗?
这就是我的制作mongoid.yml的样子
<% if ENV['MONGOLAB_URI'] %> <% uri = URI.parse(ENV['MONGOLAB_URI']) %> production: <<: *defaults sessions: default: <<: *default_session database: <%= uri.path.sub('/','') %> username: <%= uri.user %> password: <%= uri.password %> hosts: - <%= uri.host %>:<%= uri.port %> <% end %>
这对我有用
目前无法通过URI在mongoid中建立数据库连接。 mongoid.yml的格式如下:
environment: host: <%= ENV['MONGOID_HOST'] %> port: <%= ENV['MONGOID_PORT'] %> username: <%= ENV['MONGOID_USERNAME'] %> password: <%= ENV['MONGOID_PASSWORD'] %> database: <%= ENV['MONGOID_DATABASE'] %>
您需要做的是将MongoHQ字符串解析为其组成部分,以便在mongoid.yml中提供
如果你愿意,有人已经为你做了一个为你做这件事的要点
对于MongoHQ上的副本集/非副本集:
production: sessions: default: <% if ENV['MONGOHQ_HOST_LIST'] %> database: <%= ENV['MONGOHQ_DATABASE'] %> username: <%= ENV['MONGOHQ_USER'] %> password: <%= ENV['MONGOHQ_PASSWD'] %> hosts: <% YAML.parse(ENV['MONGOHQ_HOST_LIST']).value.each do |v| %> - <%= "#{v[0].value}:#{v[1].value}" %> <% end %> <% elsif ENV['MONGOHQ_URL'] %> uri: <%= ENV['MONGOHQ_URL'] %> <% end %> options: consistency: :eventual safe: true
- Mongoid / Mongodb和查询嵌入式文档
- 在分析由Mongoid事件生成的ActiveRecord对象时,Rspec测试随机失败
- Rails 3:如何同时使用活动记录和mongoid
- 为什么rails试图连接到mysql?
- Rails 4 / Devise / MongoDB:使用自定义属性和强参数的“未允许的参数”
- Rails – MongoDB(Mongoid)存储数据库和日志的位置?
- Ember-data和MongoDB,如何处理_id
- US-ASCII中的无效字节序列(Ruby 1.9 + rails 2.3.8 + mongodb + mongo_mapper)
- 如何在Mongoid中更改文档的_type?