IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

enjoy Railsway

CTC 教育サービス

 [IT研修]注目キーワード   OpenStack  OpenFlow/SDN  情報セキュリティ  Python  システムトラブルシュート 

第1回 rails console (泉隼人) 2015年2月

 初めまして。トランスネットの泉です。このコラムは毎月1本のペースで、学習し始めた方がつまずきやすいポイントや、Ruby on Railsでの開発がより楽しくなるような技術を、徒然に書いていきたいと思います。

 さて、第一回目は「rails console」です。rails consoleは、Railsアプリケーションを対話的に操作するための機能です。rails consoleを使わなくともRailsアプリケーションを作ることはできるため、この機能を知らない方も結構いらっしゃるようです。普段はActiveRecordにお任せなのに、DBレコードの確認をするときだけは四苦八苦してSQLを組み立てたりしていませんか?あるいは、Modelのメソッドを試しに実行してみたいけど、簡単な方法がわからない......
それでは余りに勿体ない!ということで、rails consoleについてご紹介します。

 rails console自体はRails本体に組み込まれている機能ですので、皆さんのRailsアプリケーションですぐに試すことができます。また、お気軽に実験していただけるようサンプルアプリケーションをGitHubに用意しましたので、是非ご利用ください。https://github.com/dev-tni/traveler/

まずは起動

 それでは早速起動してみましょう。普段通りのterminalでRailsアプリケーションのルート階層に移動した後、次のコマンドを実行するだけです。

$ bundle exec rails console

(サンプルアプリケーションでは、tag"plain_console"をcheckoutした状態で実行してください)
serverを起動するときは"rails server"、consoleを起動するときは"rails console"。
bundlerを使われていることがほとんどだと思いますが、うまくいかない場合は皆さんの環境に合わせて読み替えてください。
consoleも省略形"c"が用意されていますので、次のコマンドでも起動できます。

$ bundle exec rails c

rails consoleを起動すると、お馴染みのirbプロンプトが表示されます。

fig01

普段Railsアプリケーションのソースコードに書いているようなことを、対話的に実行することができます。

fig02

参照だけではなく、保存することもできます。

fig03

Railsアプリケーションそのものの操作ですので、Modelの保存時にはきちんとValidationが実施されます。整合性の取れないおかしなデータをデータベースに入れてしまうことも防げます。

fig04

もっと使いやすく

ところで、Rubyの対話的インタフェースといえばpryが人気です。折角ですので、rails consoleでもpryを使いましょう。また、インスタンスの情報も読みづらいため、色付と整形をおこなう"awesome_print"もご紹介します。

Gemfileに次の2つのGemを追加し、bundle installしてください。

1

2

gem'pry-rails'

gem'awesome_print'

view rawGemfilehosted with ♥ byGitHub

awesome_printを有効にするために、以下のコードをRailsアプリケーションのルートディレクトリに".pryrc"ファイルとして保存してください。

1

2

3

if defined?(AwesomePrint)

 AwesomePrint.pry!

end

view raw.pryrchosted with ♥ byGitHub

(サンプルアプリケーションでは、ここまで適用した状態で"pry"tagを設定してあります)

pryを利用する場合も、先程と全く同じコマンドで起動します。

$ bundle exec rails c

fig05

プロンプトがirbからpryになりました。先程と同様の処理を実施してみましょう。

fig06

並べてみます。

fig07

実行している処理は全く同じですが、出力結果の違いは一目瞭然です。

pryとawesome_printで見違えるrails console、いかがでしょうか。もちろん、見た目だけではなくpryの機能を使うことができますので色々とお試しください。

便利なオプション

 rails consoleにはいくつかのオプションがあります。

環境を指定して起動

 起動コマンドに続けて、環境を指定します。

$ bundle exec rails console production

fig08

consoleの起動時には、このようにどの環境で起動しているか表示されます。
まずはここを確認し、一息ついてから作業をするように習慣づけをおすすめします :-)

sandbox

 consoleの終了時に、consoleでの操作が全てロールバックされます。
ただし、トランザクションが効かないような処理(DDLの発行など)を実行するとロールバックされませんのでご注意ください。

起動コマンドに続けて、オプション --sandbox を指定します。

$ bundle exec rails c --sandbox

fig09

sandbox状態で起動していること、終了時に全ての変更がロールバックされる旨が表示されます。
この状態でモデルの delete_all メソッドを実行して、consoleを終了してみます。

fig10

sandboxの挙動を確認できましたでしょうか。

なお、環境の指定もできます。
うっかり間違えて破壊的メソッドを実行しても元に戻るので、本番環境でも安心して参照作業を実施できます。

$ bundle exec rails c production --sandbox

fig11

まとめ

Railsアプリケーションを対話的に操作するための機能、rails consoleをご紹介しました。
Gemを追加する際、一般的にはgroup: :developmentを指定してdevelopment環境のみに適用してしまうことも多いようです。しかし、本番環境でこそ操作性と視認性が大事ではないでしょうか。
sandboxもありますし、是非本番環境でも活用していただければと思います。

それでは今日はこの辺で。次回をお楽しみに♪

 


 

 [IT研修]注目キーワード   OpenStack  OpenFlow/SDN  情報セキュリティ  Python  システムトラブルシュート