Rails 3.0.7 и интеграция с Mongodb - PullRequest
2 голосов
/ 13 июня 2011

Я хочу создать свое первое веб-приложение в rails с mongodb, но у меня возникают проблемы с правильной интеграцией. Во-первых, вот мой файл 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 в конфигурацию / инициализаторы:

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)

Может кто-нибудь помочь?


UPDATE

Я удалил инициализатор 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

Ответы [ 3 ]

3 голосов
/ 13 июня 2011

MongoMapper - полная замена ActiveRecord - это не просто адаптер.

Запустите rails g mongo_mapper:config, и это создаст файл конфигурации mongo.yml для MongoMapper и вам не понадобится mongodb.rbинициализатор.Кроме того, вам придется удалить adapter: mongodb из вашего database.yml, иначе ActiveRecord продолжит поиск несуществующего адаптера mongodb.

1 голос
/ 22 июля 2011

Я уже ответил на другой вопрос об интеграции mongodb поверх другой базы данных в этом вопросе:

Как настроить MongoMapper и ActiveRecord в одном проекте Ruby Rails

Вы можете следовать этому и оставить часть, которая относится к ActiveRecord.

0 голосов
/ 14 сентября 2011

Я недавно написал статью для сборки проекта rails 3.0 на mongodb. Rails 3.0 и mongoDB

Надеюсь, это полезно ..

...