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