1

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

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

据推测,这创建了出现在我的 /data/db/ 文件中名为“todo-development”的文件。当我在 Rails 中使用 generate 命令创建模型时,数据已正确存储在此文件中。一切顺利,到此为止。

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

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

我添加到每个新应用程序中。但事实并非如此。

这是我的 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' 

任何帮助,将不胜感激!

4

1 回答 1

1

终于在 Google Group 中的 Kristian Mandrup 的帮助下解决了这个问题。谢谢克里斯蒂安。我需要在我的 application.rb 文件中取消注释 config.generator 并将 orm 从 active_record 更改为 mongo_mapper。(顺便说一句,我在尝试运行生成器时遇到的错误是““没有为所需选项提供值'--orm'。”)

更多信息: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

创建模型/product.rb 文件:

class Product
 include MongoMapper::Document
  key :name, string
end
于 2010-07-08T19:24:02.367 回答