MOGOK最速レビュー
MOGOK とは?
「MOGOKは、Ruby on Railsアプリケーションの開発支援環境と実行環境を提供するサービスです。」端的に言えば「heroku みたいなの」です、IIJ がやってます。IIJ 自身による紹介は例えば「リソース管理とメッセージングの仕組みについての解説」など。
MOGOK 用アプリ
Rails の場合、いくつか heroku 向けアプリから修正すべき所があります。
config/environments/production.rb
チュートリアルの「Railsアプリケーションの作成」によると、以下のように書き足す必要があります。
config.serve_static_assets = true config.logger = Logger.new(STDOUT) $stdout.sync = true
Gemfile
heroku からの書き換えという想定ですと、以下のような内容になります。
- gem 'sqlite3' という行があったらコメントアウト
- gem 'newrelic_rpm' など、heroku 用の gem もコメントアウト
- gem 'therubyracer-heroku' は gem 'therubyracer' にする
- gem 'pg' は Rails 2 ならば gem 'mysql' に、Rails 3 ならば gem 'mysql2' に変える必要があります。
本当にコメントアウトしてしまうと管理が煩雑になるので、わたしは以下のように hostname コマンドを実行してサーバーの名前を取得し、その内容によって分岐させました。
ローカルでは全て読み込むようにするのが正解な気がするんだけど、まぁそのうちそういう機能が bundler に入るでしょう。環境変数 BUNDLE_WITHOUT や Bundler.settings.without= を用いるとすっきり書くことができます。
if /\Amgk-/ =~ `hostname` # mogokのサーバ名は "mgk-" で始まる Bundler.settings.without = %w/development test heroku/ end group :development do gem 'sqlite3' gem "therubyracer" end group :mogok do gem "therubyracer" gem 'mysql2' end group :heroku do gem 'therubyracer-heroku' gem 'pg' gem 'newrelic_rpm' end
rake assets:precompile
Rails 3.1 にはまだ対応していないので、deploy 時に rake assets:precompile をサーバー側で自動的にやってくれたりはしません。また、手動でやっても後述のメモリサイズ制限で殺されます。よって、以下のように 2 コマンドに分けて手動実行する必要があります。
rake assets:precompile:all rake assets:precompile:nondigest
deploy の仕方
以上を踏まえると、deploy のためのコマンドは以下のようになります。
git push mogok&&mogok deploy&&mogok rake assets:precompile:all&&mogok rake assets:precompile:nondigest
β版初期バージョンの制限
いくつかの文書化された制限と、まだ文書化されていない制限があります。 「IIJ MOGOKサービスβ版 ご利用の手引き」に制限が書かれています。大雑把には
結論
動かそうと思っていた、RubyCI は HTTP で外に出れないと使えないので、出れるようになったら本気出す。