Ruby(Rack)向けPaaS環境「Heroku」でRedmineを動かす

Heroku | Cloud Application Platform
screenshot

Ruby(Rack)向けPaaS環境「Heroku」にRedmineをインストールしてみました。参考にさせてもらったサイトはこちら。感謝。

Herokuおもしろい!gemでコマンドを配布というのがかっこいいですね。

インストール方法

Herokuのgemをインストール
sudo gem install heroku
Redmineソースコードを落としてくる
svn export http://redmine.rubyforge.org/svn/branches/0.9-stable redmine
cd redmine
RedmineのソースにHeroku向けに修正

Herokuはtmp以下にしかファイルを作れない仕様のようなので一部修正する

vi app/models/attachment.rb
-  @@storage_path = "#{RAILS_ROOT}/files"
+  @@storage_path = "#{RAILS_ROOT}/tmp/files"

vi vendor/plugins/engines/lib/engines.rb
-  self.public_directory = File.join(RAILS_ROOT, 'public', 'plugin_assets')
+  self.public_directory = File.join(RAILS_ROOT, 'tmp', 'plugin_assets')

vi config/environment.rb
+  config.action_controller.session = { :key => "_myapp_session", :secret => "secret" }

mkdir tmp/files
mkdir tmp/plugin_assets
ローカルでDBを作ってmigrate、マスターデータをloadする

Herokuは対話式のRakeを実行できない?ようなのでローカルでDBを作ってマスターデータをloadしておく

ローカル向けにDB設定を行う
cp config/database.yml.sample config/database.yml
vi config/database.yml
DB作成、migrate、マスターデータload
rake db:create
rake db:migrate
rake redmine:load_default_data
Herokuに突っ込む

あとはHerokuにソースコードとデータを突っ込むだけ。

git init
git add ./
git commit ./ -m "first commit"
heroku create
git push heroku master
heroku rake db:migrate
heroku db:push
heroku restart
heroku open

Herokuはインフラ/ミドルウェアを隠蔽されてる楽さと難しさが両面あるなあと思います。普段は楽だけど、ハマるときつそう。(簡単そうに書いたけど1日はまった。。。)