LoginSignup
8
8

More than 5 years have passed since last update.

[MongoDB] HerokuでのRails4のプロジェクトで、MongoDB(MongoLab)を使う準備

Last updated at Posted at 2014-10-10

事前に

mongodbのインストールについてはこちら

今回は

Rails4のプロジェクトにMongoDBを使いたい時の設定についてです。
mongoidを使います。

最終的にはHerokuに上げたいので、HerokuではMongoLabを使います。他にもMongoHQとかがあります。
HerokuでMongoを使うには、クレジットカードなどのアカウント認証が必要になりますが、概ね無料で使えます。
MongoLabでは約500MBが無料で使えます。

Gemfile

Gemfile
# Mongo on Heroku
gem 'mongoid', '4.0.0.beta1'
gem "bson"
gem "moped", github: "mongoid/moped"

config/mongoid.yml

$ rails generate mongoid:config

上記コマンドにより、config/mongoid.ymlが生成されます。
development, testの設定があるので、それをいじったりstagingやproductionの設定を追加します。

config/mongoid.yml


production:
  sessions:
    default:
      uri: <%= ENV['MONGOLAB_URI'] %>
・
・

Railsプロジェクト

このままだと、ActiveRecordのmodelを作るとき、active_record:とprefixをつける必要がある。
Railsのデフォルト設定がmongodbを使う様になってしまっている。


$ rails generate acrive_record:model

(mongoの方は、rails g model hoge:integer でいける)

これだとActiveRecordを基本的に使いたい場合には不自由なので、
config/application.rbに


config.generators do |g|
  g.orm :active_record
end

このときmongoを使うモデルを作るときは


$ rails generate mongoid:model MODEL_NAME column_name:column_type

でOK。プレフィックスが要る。

Modelの設定

MongoDBを使いたいモデルに書き書き

app/models/hoge.rb

class hoge
  include Mongoid::Document
  field :fuga_id, type: Integer
  field :time, type: Time
end

ダメな例

app/models/hoge.rb

class hoge
  include Mongoid::Document
  field :fuga_id, type: Integer,
  field :time, type: Time
end
end 

こんな感じでカンマがあるとエラります。syntax error

rails g mongoid:model user_id:integer とかやってくとカンマが入っちゃうので、属性の指定はコマンドではせず、あとからモデルに書き込むといいかも。(あいまいです)

参考

8
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8