ruby-on-rails-3 - Rails 3.0.7 和 Mongodb 集成

标签 ruby-on-rails-3 mongodb mongomapper

我想使用 mongodb 在 Rails 中创建我的第一个 Web 应用程序,但在正确集成方面遇到了一些麻烦。首先,这是我的database.yml 文件:

development:
  adapter: mongodb
  database: mongo_development
  host: localhost

test:
  adapter: mongodb
  database: mongo_test
  host: localhost

production:
  adapter: mongodb
  database: mongo_production
  host: localhost

在几个教程之一中,我看到了一个等效的 activerecord 模型 - MongoMapper。例如我的用户模型:

class User
  include MongoMapper::Document

  key :name, String
  key :age,  Integer

  many :books
end

我还将 mongodb.rb 添加到配置/初始化程序中:

db_config = YAML::load(File.read(RAILS_ROOT + "/config/database.yml"))

if db_config[Rails.env] &&
  db_config[Rails.env]['adapter'] == 'mongodb'
  mongo = db_config[Rails.env]
  MongoMapper.connection = Mongo::Connection.new(mongo['hostname'])
  MongoMapper.database = mongo['database']
end

我已经为用户创建了 Controller :

class UsersController < ApplicationController

  def index
    user = User.new(:name => 'Brandon')
    user.books.build(:name => 'Programming', :started => 10.years.ago)
    user.save!
    puts User.where(:name => 'Brandon').first    
  end
end

但我仍然收到错误:

Please install the mongodb adapter: `gem install activerecord-mongodb-adapter` (no such file to load -- active_record/connection_adapters/mongodb_adapter)

我安装的 gem :

 abstract (1.0.0)
 actionmailer (3.0.7)
 actionpack (3.0.7)
 activemodel (3.0.7)
 activerecord (3.0.7)  
 activeresource (3.0.7)
 activesupport (3.0.8, 3.0.7)
 ....
 mongo (1.3.1)
 mongo_mapper (0.9.1)
 rails (3.0.7)
 railties (3.0.7)
 rake (0.9.2)
 rubygems-update (1.8.5)

有人可以帮忙吗?


更新

我删除了 mongodb.rb 初始化程序、database.yml 并使用了 rails g mongo_mapper:config。它创建了文件 mongo.yml:

defaults: &defaults
   host: 127.0.0.1
   port: 27017

development:
   <<: *defaults
   database: mongo_db_app_development

test:
   <<: *defaults
   database: mongo_db_app_tests

# set these environment variables on your prod server
production:
   <<: *defaults
   database: mongo_db_app
   username: <%= ENV['MONGO_USERNAME'] %>
   password: <%= ENV['MONGO_PASSWORD'] %>

但我收到错误:没有这样的文件或目录 -/home/adm/NetBeansProjects/MongoDBApp/config/database.yml

因此,我将 mongo.yml 文件的内容复制到 database.yml 中,但出现错误:

ActiveRecord::AdapterNotSpecified 数据库配置未指定适配器

最佳答案

MongoMapper 是 ActiveRecord 的完全替代品——它不仅仅是一个适配器。

运行 rails g mongo_mapper:config ,这将为 MongoMapper 创建一个 mongo.yml 配置文件,并且您不需要 mongodb.rb 初始值设定项。另外,您必须从database.yml中删除adapter: mongodb,否则ActiveRecord将继续寻找不存在的mongodb适配器。

关于ruby-on-rails-3 - Rails 3.0.7 和 Mongodb 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325397/

相关文章:

ruby-on-rails - 关于从 MongoMapper 迁移到 Mongoid 的建议?

ruby-on-rails - rails 3.1 : Asset pipeline with named routes

ruby-on-rails - Rails 3 和奇怪的 Accept header

ruby - 这段代码中 row[/\w+/] 的用途是什么?

java - 在 Morphia 中使用 transient

mongodb - MongoMapper 接近 maxDistance - Mongo::OperationFailure:地理值必须是数字:

ajax - Ember.js 与设计轨道应用程序 : 406 Not Acceptable on sign up

使用 Mongoose 时 MongoDB 弃用警告

json - NodeJS 与 mongoDB JSONFormat 问题

ruby-on-rails - mongoid 中的 N+1 问题