Rails 3 / rspec / mongo_mapper -> MongoHQ な設定のためもメモ

今後も使いそうなので、メモしておこう

必要な gem は先に gem install でいれておく

> gem update

アプリケーション内の各ファイルを以下のように変更

Gemfile

require 'rubygems'
require 'mongo'
source 'http://gemcutter.org'

gem 'rails', '3.0.3'
gem 'rails3-generators'
gem 'mongo_mapper'

group :test do
  gem 'rspec'
  gem 'rspec-rails', ">= 2.0.0.beta"
end


config/initializers/mongo.rb

MongoMapper.connection = Mongo::Connection.new('flame.mongohq.com', port, { :logger => Rails.logger })
MongoMapper.database = "dbname-#{Rails.env}"
MongoMapper.database.authenticate('user', 'pass')

if defined?(PhusionPassenger)
   PhusionPassenger.on_event(:starting_worker_process) do |forked|
     MongoMapper.connection.connect if forked
   end
end


config/application.rb

require File.expand_path('../boot', __FILE__)

require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railtie"

Bundler.require(:default, Rails.env) if defined?(Bundler)

module MyApplication
  class Application < Rails::Application
    config.encoding = "utf-8"

    config.filter_parameters += [:password]

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

lib/tasks/mongo.rake

namespace :db do
  namespace :test do
    task :prepare do
      # Stub out for MongoDB
    end
  end
end
> bundle install
> bundle update
> rails g spec:install

とかすると、設定完了

> rails g model user

なんかで一通りのことはできそう