今作ろうとしているサービスをどうせならRubyで作ってみようと思って、おもむろにRuby on Railsを入れてみたのだか、そもそもスタートラインに立つためにいくつも躓いたので、備忘録として残しておく。ちなみにRubyは全くの初心者です。
今回は以下の環境で試してみました。
OS:CentOS5
Apache:2.2
Ruby:1.8.7
Rails:3.2.6
これらは既にインストールされている前提で進めます。
mod_rails (Passenger)をインストールする
そもそも巷に出回っている情報を調べてみると、Rails2とRails3があって、昔のものはCGIで動いていたとかでそこら辺の情報を追ったことが余計混乱をしてしまった一因だった。
ApacheだとRailsを動作させるのはPassengerがあればいけた。
ここらへんのインストールとか設定は、詳しく書いているブログや、Passengerインストール時のコメントとかで、何とかいける。
作成したRailsのプロジェクトを動作するところまで持っていく
今までやってきたことと勝手が違うので、やりたいことを検索するのにもかなり手間取った。
で、その時に躓いたところを挙げておく。
1.The requested URL /public/rails/info/properties was not found on this serverのエラーが出た。
ここが一番躓いた。。おそらくリライトの設定の問題だからhtaccess置けばいけるだろうと思っていたのがそもそもの間違い。
この部分はRailsBaseURIを適切に設定することで解決する。
RackEnv development RailsBaseURI /path/to/railsProject
2.No such file or directory – config/environment.rbが出た。(Application rootがおかしい?)
httpd.confでVirtualhostを作成する際、自分はVirtualDocumentRootでドキュメントルートを指定していたが、RailsはDocumentRootの方を見に行っているらしい。
なのでVirtualDocumentRoot →DocumentRoot に変更
3.Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)が出た。
Rails3.1以降から導入されたCoffeeScriptの影響で、JavaScriptエンジンをインストールしなければならないらしい。Gemfileを確認してみると
gem 'coffee-rails', '~> 3.2.1'
の記述があった。
この記述を削除すればいけるのかなぁと思いつつ、いずれCoffeeScriptもやりたいという思いがあったので、素直にJavaScriptエンジンをインストールしてみる。
いろんなサイトを確認してみたが、execjsとtherubyracerがあれば大丈夫という感じだったので、それをインストール。
gem install execjs gem install therubyracer
インストール後、railsアプリケーション直下のGemfileに以下の記述を追加
gem 'execjs' gem 'therubyracer'
この後、database.ymlをちょっと弄って、やっとRailsの動作を確認することができました。