1

MongoDB を適切にインストールし、OSX で実行しました。MongDB と Rails3 を使用して作成した最初のアプリのタイトルは「todo」でした。railscasts の指示に従って、ファイル (config/initializers/mongo.rb) を作成し、次の行を追加しました。

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

おそらく、これにより、「todo-development」というタイトルの /data/db/ ファイルに表示されるファイルが作成されました。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 グループの 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

gem をインストールします。

$bundle install

最初のモデルを作成します。

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

models/product.rb ファイルを作成します。

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