自由帳

既に知っていることも含めて再アウトプット用に書きます✍️

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}