herokuにRails3.2.1を入れてみる その2
前回herokuに突っ込んだRailsに、今度はいろいろなgemをインストールしてみたいと思います。
が、その前に。
前回githubのリポジトリ名およびRailsのプロジェクトディレクトリ名に "SudokuSolver" としましたけど
Sudoku,数独って株式会社ニコリに商標登録されている言葉なんだそうで。
というわけでこれからは「ナンプレ」とでも表現していきます。
つまりプロジェクトは NumberPlaceSolver に名前変更ですね。
それはさておき、なぜ突然そんなことを言い出したか。
理由は「著作権」についてちょっと調べてみたからなんですが、
結論から言うと、『問題』に著作権はあるけど『完成形』には無いらしい。
せっかくのRails、何らかの形でデータベースは扱いたいなと思っていたので、
今回は解決したナンプレのみデータベースに保存してみようと思います。*1
誰得とか言わないでっ。やめたげてっ。
さて改めて続きを。
今回導入するgemは
ですよ。
RSpecとZenTestはBDD開発用、Thinはherokuで指定された*2サーバ、Foremanはサーバテスト用、
残りのHamlは趣味なので、要らないって人は無視してください。
本当はSporkとGuardを試したかったんですが、
RailsInstallerのDevKitでは依存するgemのコンパイルにやたら時間がかかったので
「まぁ機能的には変わらないやね」とZenTestのautotestを使用します。
Unix系orMac系の人は試してみるといいかもです。
とっとと開発に取り掛かるためにさっくりインストールしてしまいましょう。
RSpecとHaml以外は導入するの初めてなんだけどいいのかな。いいよね。
Thinの依存関係でeventmachineなるものをbundlerがインストールしようとするんですが、
これがデフォルトでバージョンが 0.12.10 と3年前のパッケージ。
その上RailsInstallerに入っているDevKitではネイティブライブラリがコンパイルできないので、
明示的に新しいものを入れてやる必要があります。
> gem install eventmachine --pre
現時点では1.0.0.beta4.1です。
それからGemfileの編集。
gem 'eventmachine', '~> 1.0.0.beta' gem 'thin' gem 'haml-rails' group :development, :test do gem 'rspec-rails' gem 'ZenTest' gem 'autotest-rails' # gem 'spork' # gem 'guard-spork' end
eventmachineをthinの直前に入れているのは、
そうしないとインストールできない&古い安定版である 0.12.10 を入れようとするからです。
こう書いておけば依存関係は解決します。
これで必要なgemパッケージは導入できました。
(ついでにRSpecの設定もしました。)
お好みで他のgemもどうぞ。
ここで rails server とすると、WEBrickではなくthinが立ち上がるはずです。
ただし、Windows環境なのでショッキングなほど遅いです。
多分VMwareのほうがまだ早い。いや絶対早い。
さて、herokuのドキュメントには「foremanとProcfileでThinが起動することを確認しろ」とあります。
今回 spork は導入していないので、サーバプログラムのバッティングの心配はなさそうですが、
Thinの依存パッケージであるeventmachineのバージョンが大きく違うので暗雲がたちこめています……。
> gem install foreman
それからRAILS_ROOTにProcfileというファイルを作って、こんな感じに書くみたいです。
web: bundle exec rails server thin -p $PORT
とりあえず指示通りに
> foreman start
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.40.0/lib/foreman/
process.rb:94: warning: failed to set environment variable. Ruby 1.9.3 will rais
e SystemCallError in this case.
19:33:21 web.1 | started with pid 4468
……。1分以上待っても音沙汰がないんですけど。
ドキュメントによると rails server してくれるらしいけど、音沙汰がないんですけど。
多分Windowsだからだそうに違いない、そうに違いないよ……。
勇気を出してcommitして、herokuにpushします。
> git add .
> git commit -m "added some gems and configured rspec, Procfile"
> git push heroku
> heroku open
おっと、予想に反して僕の環境では動いてますが、皆さんはどうでしょう。
なんとかここまでは無事のようで、とりあえず導入編は終わり……としたいところですが、
まだデータベースの設定が残っています。
次は database.yml の設定と、余裕があればモデルを作ってspecファイルの編集もしてしまいましょう。