Railsのコンソールのちょっとしたtips
あるメソッドが定義されている場所を探す
以下のコードを実行することで、そのメソッドが定義されている行とファイルを正確に知ることができます。
$ User.instance_method(:name).source_location => ["app/models/user.rb", 56]
rake taskの実行
以下のコードを実行することで、コンソールからアプリで定義された任意のrakeタスクを実行できます。
$ Rails.application.load_tasks $ Rake::Task['db:seed'].invoke
# 削除を伴うタスクの実行 $ rails c -s $ Rails.application.load_tasks $ Rake::Task['oneshot:delete_hoge'].invoke
コンソールに表示される最新の値にアクセスする
コードを2回実行しなくても、最後にコンソールに表示された出力を_
を使って保存したり操作したりすることができます。
$ SomeClass.new.some_method.another_method => { name: 'Hoge' } $ _ => { name: 'Hoge' }
コンソールでオブジェクトを操作する際のコンテキストの切り替え
コンソールで特定のオブジェクトを操作している場合、オブジェクトのメソッドや属性を呼び出すために毎回コードを繰り返す必要はありません。
オブジェクトのメソッドや属性を呼び出すたびにコードを繰り返す必要はありません。
irb
を呼び出してコンテキストを切り替えることができます。
$ VeryLongNameOfObject.name => some name $ VeryLongNameOfObject.attribute_name => other value $ irb VeryLongNameOfObject $ name => some name $ attribute_name => other value
コンソールからのパスのテスト
コンソールでアプリケーションのパスをテストしたい場合は、次のようにします。 appオブジェクトを使用して、そのパス名を呼び出すことで可能です。
$ app.root_path => '/'
コンソールからのヘルパー・メソッドのテスト
アプリケーションのヘルパーをコンソールでテストしたい場合は、次のようにします。 ヘルパーオブジェクトを使用して、そのメソッドを呼び出します。
$ helper.some_method('Hoge') => Some output for argument 'Hoge'
コンソールレベルでのリクエストの実行
コンソールレベルでリクエストを実行して、アプリケーションの動作をテストしたり、レスポンスの属性やセッションの保存状況を確認することもできます。 アプリケーションの動作をテストしたり、レスポンスの属性やセッションの保存状態を確認することができます。
$ app.get "http://localhost:3000/articles" => 200 $ app.response => #<ActionDispatch::TestResponse...> $ app.session[:cookies_accepted] => true
ActiveRecordが接続しているDBの設定情報を確認
$ ActiveRecord::Base.connection_config => {:adapter=>"sqlserver", :encoding=>"utf8", :username=>"hoge", :password=>"fuga", :tds_version=>7.4, :host=>"127.0.0.1", :database=>"piyo_test", :timeout=>5000}