Heroku+Rails3+MongoLab(+MongoMapper)で起動できるとこまで

| コメント(0) | トラックバック(0)

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://:@ds000000.mongolab.com:11111/heroku_app2222222

このような接続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/

大丈夫そうです(`・ω・´)



トラックバック(0)

トラックバックURL: http://www.iwazer.com/mt/mt-tb.cgi/685

コメントする

このブログ記事について

このページは、iwazerが2011年12月13日 16:12に書いたブログ記事です。

ひとつ前のブログ記事は「Jenkins Mac OS X InstallerでJenkinsを入れる」です。

次のブログ記事は「Twitterの強化されたEmbed機能」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。