Railsコンソールの思いがけない便利技(翻訳)
.irbrc
を調整してインタラクティブなコンソールを使いやすくすると、生産性も目に見えて向上し、フラストレーションも減らせるのでやりがいのある作業です。最近のRuby Weeklyでは、このあたりのトピックを扱う記事をいくつも見かけます。
これまでも.irbrc
にいろいろ手を加えて便利にしてきましたが、変更内容をリモートサーバーにも反映するのがいつも面倒でした(Herokuでも使えるようにするなど)。この問題で悩んでいるのは私だけではありません。もちろん方法はいくつもありますが、以下のようにアプリのコードに近い方法が最もしっくりきました。
# script/likeasir.rb
# productionのコンソールを開くときにあると便利なもの
# load 'script/likeasir.rb'
def event_store
Rails.configuration.event_store
end
def command_bus
Rails.configuration.command_bus
end
# ...
コンソールを開いたら、irbセッションで以下を実行してヘルパーを読み込みます。
load 'script/likeasir.rb'
ところが、弊社のKubaが上の読み込み手順を完全に不要にするうまい方法を教えてくれました。
# config/application.rb
module MyApp
class Application < Rails::Application
# ...
console do
module DummyConsole
def event_store
Rails.configuration.event_store
end
def command_bus
Rails.configuration.command_bus
end
end
Rails::ConsoleMethods.include(DummyConsole)
end
end
end
これで、bin/rails c
を読み込めばcommand_bus
メソッドとevent_store
メソッドをいつでもirbセッションで使えるようになります。
以上、私がずっと思いつかなかった小技を紹介いたしました。
お知らせ
ARKADEMY.DEVに参加してArkencyのトップクラス教育プログラムコースにアクセスしましょう!「Railsアーキテクトマスタークラス」「アンチ"IF"コース」「忙しいプログラマーのためのブログ執筆コース」「Async Remoteコース」「TDD動画クラス」「ドメイン駆動Rails動画コース」以外にもさまざまなコースが新設中です。
概要
原著者の許諾を得て翻訳・公開いたします。