7 Sep 2010

Windows上で Ruby1.9.2 + Rails3 + SQLite or MySQL 環境を構築

五十嵐(igaiga)です。

RubyKaigiはもりだくさんの内容で、弊社メンバーも年に一度の祭典を満喫しました。

RubyKaigi最終日のAsakusa.rbで Yehuda Katz さんが

「今日か明日にRails3が出るよ」と宣言した通り、

日本時間の2010.8.30にRails3がリリースされました。

弊社でもベータ時代からRails3を使っていたプロダクトを正式版へアップデートしたり、

Rails2系のプロダクトをRails3へバージョンアップする準備を始めています。

今日は、WindowsでRailsアプリを立ち上げる機会があったので、

Windows上の Ruby1.9.2 + Rails3 + SQLite or MySQL 環境を構築する手順を紹介します。

 

Ruby1.9.2 インストール

http://rubyforge.org/projects/rubyinstaller/

から rubyinstaller-1.9.2-p0.exe をダウンロードしてインストールします。

ruby と gem がインストールされます。

 

SQLite3 インストール

http://www.sqlite.org/ 

か らsqlitedll-3_7_2.zip をダウンロードします。

sqlite3.dll を C:\Ruby192\bin へコピーします。

 

Rails3 インストール

$ gem install rails

 

RailsApp作成

$ rails new appname

$ cd appname

$ bundle install

$ rails s

localhost:3000 へアクセスできれば成功です。

Scaffoldで何か作ってみましょう。

$ rails g scaffold user name:string email:string

$ rake db:create:all

$ rake db:migarate

と、ここまで簡単に到達できました。

 

次はMySQLを使うアプリを作ってみました。

 

MySQLを使う(mysql2 アダプタ)

MySQLをダウンロードしてインストールします。

http://dev.mysql.com/downloads/mysql/#downloads

Windows (x86, 32-bit), MSI Installer Essentials - Recommended

 

$ rails new appname -d mysql

$ cd appname

$ bundle install

gem 'mysql2' (Rails3標準のmysqlアダプタ)でエラーがでます。

 

Error installing mysql2: ERROR: Failed to build gem native extension.

 

調べたところ、以下でmysql2のwindows対応が進められているようです。

今日(2010.9.7)現在、まだバグが残っているもののインストールはできる模様です。

http://github.com/brianmario/mysql2/issues#issue/8

 

 

MySQLを使う(ruby-mysqlアダプタ)

 

回避策としてpure ruby の ruby-mysql アダプタを使う方法を試してみました。

アプリを再作成します。

$ rails new appname -d mysql

Gemfileの以下の箇所を修正します。

#gem 'mysql2'

gem 'ruby-mysql'

 

$ bundle install

 

config/database.yml の以下の行を変更します。(development, test, productionの3つ)

adapter: mysql

host: 127.0.0.1

 

(host: localhost にしていると、 uninitialized constant Mysql::Protocol::UNIXSocket というエラーが出ます。)

 

$ rails g scaffold task name:string memo:string

$ rake db:create:all

$ rake db:migrate

 

これで動きました!

mysql2が動作するようになるまで ruby-mysql を使ってみようと思います。

 

動作させるにあたり、以下のページを参考にさせていただきました。

ありがとうございました。

 

http://d.hatena.ne.jp/toyoshi/20100902/1283389510