xyk blog

最近は iOS 開発の記事が多めです。

Ubuntu 12.04 LTS に MySQL を操作する Ruby ライブラリをインストールする

環境:
Ubuntu 12.04 LTS (32bit)
ruby 1.9.3p448
MySQL 5.5

Rubyここでインストール済み、
MySQLここでインストール済み。

RubyからMySQLを操作するライブラリはいくつか存在するが今回はmysql2というライブラリを利用する。

brianmario/mysql2 · GitHub
https://github.com/brianmario/mysql2

このライブラリはlibmysqlclient-devに依存するので先にインストールしておく必要がある。

libmysqlclient のインストール

$ sudo apt-get -y install libmysqlclient-dev

インストール先の確認

$ which mysql_config
/usr/bin/mysql_config

mysql2 のインストール

$ gem install mysql2 --no-rdoc --no-ri -- --with-mysql-config=/usr/bin/mysql_config

ライブラリ確認用スクリプト作成

最初から存在するmysql.userテーブルをselectして表示する簡単なスクリプト作成する。

$ vi ~/mysql_select.rb
require 'mysql2'
client = Mysql2::Client.new(:host => "localhost", :username => "root")
results = client.query("SELECT * FROM mysql.user")
results.each do |row|
    puts "Host=#{row['Host']}, User=#{row['User']}"
end
client.close

スクリプト実行

$ ruby ~/mysql_select.rb
Host=localhost, User=root
Host=precise32, User=root
Host=127.0.0.1, User=root
Host=::1, User=root
Host=localhost, User=
Host=precise32, User=
Host=localhost, User=debian-sys-maint

スクリプト削除

$ rm ~/mysql_select.rb

追記:bundler でインストールする場合

先にbundle configで設定を追加

$ bundle config build.mysql --with-mysql-config=/usr/bin/mysql_config

config の確認

$ bundle config
Settings are listed in order of priority. The top value will be used.

build.mysql
Set for the current user (/home/vagrant/.bundle/config): "--with-mysql-config=/usr/bin/mysql_config"

bundleインストール、スクリプト作成、実行

$ mkdir ~/ruby_mysql_test && cd ~/ruby_mysql_test
$ bundle init
$ echo "gem 'mysql2'" >> Gemfile
$ bundle install --path vendor/bundle
$ cat << EOS > mysql_select.rb
require 'mysql2'
client = Mysql2::Client.new(:host => "localhost", :username => "root")
results = client.query("SELECT * FROM mysql.user")
results.each do |row|
    puts "Host=#{row['Host']}, User=#{row['User']}"
end
client.close
EOS

$ bundle exec ruby mysql_select.rb