Windows 7 上に Rails 2.3.4(Ruby 1.9.1 MySQL 5.4.3-beta) 開発環境を構築した時のメモ
環境構築のスピードを重視しています。
環境
Windows 7 Professional 64bit
Rubyインストール
ActiveScriptRuby and Other packages の Ruby-1.9.1-p243 をダウンロードしインストール。
インストールパスは C:\bin\ruby にした。
gemをアップデート
gem update --system
MySQLインストール
MySQL :: Download MySQL Community Server の Windows(x64ではない) の Without installer をダウンロードし展開。
展開フォルダ名を mysql に変更して C:\bin 配下に配置し、C:\bin\mysql にパスを通す。
my-medium.ini をコピーしてファイル名を my.ini にして以下の部分を編集。
初期の設定ファイルはぐちゃぐちゃなので最低限の修正を加えて後でじっくり編集する方向で。
[client] #socket = /tmp/mysql.sock : [mysqld] #socket = /tmp/mysql.sock character_set_server = utf8 collation_server = utf8_general_ci : [mysql] default_character_set = cp932
サービス登録してスタート
mysqld --install mysql --defaults-file="--defaults-file=C:\bin\mysql\my.ini" net start mysql
発生した問題への対応
MySQL/RubyがM17Nに対応していない問題の対応
以下のファイルを編集することで対応
C:\bin\ruby\lib\ruby\gems\1.9.1\gems\activerecord-2.3.4\lib\active_record\attribute_methods.rb
- 148行目を以下の文字列に置換
access_code = cast_code ? "(v=@attributes['#{attr_name}']) && #{cast_code}" : "(@attributes['#{attr_name}'].class == String) ? @attributes['#{attr_name}'].force_encoding('UTF-8') : @attributes['#{attr_name}']"
- 273行目を以下の文字列に置換
(column.type_cast(value).class == String) ? column.type_cast(value).force_encoding("UTF-8") : column.type_cast(value)
Ruby 1.9からString[n]の解釈が変わった問題の対応
以下のファイルを編集することで対応
C:\bin\ruby\lib\ruby\gems\1.9.1\gems\activesupport-2.3.4\lib\active_support\message_verifier.rb
- 43行目から51行目を以下の内容に置換
if a.respond_to?(:bytesize) # 1.9 if a.bytesize == b.bytesize result = 0 j = b.each_byte a.each_byte { |i| result |= i ^ j.next } result == 0 else false end else # 1.8 if a.size == b.size result = 0 for i in 0..(a.length - 1) result |= a[i] ^ b[i] end result == 0 else false end end
db:create時にRubyがSEGVしてしまう場合
以下のファイルをダウンロードして C:\bin\ruby\bin に置く
http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll
終焉
あとは適当なRailsアプリを作って動作確認して完了。
複雑なアプリで試したわけじゃないので、まだ問題があるかもしれない。