LoginSignup
2
1

More than 3 years have passed since last update.

Rails6 のちょい足しな新機能を試す90(process_middleware.action_dispatch編)

Posted at

はじめに

Rails 6 に追加された新機能を試す第90段。 今回は、 process_middleware.action_dispatch 編です。
Rails 6 では、ActiveSupport::Notifications.subscribe で、process_middleware.action_dispatch で実行される middleware の情報を取得できるようになりました。

Ruby 2.6.4, Rails 6.0.0 で確認しました。

$ rails --version
Rails 6.0.0

今回は、User の CRUD を作り、各コントローラのアクションを実行したときの情報を取得してログに出力してみます。

プロジェクトを作る

rails new rails_sandbox
cd rails_sandbox

User の CRUD を作る

name をもつ User の CRUD を作ります

bin/rails g scaffold User name

Subscribe する

config/initializers/notification_subscriber.rb を作成します。
ActiveSupport::Notifications.subscribe を呼び出すときに、引数で、process_middleware.action_dispatch を指定して、ミドルウェアの情報をログに出力するようにします。

config/initializers/notification_subscriber.rb
ActiveSupport::Notifications.subscribe 'process_middleware.action_dispatch' do |event|
  Rails.logger.info(event.payload[:middleware])
end

User の登録などをしてログを確認する

実際に rails server を実行してブラウザから http://localhost:3000/users にアクセスします。

以下のようにコンソールに出力されているはずです。

...
Rack::TempfileReaper
Rack::ETag
Rack::ConditionalGet
Rack::Head
ActionDispatch::ContentSecurityPolicy::Middleware
ActionDispatch::Flash
ActionDispatch::Session::CookieStore
ActionDispatch::Cookies
ActiveRecord::Migration::CheckPending
ActionDispatch::Callbacks
ActionDispatch::Reloader
ActionDispatch::ActionableExceptions
ActionDispatch::DebugExceptions
WebConsole::Middleware
ActionDispatch::ShowExceptions
Rails::Rack::Logger
Sprockets::Rails::QuietAssets
ActionDispatch::RemoteIp
ActionDispatch::RequestId
Rack::MethodOverride
Rack::Runtime
ActiveSupport::Cache::Strategy::LocalCache::Middleware
ActionDispatch::Executor
ActionDispatch::Static
Rack::Sendfile
ActionDispatch::HostAuthorization
Webpacker::DevServerProxy

試したソース

試したソースは以下にあります。
https://github.com/suketa/rails_sandbox/tree/try090_instrument_middleware

参考情報

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1