CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
初めまして。トランスネットの泉です。このコラムは毎月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プロンプトが表示されます。
普段Railsアプリケーションのソースコードに書いているようなことを、対話的に実行することができます。
参照だけではなく、保存することもできます。
Railsアプリケーションそのものの操作ですので、Modelの保存時にはきちんとValidationが実施されます。整合性の取れないおかしなデータをデータベースに入れてしまうことも防げます。
ところで、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
プロンプトがirbからpryになりました。先程と同様の処理を実施してみましょう。
並べてみます。
実行している処理は全く同じですが、出力結果の違いは一目瞭然です。
pryとawesome_printで見違えるrails console、いかがでしょうか。もちろん、見た目だけではなくpryの機能を使うことができますので色々とお試しください。
rails consoleにはいくつかのオプションがあります。
起動コマンドに続けて、環境を指定します。
$ bundle exec rails console production
consoleの起動時には、このようにどの環境で起動しているか表示されます。
まずはここを確認し、一息ついてから作業をするように習慣づけをおすすめします :-)
consoleの終了時に、consoleでの操作が全てロールバックされます。
ただし、トランザクションが効かないような処理(DDLの発行など)を実行するとロールバックされませんのでご注意ください。
起動コマンドに続けて、オプション --sandbox を指定します。
$ bundle exec rails c --sandbox
sandbox状態で起動していること、終了時に全ての変更がロールバックされる旨が表示されます。
この状態でモデルの delete_all メソッドを実行して、consoleを終了してみます。
sandboxの挙動を確認できましたでしょうか。
なお、環境の指定もできます。
うっかり間違えて破壊的メソッドを実行しても元に戻るので、本番環境でも安心して参照作業を実施できます。
$ bundle exec rails c production --sandbox
Railsアプリケーションを対話的に操作するための機能、rails consoleをご紹介しました。
Gemを追加する際、一般的にはgroup: :developmentを指定してdevelopment環境のみに適用してしまうことも多いようです。しかし、本番環境でこそ操作性と視認性が大事ではないでしょうか。
sandboxもありますし、是非本番環境でも活用していただければと思います。
それでは今日はこの辺で。次回をお楽しみに♪
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes