Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Railsコンソールの思いがけない便利技(翻訳)

概要

原著者の許諾を得て翻訳・公開いたします。

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動画コース」以外にもさまざまなコースが新設中です。

関連記事

Railsコントローラのアクションがrenderで終わるとは限らない(翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。