読者です 読者をやめる 読者になる 読者になる

TinyMysql

TinyMysqlというRubyのライブラリ的何かを作ってみました。

tiny_mysql.rb · GitHub

gist.github.com

これはなに?

MySQLCLIを使ったRubyMySQLライブラリです。 普通のMySQLのライブラリと違ってCLIさえインストールされていればどこでも使えます。

なんでつくったの?

とにかく手軽にRubyMySQLを使いたい、ということがたまにあるんですよ。ないですか?

MySQL/Rubymysql2はCライブラリの依存関係がたまにめんどくさくなるのでCLIで適当にできるライブラリがあるとうれしかったので作りました。

qeuryメソッドの出力はHashなので「文字列をパースして…」とか考えなくてすむのがよいと思います。

使い方

ちょうかんたんな使い方は以下の通り。

#!/usr/bin/env ruby

# ▼▼▼ おまじない ▼▼▼
require 'open-uri'
require 'digest/sha1'

tm = open('https://goo.gl/6z8rE1', &:read)
Digest::SHA1.hexdigest(tm) == '4028a6764164a69086bb28e7a940380bfbf7cc71' or raise 'checksum error'
eval tm
# ▲▲▲ おまじない▲▲▲

require 'pp'
mysql = TinyMysql.new(username: 'scott', password: 'tiger', database: 'mysql')
pp mysql.query('show tables')
# => [{"Tables_in_mysql"=>"columns_priv"},
#     {"Tables_in_mysql"=>"db"},
#     {"Tables_in_mysql"=>"event"},
#     {"Tables_in_mysql"=>"func"},
#     {"Tables_in_mysql"=>"general_log"},
#     {"Tables_in_mysql"=>"help_category"},
#     {"Tables_in_mysql"=>"help_keyword"},
#     {"Tables_in_mysql"=>"help_relation"},
#     {"Tables_in_mysql"=>"help_topic"},
#     {"Tables_in_mysql"=>"innodb_index_stats"},
#     {"Tables_in_mysql"=>"innodb_table_stats"},
#     {"Tables_in_mysql"=>"ndb_binlog_index"},
#     {"Tables_in_mysql"=>"plugin"},
#     {"Tables_in_mysql"=>"proc"},
#     {"Tables_in_mysql"=>"procs_priv"},
#     {"Tables_in_mysql"=>"proxies_priv"},
#     {"Tables_in_mysql"=>"servers"},
#     {"Tables_in_mysql"=>"slave_master_info"},
#     {"Tables_in_mysql"=>"slave_relay_log_info"},
#     {"Tables_in_mysql"=>"slave_worker_info"},
#     {"Tables_in_mysql"=>"slow_log"},
#     {"Tables_in_mysql"=>"tables_priv"},
#     {"Tables_in_mysql"=>"time_zone"},
#     {"Tables_in_mysql"=>"time_zone_leap_second"},
#     {"Tables_in_mysql"=>"time_zone_name"},
#     {"Tables_in_mysql"=>"time_zone_transition"},
#     {"Tables_in_mysql"=>"time_zone_transition_type"},
#     {"Tables_in_mysql"=>"user"}]

ファイルをダウンロードしてローカルで読み込んでもよいと思います。

$ curl https://goo.gl/6z8rE1 -L -o tiny_mysql.rb
$ shasum tiny_mysql.rb
4028a6764164a69086bb28e7a940380bfbf7cc71  tiny_mysql.rb
$ RUBYLIB=. ruby -r tiny_mysql -e 'p TinyMysql.new(username: "scott", password: "tiger").query("select 1")'
[{"1"=>"1"}]