読者です 読者をやめる 読者になる 読者になる

開発環境でのみ、リクエスト毎になんか処理をフックしたい in Ruby

RackMiddleware を使うのが筋が良い気がする。

middleware 用意する

# lib/rack/nyan.rb
module Rack
  class Nyan
    def initialize(app)
      @app = app
    end

    def run(env)
      run_hook
      @app.call(env)
    end

    private
    
    def run_hook
      # なんかする
    end
  end
end

config.ru で開発環境のときだけ middleware を有効にする

# in your config.ru
# snip
if ENV['RACK_ENV'] == 'development'
  require 'rack/nyan'
  use Rack::Nyan
end
# snip

Rails だったら config/environment/development.rb でmiddleware読み込むなどの対応が良さそう。

より筋の良い方法があれば教えてください