環境:
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