Windows 7 上に Ruby on Rails 3.1 + MySQL の環境を作ってみた際に少し手間取ったので、その時の事をまとめた物です。
Windows 上に Ruby をインストールする際は、 ActiveScriptRuby 等いくつかの選択肢がありますが、ここは、 RubyInstaller 版(Ruby 1.9.2 の物)を入れます。
それと、同じサイトで配布されている Development Kit (DevKit-*.exe) もインストールします。
それ(RubyInstaller + Development Kit)でないと、ネイティブバイナリにコンパイルするモジュールがコンパイルに失敗してインストールできないようでした。
インストール先は、基本的にデフォルト(C:\ 直下のフォルダ)でよいと思いますが、 DevKit のインストール先は、”DevKit”の名前が一般的過ぎると思ったので、頭に “ruby” をつけて “C:\rubydevkit” としました。
Ruby のバージョンは、 1.9.2 にしてください。
1.8系は、 Rails 3.1 以降は対応しないようなので。
RubyInstaller と Development Kit をインストールしたら、コマンドを打って準備します。
Ruby の実行ファイルディレクトリ (C:\Ruby192\bin) が PATH 環境変数に設定されているか確認して、設定されていなければ設定します。
それから、
> cd \rubydevkit
> ruby dk.rb init
> ruby dk.rb install
とします。
次に MySQL をインストールします。
XAMPP の MySQL では、クライアントライブラリがありませんので、 XAMPP をインストールしていたとしても MySQL をインストールします。
そして、 MySQL をインストールする際は、全てのモジュールをインストールするようにします(Typical じゃなくて Complete を選ぶか Custom で全てのチェックを入れます)。
それで、 mysql2 のコンパイルに必要なライブラリが入ると思います。
また、 MySQL の文字コードに注意します。
何も設定を変えずにインストーラー(初期設定プログラム)を進めると、デフォルトの文字コードが latin-1 になってしまいます。
MySQL の次のパスを PATH 環境変数に設定します。
・MySQL の実行ファイルディレクトリ: C:\Program Files\MySQL\MySQL Server 5.5\bin
・MySQL のライブラリディレクトリ: C:\Program Files\MySQL\MySQL Server 5.5\lib
(パスはバージョンによって異なります)
実行ファイルディレクトリを PATH に設定するのは、単に利便性の問題です。
MySQL のライブラリディレクトリは、 PATH に設定しないと DLL が読み込めずにプログラムの起動に失敗します。
Ruby の共通のライブラリとして Bundler をインストールします。
コマンドプロンプトで
> gem install bundler
とします。
ここでは、 Rails はインストールしません。
後で、プロジェクト用のディレクトリを作った後で bundle コマンドによってプロジェクトの外部ライブラリディレクトリにインストールします。
ここまでで、共通のセットアップが完了です。
次に rails プロジェクトの開始です。
最初は「rails new myproj」(myprojがプロジェクト名)のコマンドを使用しません。
> mkdir myproj
> cd myproj
でプロジェクトのディレクトリを作って、その中に移動します(エクスプローラーで作っても良いです)。
> copy con Gemfile
の後
source ‘http://rubygems.org’
gem ‘rails’, ‘3.1.0.rc5′
と入力して Ctrl + Z と Enter を打って、 Gemfile を作ります(エディタで作っても良いです)。
rails のバージョンは、今はまだ 3.1.0 がリリースされていないので “.rcN” がつきます。
ここで、
> bundle install –path vender/bundle
として、 rails をプロジェクト内の外部ライブラリディレクトリ(myproj\vender\bundle)にインストールします。
今回は MySQL を DB に使うので mysql2 をインストールします。
先に個別にインストールしないと、コンパイルに必要な MySQL のパスを指定できません。
> bundle exec gem install mysql2 — ‘–with-mysql-dir=”C:\Program Files\MySQL\MySQL Server 5.5″‘
–with-mysql-dir オプションを二重に括っているのは、 bundle exec 内で gem が起動される前に引用符が外されて、パス内のスペースで gem に渡されるコマンドライン引数が分解されてしまうのを防ぐためです。
それから、 rails new でプロジェクトの初期状態を作ります。
> bundle exec rails new . -d mysql
Gemfile を上書きしてよいか聞かれるので「Y」とEnterで良いと答えます。
また、まだバグがあるのか「run bundle install」と表示された後、 coffeescript モジュールのインストールで失敗します。
もう一度、
> bundle install
すると何事もなくインストールが終了します。
mysql のドライバを Ruby で作られた(だから、コンパイル不要でインストールが楽な) ruby-mysql に変更せずに、デフォルトの mysql2 のままにするのは、 ruby-mysql だと RSpec が対応していないようだったからです。
RSpec のセットアップ方法は、「Rails3 レシピブック」にあります。
Gemfile に「gem ‘rspec-rails’, ‘>= 2.6.0′, :group => [:development, :test]」を追加して
> bundle install
後、
> bundle exec rails g rspec:install
とする感じです。
MySQL にデータベースを作って、 config\database.yml を適切に設定すれば、
> rake spec
でとりあえず、エラーが出ないで「rake db:migrate」しろってメッセージが出て良い感じなはずだと思います。
(まだ、モデルも何も作ってないんだから)
【参考文献】
・bundle installするときはpathを指定しよう … http://firn.jp/2010/11/09/bundle-install
・Ruby on Rails 3.1 を Windows にインストールする手順をかなり丁寧に説明してみました … http://www.oiax.jp/rails/zakkan/rails_3_1_installation_on_windows.html
・Windows上で Ruby1.9.2 + Rails3 + SQLite or MySQL 環境を構築 … http://blog.everyleaf.com/27538644
・WindowsにRubyのmysql2をインストールする … http://kazutoyo.tk/archives/14
・Installing bcrypt-ruby gem on Windows … http://stackoverflow.com/questions/1666511/installing-bcrypt-ruby-gem-on-windows