Проблема создания более одного приложения Rails с использованием MongoDB - PullRequest
1 голос
/ 08 июля 2010

Я правильно установил MongoDB и запустил его на моем OSX. Первое приложение, которое я создал с использованием MongDB и Rails3, было названо «todo». Инструкция по Railscasts, я создал файл (config / initilializers / mongo.rb) и добавил эту строку:

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

Предположительно, это создало файлы, которые появились в моем / data / db / file с названием "todo- разработка ". Когда я использовал команду generate в Rails, чтобы создать модели, данные были правильно сохранены в этом файле. Все хорошо, до этого точка.

Проблема в том, что я не могу создать НОВЫЕ файлы в файле / 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 Ответ

1 голос
/ 08 июля 2010

Наконец-то разобрался с помощью Кристиана Мандрупа в Google Group.Спасибо, Кристиан.Мне нужно было раскомментировать config.generator в моем файле application.rb и изменить orm с active_record на mongo_mapper.(Кстати, ошибка, которую я получал раньше при попытке запустить генератор, была "" Не указано значение для обязательных параметров '--orm'. ")

Подробнее здесь: http://www.viget.com/extend/rails-3-generators-hooks/

Что бы это ни стоило, я включаю весь процесс, который мне потребовался для правильной совместной работы MongoDB и Rails 3.


Установка MongoDB в OSX

$ 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'

uncomment out (и измените) эти строки в файле 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
...