HerokuでRails3アプリケーションを作成するさいストレージにMongoDBを、ORMにMongoMapperを使用する場合の手順です。 #他にも方法があるかも知れませんが...
まだ、やってなかったらherokuモジュールを入れたり、Railsを入れたりアップデートしたりしときます。
$ gem install heroku
$ gem update rails
アプリケーションを生成します。MongoMapperを使うのでデフォルトのactive-recordを切っときます。
$ rails new test-app --skip-active-record
$ cd test-app
$ git init
$ git add .
$ git commit -m 'Initial commit.'
必要なモジュールを追加しましょう。
$ vi Gemfile
gem "mongo_mapper", '>=0.8.2'
gem "bson_ext"
gem "rails3-generators"
gem "rspec-rails"
$ bundle install
GeneratorにMongoMapperの設定を追加してもらいます。
$ script/rails g mongo_mapper:install test-app-db
ローカルではデフォルトのlocalhost:27017を使うとするとconfig/database.mongo.ymlは何も変える必要はありません。
接続できているか確認しましょう。
$ rails console
Loading development environment (Rails 3.1.3)
ruby-1.9.2-p290 :001 > class Hoge
ruby-1.9.2-p290 :002?> include MongoMapper::Document
ruby-1.9.2-p290 :003?> key :name, String
ruby-1.9.2-p290 :004?> end
=> #
ruby-1.9.2-p290 :005 > Hoge.create!(:name => 'Nanashi San')
=> #
ruby-1.9.2-p290 :006 >
mongoに直接つないでも確認してみます。
$ mongo
MongoDB shell version: 1.6.5
connecting to: test
> show dbs
test-app-db_development
> use test-app-db_development
switched to db test-app-db_development
> db.getCollectionNames()
[ "hoges", "system.indexes" ]
> db.hoges.find()
{ "_id" : ObjectId("4ee6f1f15ce68e3de8000001"), "name" : "Nanashi San" }
>
ローカルの接続設定ができたので、一度コミットしておきます。
$ git add .
$ git st
$ git commit -m 'local mongo setting'
次は、いよいよHeroku上でもMongoLabに繋がるようにしたいと思います。
$ heroku create
Creating warm-sunrise-3496...
done, stack is bamboo-mri-1.9.2
http://warm-sunrise-3496.heroku.com/ | git@heroku.com:warm-sunrise-3496.git
Git remote heroku added
warm-sunrise-3496 という名前でHeroku上にアプリケーションができました。
MongoLab Add-onをアプリケーションに追加します。
$ heroku addons:add mongolab:starter
-----> Adding mongolab:starter to warm-sunrise-3496... done, (free)
Welcome to MongoLab.
(MongoLabを使用するにはFree版を使う場合でもクレジットカードなどで課金情報を有効にしておく必要があります)
Herokuで作成したアプリケーションの設定ページを表示します。
https://api.heroku.com/myapps/warm-sunrise-3496
右上にAdd-onsというメニューがあるので、MongoLabを選択します。
Usersタブを表示して、Addボタンをクリックしアプリケーションが接続するためのユーザを登録します。
また、タブの上部に
mongodb://
このような接続URI情報が表示されているのを確認し、config/database.mongo.yml のproductionモードにHerokuの設定を追加します。 usernameとpasswordは先ほどUserタブで追加したものです。
$ vi config/database.mongo.yml
:
production:
<<: *defaults
host: ds000000.mongolab.com
port:11111
username: hogehoge
password: password
database: heroku_app2222222
:
あと、もう一点。このままではポートの変更が効かないようで、初期化ファイルを少しだけ変更します。
$ vi config/initializers/mongo_mapper.rb
- MongoMapper.connection = Mongo::Connection.new(mongo['host'])
↓
+ MongoMapper.connection = Mongo::Connection.new(mongo['host'], mongo['port'])
いよいよHerokuに送ります。
$ git add .
$ git commit
$ git push heroku master
動いたかな?
http://warm-sunrise-3496.heroku.com/
大丈夫そうです(`・ω・´)
コメントする