使用MongoDB创建多个Rails应用程序时遇到问题

时间:2010-07-08 17:47:16

标签: mongodb ruby-on-rails-3 mongomapper

我正确安装了MongoDB并让它在我的OSX上运行。我使用MongDB和Rails3创建的第一个应用程序名为'todo' 关于railscasts的说明,我创建了一个文件(config / initilializers / mongo.rb)并添加了这一行:

MongoMapper.database = "todo-
#{Rails.env}"

据推测,这创建了我的/ data / db /文件中出现的文件,名为“todo- 开发“。当我在Rails中使用generate命令创建 模型,数据被正确存储在这个文件中。一切都很好,直到今天 点。

现在的问题是,我似乎无法在/ data / db文件中创建新文件 我用Rails创建新的应用程序。 (我认为)数据文件应该是 从初始化文件创建(例如:

MongoMapper.database = "newproject-
#{Rails.env}"

我添加到每个新应用。但它 不是。

这是我的宝石(与我的第一个应用程序配合使用!:

require 'rubygems'
gem 'mongo', '1.0'
source 'http://gemcutter.org'

gem 'rails', '3.0.0.beta4'
gem "mongo_mapper"
gem 'bson_ext', '1.0' 

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

最后在谷歌集团的帮助下,克里斯蒂安·曼德鲁斯帮助解决了这个问题。谢谢克里斯蒂安。我需要取消注释application.rb文件中的config.generator并将orm从active_record更改为mongo_mapper。 (顺便说一句,我在尝试运行生成器之前遇到的错误是“”没有为所需选项提供值' - ''。“)

更多信息:http://www.viget.com/extend/rails-3-generators-hooks/

为了它的价值,我将包括我需要采取的整个过程,以使MongoDB和Rails 3正常协同工作。


在OSX上安装MongoDB

$ sudo port install mongodb

创建数据目录:

$ sudo mkdir -p /data/db

设置数据目录的权限:

$sudo chown `id -u` /data/db

在终端启动Mongo:

$ mongod run

访问本地主机以验证MongoDB是否正在运行:

http://localhost:28017/

使用Rails 3创建新项目:

$ rails new projectname --skip-activerecord

将其添加到gemfile:

require 'rubygems'
gem 'mongo', '1.0'
source 'http://gemcutter.org'
gem 'rails', '3.0.0.beta4'
gem "mongo_mapper"
gem 'bson_ext', '1.0'

取消注释(并修改)application.rb文件中的这些行:

config.generators do |g|
    g.orm :mongo_mapper
end

创建config / initializer / mongo.rb文件:

MongoMapper.connection = Mongo::Connection.new('localhost', 27017)
MongoMapper.database = "projectname-#{Rails.env}"

创建lib / tasks / mongo.rake文件:

namespace :db do
  namespace :test do
    task :prepare do # Stub out for MongoDB
    end
  end
end

安装宝石:

$bundle install

创建第一个模型:

$rails generate scaffold Product name:string --skip-migration

创建models / product.rb文件:

class Product
 include MongoMapper::Document
  key :name, string
end