【Rails入門】consoleの使い方まとめ

こんにちは! フリーエンジニアの長瀬です。

みなさんはconsoleを使っていますか?

consoleを使いこなせるようになれば、たくさんの便利な機能があるので、開発効率を上げてくれること間違いなしです。

この記事では、consoleの使い方について

・consoleとは
・consoleで簡単な計算をしてみよう
・環境を指定して起動する方法
・名前付きルートのURLを確認する
・logの出力をカスタマイズする方法

という基本的な内容から、

・データベースを操作する方法
・pryのインストール方法
・pryの便利なコマンドまとめ

といった応用的な内容についても解説していきます。

目次

consoleとは

consoleを使えばrubyのプログラムを実行できたり、データベースを直接的に操作できたりとさまざまな便利なことができます。

また標準のconsoleのツールであるirbからpryに変更すれば、高速にルーティングや、モデルの内容を確認できるようになったりと機能が拡張できるのでとても使い勝手が良くなります。(pryの導入については後半に説明します)

このようにconsoleには様々なメリットがあるので、使いこなすことはRailsで開発していく上で必須のスキルです。

なので、この記事を読んでしっかりと使い方をマスターしておきましょう。

consoleで簡単な計算をしてみよう

では、consoleを使って簡単な計算をしてみましょう。

コマンドプロンプトに以下のコードを入力してください。

rails console 

このようにrails consoleと入力するとコンソールを起動できます。
また、終了するときは quitまたはexitでコンソールを閉じることができます。

そして、rails consoleはrails cと省略できるので、特別な理由がない限りはrails cと入力するようにしてください。

それでは、コンソールを開いた上で以下のコードを入力してみてください。

for i in 1...11 do
  print "#{i} "
end

10までの数字を羅列するコードです。

[実行結果]

1 2 3 4 5 6 7 8 9 10 => 1...11

このように基本的な計算ができました。
この例に限らず、他の計算ももちろんできるので色々と試してみてください。

logの出力をカスタマイズする方法

Railsでは、ログのフォーマットを変更することができます。
詳しくはこちらの記事を参考にしてみてください。

名前付きルートのURLを確認する

さて、consoleでは名前付きのルートのURLを確認することができます。

まずは名前付きのルートを作成するためにscaffoldを使って、テンプレートのアプリを作成しましょう。

scaffoldについてわからない人こちらの記事を確認してください。

こちらのコードをコマンドプロンプトに入力してください。

rails g scaffold Tomato name:string
rails db:migrate

[実行結果]

    create    db/migrate/20170815062341_create_tomatoes.rb
      create    app/models/tomato.rb
      invoke    test_unit
      create      test/models/tomato_test.rb
      create      test/fixtures/tomatoes.yml
      invoke  resource_route
       route    resources :tomatoes
      invoke  scaffold_controller
      create    app/controllers/tomatoes_controller.rb
      invoke    erb
      create      app/views/tomatoes
      create      app/views/tomatoes/index.html.erb
      create      app/views/tomatoes/edit.html.erb
      create      app/views/tomatoes/show.html.erb
      create      app/views/tomatoes/new.html.erb
      create      app/views/tomatoes/_form.html.erb
      invoke    test_unit
      create      test/controllers/tomatoes_controller_test.rb
      invoke    helper
      create      app/helpers/tomatoes_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/tomatoes/index.json.jbuilder
      create      app/views/tomatoes/show.json.jbuilder
      create      app/views/tomatoes/_tomato.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/tomatoes.coffee
      invoke    scss
      create      app/assets/stylesheets/tomatoes.scss
      invoke  scss
   identical    app/assets/stylesheets/scaffolds.scss

== 20170815062341 CreateTomatoes: migrating ===================================
-- create_table(:tomatoes)
   -> 0.0065s
== 20170815062341 CreateTomatoes: migrated (0.0066s) ==========================

今回の説明に必要なファイルを作成することができました。

tomatoes_pathという名前つきルートが作成されているので、rails cでコンソールを開いた後に以下のコードを入力してください。

app.tomatoes_path

[実行結果]

=> "/tomatoes"

このようにルーティングを確認できました。

また、以下のようにURLを求めることもできます。

#名前付きルートからURLを求める
app.tomatoes_url
#コントローラーとアクションからURLを求める
app.url_for(controller: 'tomatoes', action: 'new') 

[実行結果]

=> "http://www.example.com/tomatoes"
=> "http://www.example.com/tomatoes/new"

環境を指定して起動する方法

consoleでは実行環境を選択することができます。
デフォルトでは開発環境(development)になっています。

確認してみましょう。

コマンドプロンプトに以下のコードを入力してください。

Rails.env

[実行結果]

=> "development"

本番環境とテスト環境でconsoleを開く方法は以下の通りです。

rails c test #テスト環境
rails c production #本番環境

また、sandboxを使えば、consoleを使用してもデータベースを最後に元の状態に戻すことができます。

なので、データベースを変更したくないときにはconsoleにsamdboxを指定してください。

sandboxを指定するには以下のようにします。

rails c --sandbox

ためしに、さきほど作成したTomatoにデータを追加してみましょう。
rails c –sandboxを入力した後に以下のコードを入力してください。

Tomato.create(name:"吉田松陰")

そして、quitかexitでconsoleを終了してください。

すると、

  (0.7ms)  rollback transaction

のように出力され、データベースの変更がなかったことになったことがわかります。
(rollbackは巻き戻す、transactionはデータの変更の意味です。)

rollbackについて、理解を深めたい方はこちらの記事も参考にしてみてください。

データベースを操作する方法

レコードを追加する

