デフォルトでは、 New Relic Rubyエージェントは ActionController::Metal
個のコントローラーを計装しません。 これは、Metal コントローラーが有効な Rack アプリを提供するために必要な最小限のインターフェースのみを提供するという理念に沿ったものです。 一般的に、必要に応じてメタル コントローラーを装飾するのはユーザー次第です。 このドキュメントでは、Rails 3 以降のアプリで、これらのコントローラー アクションを、 ApplicationController
から継承したアクションと並べてAPM Transactionsページと概要に表示する方法を説明します。
Rails 4.0以上
Rails 4.0以降、NewRelicのコントローラーインストルメンテーションはActiveSupport::Notifications
を使用します。 ActionController::Instrumentation
モジュールを含めると、コントローラーイベントがMetalコントローラーから確実に発生します。これにより、NewRelicはこれらのアクションをインストルメント化できます。
class PlatinumController < ActionController::Metal include ActionController::Rendering
def show render :text => "Here is some text" end
# Ensure ActiveSupport::Notifications events are fired include ActionController::Instrumentation
# Uncomment the following line to include New Relic helper methods, such as newrelic_ignore or add_method_tracer # include NewRelic::Agent::Instrumentation::ControllerInstrumentationend
Rails 3.0~3.2
方法1
以下のメソッドは、ベースコントローラと同様に、すべてのMetalコントローラのアクションを自動的にインストルメントします。
MetalControllerクラスの下部にNewRelic::Agent::Instrumentation::ControllerInstrumentation
とNewRelic::Agent::Instrumentation::Rails3::ActionController
を含めます。
class SteelController < ActionController::Metal include ActionController::Rendering
def show render :text => "Here is some text" end
include NewRelic::Agent::Instrumentation::ControllerInstrumentation include NewRelic::Agent::Instrumentation::Rails3::ActionControllerend
方法2
次の例では、Metalコントローラの特定のアクション・メソッドのみのトレースをオプトインすることができます。
メソッドインストルメンテーションごとにNewRelic::Agent::Instrumentation::ControllerInstrumentation
を含め、{ add_transaction_tracer
}を呼び出します。
class SteelController < ActionController::Metal include ActionController::Rendering include NewRelic::Agent::Instrumentation::ControllerInstrumentation
def show render :text => "Here is some text" end add_transaction_tracer :showend
方法3
最後の例は、メソッドのトレースを追加するより一般的な方法で、Metal Controllerクラスだけでなく、どのクラスでも動作します。
メソッドインストルメンテーションごとにNewRelic::Agent::MethodTracer
を含め、{ add_method_tracer
}を呼び出します。
class SteelController < ActionController::Metal include ActionController::Rendering include NewRelic::Agent::MethodTracer
def show render :text => "Here is some text" end add_method_tracer :showend
Rails 2.3
Rails 2のRails::Rack::Metal
クラスを使用する場合は、次のようにMetalsへの呼び出しを計測できます。
require 'newrelic_rpm'
class MyMetal < Rails::Rack::Metal def self.call(env) # ... your metal code ... end
class << self include NewRelic::Agent::Instrumentation::ControllerInstrumentation add_transaction_tracer :call endend