如何解决Rails 3.0.7和Mongodb集成
| 我想使用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添加到config / initializers中:
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
我已经为用户创建了控制器:
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)
我安装的宝石:
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\'] %>
但我得到了错误:No such file or directory - /home/adm/NetBeansprojects/MongoDBApp/config/database.yml
所以我将mongo.yml文件的内容复制到了database.yml中,但出现错误:
ActiveRecord::AdapterNotSpecified
database configuration does not specify adapter
解决方法
MongoMapper完全替代了ActiveRecord-它不仅仅是一个适配器。
运行
rails g mongo_mapper:config
,这将为MongoMapper创建一个mongo.yml配置文件,您将不需要mongodb.rb初始化程序。另外,您还必须从database.yml中删除“ 11”,否则ActiveRecord将继续寻找不存在的mongodb适配器。
, 在将mongodb集成到此问题中的另一个数据库之上之前,我回答了一个不同的问题:
如何在同一个Ruby Rails项目中配置MongoMapper和ActiveRecord
您可以遵循该步骤,而忽略适用于ActiveRecord的部分。
, 我最近写了一篇文章在mongodb.Rails 3.0和mongoDB上构建Rails 3.0项目
希望这是有用的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。