tanamonの稀に良く書く日記

KEEP CALM AND DRINK BEER

RubyからMySQLを利用するための準備

Ruby/DBIのインストール - tanamonの日記
この記事のやり直し版です。
今回はRubyを入れるとことから書いています。

Rubyをインストールする

Ruby-mswin32版を使用すると、zlib.dllやreadline.dllを別途用意しないといけなかったりと面倒なので、今回は
One-Click Installer版を使用しました。インストーラではオプションのRubyGemsを選択しておきます。

MySQLをインストールする

ここからMySQLをダウンロードしてインストールする。
http://dev.mysql.com/downloads/mysql/5.1.html

インストール後に、

C:\Program Files\MySQL\MySQL Server 5.1\bin

にあるlibmySQL.dllをruby.exeと同じ場所(C:\Ruby\bin)にコピーするか、上記ディレクトリにパスを通しておきます。
(今回はruby.exeと同じ場所にコピーしました)

これをしないと、以下のようなエラーが出てしまいます。

ruby.exe - コンポーネントが見つかりません
LIBMYSQL.dllが見つからなかったため、このアプリケーションを開始できませんでした。
アプリケーションをインストールし直すとこの問題は解決される場合があります。
DBI::InterfaceError: Unable to load driver 'mysql' (underlying error: wrong constant name mysql)
        from C:/Ruby/lib/ruby/gems/1.8/gems/dbi-0.4.1/lib/dbi.rb:294:in `load_driver'
        from C:/Ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize'
        from C:/Ruby/lib/ruby/gems/1.8/gems/dbi-0.4.1/lib/dbi.rb:236:in `load_driver'
        from C:/Ruby/lib/ruby/gems/1.8/gems/dbi-0.4.1/lib/dbi.rb:154:in `_get_full_driver'
        from C:/Ruby/lib/ruby/gems/1.8/gems/dbi-0.4.1/lib/dbi.rb:139:in `connect'
        from (irb):4

RubyGemsで必要なライブラリを入れる

C:\Ruby>set http_proxy=http://proxy.example.com:8080

プロキシが必要な環境では最初にプロキシサーバを環境変数に設定しておきます。

C:\Ruby>gem install mysql --no-rdoc
Successfully installed mysql-2.7.3-x86-mswin32
1 gem installed
Installing ri documentation for mysql-2.7.3-x86-mswin32...

RDocが無いようなので、--no-rdocを指定してエラーを回避します。

C:\Ruby>gem install dbi
Successfully installed deprecated-2.0.1
Successfully installed dbi-0.4.1
2 gems installed
Installing ri documentation for deprecated-2.0.1...
Installing ri documentation for dbi-0.4.1...
Installing RDoc documentation for deprecated-2.0.1...
Installing RDoc documentation for dbi-0.4.1...

これはそのまま。

C:\Ruby>gem install dbd-mysql
Successfully installed dbd-mysql-0.4.2
1 gem installed
Installing ri documentation for dbd-mysql-0.4.2...
Installing RDoc documentation for dbd-mysql-0.4.2...

こちらもそのまま。

C:\Ruby>gem list

*** LOCAL GEMS ***

dbd-mysql (0.4.2)
dbi (0.4.1)
deprecated (2.0.1)
mysql (2.7.3)

最後に、ちゃんとインストールされたかを確認します。

動作確認をする

C:\Documents and Settings\K.Tanaka\デスクトップ>irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> gem 'dbi'
=> true
irb(main):003:0> require 'dbi'
=> true
irb(main):004:0> dbh = DBI.connect('dbi:mysql:test:localhost', 'root', 'root')
=> #<DBI::DatabaseHandle:0x2c522e8 @driver_name="Mysql", @convert_types=true, @trace_mode=nil, @handle=#<DBI::DBD::Mysql
::Database:0x2c51f8c @mutex=#<Mutex:0x2c51578>, @attr={"AutoCommit"=>true}, @have_transactions=true, @handle=#<Mysql:0x2
c52068>>, @trace_output=nil>
irb(main):005:0> dbh.select_one('select version()')
=> ["5.0.45"]
irb(main):006:0> exit