コンソールからデータを追加するには、createコマンドを使うと便利です。
先ほどscaffoldで作成したTomatoモデルに値を追加してみましょう。

rails cでコンソールを起動した後以下のコードを入力してください。

Tomato.create(name:"吉田松陰")
Tomato.create(name:"織田信長")
Tomato.create(name:"千利休")

これで、3件の新しいデータを追加できました。

レコードを削除する

先ほど追加したデータを削除してみましょう。

rails cでコンソールを起動した後以下のコードを入力してください。

Tomato.find(3).destroy

find(idの数字)では、idによってレコードを取得できます。
それにdestroyをチェーンさせることで、任意のデータを削除できます。

この場合は3番目の”千利休”が削除されました。

ちなみに関連テーブルを含めずにすべて削除する場合は

Tomato.delete_all

で、関連テーブルごとすべて削除する場合は

Tomato.destroy_all

を使用してください。

テーブルの内容を確認する

consoleでは、データベースのテーブルの中身を確認できます。

Tomato.all #すべてのレコードを取得する
Tomato.find(1) #idが1のレコードを取得
Tomato.where('id< ?',3) #idが3より小さいレコードを取得

このように、whereメソッドなども使用できます。

whereと,findはこちらの記事で、丁重に説明してありますので、参考にしてください。


しっかり使い分け!Railsでのfind, find_byの違い、使い方
更新日:2024年3月1日

pryを導入する

pryとは

pryとは、標準のirbよりも機能的にすぐれた対話型ツールです。

なので、よほどの理由がない限り標準のirbでconsoleを使用するよりもpryを使用するようにしてください

pryを使えば、デバックがしやすくなったり(pry-byebug)、細かい動きを確認できるコマンドがたくさん使えるようになって、開発に超便利です。

pryのインストール方法

railsでpryを使用するにはpry-railsというgemをインストールする必要があります。
なので、Gemfileに以下のように追加してください。

group :development,:test do
  #(中略)
  gem 'pry-rails'
  gem 'pry-doc'
  gem 'pry-stack_explorer'
  gem 'pry-byebug'
end

追加できたら、bundle installを入力してgemを有効にしてください。

完了したら、rails cでコンソールを起動してpryと表示されるのを確認してください。

(今回はpry-stack_explorerやpry-byebugの使い方を紹介しませんが,それぞれpryを使う際には重宝するgemなのでついでに記載しました。)

pryの基本的なコマンドまとめ

show-model

show-modelは特定のモデルのカラム、データタイプを返します。

show-model Tomato

[実行結果]

Tomato
  id: integer
  nama: string
  created_at: datetime
  updated_at: datetime

show-models

すべてのモデルとそのカラム、データタイプを返します。

show-routes

rails routesよりも高速にルーティングを確認できる

show-middleware

アプリケーションで使用しているミドルウェアの一覧を表示

reload!

Rails環境全体をリロードする
いちいちconsoleをquitやexitする必要がなくなるので便利です。

recognize-path

ルーティングを確認できる(コントロールとアクションを出力する)

recognize-path '/tomatoes'

[実行結果]

{:controller=>"tomatoes", :action=>"index"}

find-method

find-methodではキーワードによって、メソッドを検索してくれます。

find-method form_

このように入力すると”form_”を含むメソッドが検索結果として返されます。
関連したメソッドを調べるときなどにも重宝します。

help

helpで、pryのメソッドを確認できる
かなり詳細に説明があるので、役に立ちます。

ドキュメントを参照する

pry-docをインストールしていれば、ri (定義されたもの) でドキュメントを参照できます。

ls cd

cdでオブジェクトに移動できて、lsでオブジェクトのメソットや変数を確認できる

特別なローカル情報

_で一つ前の結果を利用する

[1] pry(main)> 6*6
=> 36
[2] pry(main)> _+_
=> 72

この場合_には36が代入されています。

_ex_
一つ前に発生した例外を返します。

_in__out_
pryの実行番号によって入力値と出力を再利用します。

[9] pry(main)> 33 + 23
=> 56
[10] pry(main)> 31 + 22
=> 53
[11] pry(main)> _in_[9]
=> "33 + 23\n"
[12] pry(main)> _out_[9]-_out_[10]
=> 3

tabでのコード補完

たとえば、cだけ入力してtabキーを押すと以下のように候補一覧が表示されます。

pry(main)> c

caller            case              catch             change-inspector  class             clipit            cohen-poem        console
caller_locations  cat               cd                change-prompt     class_eval        clone             concern           controller

pryでHirbを自動化する

こちらの記事ではpryを使って、Hirbという表形式でconsoleにデータを追加できるgemを有効にするためのコードを自動化する方法を紹介しています。

まだの方はHirbの設定をしておくことをオススメします。

まとめ

いかがでしたでしょうか?

この記事では、consoleの使い方を解説しました。

consoleを使えば、rubyのコードが直接実行できたり、データベースを操作できたりと便利なことを理解いただけたと思います。

また、pryを導入すれば標準のconsoleを拡張してさらに便利な機能を加えられるので、Railsを使用する際には必ずインストールしておいてください。

pryのメソッドには今回紹介した以外にも、自分でメソッドを作成する機能など紹介しきれなかったものもありますので、気になる方はpryについて調べてみてください。

もしconsoleの使い方について忘れてしまったらこの記事を確認してくださいね!

この記事を書いた人

Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。

経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど

言語が好きで、英語や中国、ドイツ語を勉強しました。
将来的には海外で生活したいです。

現在はRuby on Rails5やCocos2dxの勉強を主にしています。

ライターとしては
できるだけ初心者にわかりやすい文章になるように心がけています。

趣味は語学、読書です。

目次