blog

[RubyOnRails] [pry] [MySQL]
rails console から mysql command を直接叩けるようにする

はじめに

この記事は foodison advent calendar 2015 の 5日目の記事です。

どうもこんにちは。
二度目の登場の vimtaku です。
今日は日頃ちょっとだけ不満に思っていたところを解消する tips を書きます。

TL;DR

  • curl https://gist.githubusercontent.com/vimtaku/80a4760f126331af3e52/raw/b10c507a455a59e4178a59c638d196e88ae72caf/.pryrc >> .pryrc
  • bundle exec rails console
  • m select * from users;

背景

Rails でお仕事をしており結構頻繁に bundle exec rails console してて, pry が便利です。
大体が arel で済みますが、たまに mysql の console で sql を直接叩きたくなったりすることがあります。

その場合、

  • GNU screen の tab を切り替えて
  • mysql -u root blabla 的なことをして
  • use hoge_development; 的なことをして
  • 目的の select * from users; を実行する

のようなステップを踏む必要があります。結構ダルいですね。
途中 typo とかすると苛立ちが倍増します。

概要

pry console から直接 mysql で sql を叩ける .pryrc snippet を書きました。

準備

vim .pryrc してgistの内容を 貼り付けるか
ワンライナーを使用して curl https://gist.githubusercontent.com/vimtaku/80a4760f126331af3e52/raw/b10c507a455a59e4178a59c638d196e88ae72caf/.pryrc >> .pryrc などする。

実行

bundle exec rails console してから m show create table users;

出力例

[1] pry(main)> m desc users;
+------------------+--------------+------+-----+---------+----------------+
| Field            | Type         | Null | Key | Default | Extra          |
+------------------+--------------+------+-----+---------+----------------+
| id               | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| name             | varchar(255) | NO   | UNI |         |                |
| crypted_password | varchar(255) | YES  |     | NULL    |                |
| salt             | varchar(255) | YES  |     | NULL    |                |
| created_at       | datetime     | NO   |     | NULL    |                |
| updated_at       | datetime     | NO   |     | NULL    |                |
+------------------+--------------+------+-----+---------+----------------+

[2] pry(main)> m select * from users;
+----+---------+--------------------------------------------------------------+----------------------+---------------------+---------------------+
| id | name    | crypted_password                                             | salt                 | created_at          | updated_at          |
+----+---------+--------------------------------------------------------------+----------------------+---------------------+---------------------+
|  1 | vimtaku | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | XXXXXXXXXXXXXXXXXXXX | 2015-11-11 12:12:47 | 2015-11-11 12:12:47 |
+----+---------+--------------------------------------------------------------+----------------------+---------------------+---------------------+

諸注意

  • pry で m = “hoge” とかそういうのができなくなる(ご愛嬌)
  • 手元の mac でしか動作確認してない
    • pry (0.10.3), pry-rails (0.3.4) を使用している状態で確認済み
  • plugin ってほどでもないので pryrc で
  • ちょろっと pry-0.10.3/lib/pry/commands/shell_command.rb 読んで書いただけなので大体そういうつもりで。

所感

気合の入った mithril.js の記事とか書こうと思ったけど、それはまたどこかでかければと思います。
よかったら使ってみてください。

おわりに

foodison のミッションは「世界の食をもっと楽しく」です。
このミッションに共感するようなエンジニアの方は、是非一度遊びに来てください!
採用関連に関してもっと知りたい方は こちらの wantedly を参照してください。