Developer モード

Developer モードは、Ruby エージェントのバージョン 4.1.0 で削除されており、これ以降のバージョンではサポートされません。

New Relic Ruby 用エージェントには Developer モードがあります。アプリケーションの Web トランザクションの詳細を調べるための組み込みの UI があります。このモードを使用すると、Rails 上のインスタンスから呼び出されるように、コントローラのアクションが行うライブラリやデータベースへの呼び出しを調べることができます。

無料の Developer モードでは、New Relic のトランザクショントレース機能で取得できるのと 同じ深さのトランザクションの可視性を提供します。ただし、このモードは、単一の Rails インスタンスで動作し、Production 版よりもはるかに高いオーバーヘッドがかかります。そのため、開発者のローカルの「サンドボックス」以上の使用は推奨していません。

セキュリティに関する考慮事項

Ruby エージェントの開発者モードは、RAILS_ENV == "development" のときに特別な設定なく使えます。この場合は、決して New Relic サイトとの接続は行われません。円グラフは、集計データの HTTP ポストを含む Google チャートを使って描画されます。

注: RAILS_ENV == "production"RAILS_ENV == "staging"のときに自動的にRuby エージェントの Production モードとなります。その場合は、New Relic サイトへデータを送信します。詳しくは、セキュリティをご覧ください。

インストール

開発者モードのインストールは、 New Relic Ruby エージェント プラグインや gem のインストールと同様に簡単です。

newrelic.yml 内の動作させたい RAILS_ENVdeveloper を true にセットする必要があります。RAILS_ENV = developmentのときのみ、デフォルトで ON になります。

newrelic.yml ファイルは、インストール作業の一環として作成されますが、有効なライセンスが必要というわけではありません。

注: 開発者版には、バグがあります。newrelic.yml 内の enableddeveloper を両方とも true にしていると、有効なライセンスキーがなければ、データが表示されません。推奨: このような事態を避けるために、enabled を false にセットしてください。

screen-ruby-dev-mode-transaction-list
開発者モードのトランザクションリスト

既知の問題

開発者モードにおける既知の問題を記載します。

Rails 2.3 以上の開発者モード

開発者モードは、比較的最近のエージェントかつ Rails 2.3 以上で動作します。これは、rack ベースのため、以前のバージョンのフレームワークには、rack は組み込まれていませんでした。

Developer版は、お使いのアプリにミドルウェアをインストールします。それは、/newrelic というURLのパスを使います。/newrelic/newrelic/files/images/foo.png などです。

場合によっては、/newrelic URL は以前のミドルウェアによって捕捉されます。推奨::その場合は、開発者モードのルートを無効にして、以下のようにお使いのミドルウェアに含めてください。

config.ru のファイルの先頭を以下のようにします。

require 'newrelic_rpm'
require 'new_relic/rack/developer_mode'
use NewRelic::Rack::DeveloperMode

Pow と互換性はありません

開発者モードは、Mac OS X の設定なし (zero-config) の Rack サーバーであるPow では使えません。

開発者モードの利用

ローカル環境で、thin、WEBrick などを利用して、アプリを起動している場合、 /newrelic へアクセスすると、開発者モードの UI が表示されます。

screen-ruby-developer-mode-breakdown-chart
開発者モードのブレイクダウンチャート

警告: Passenger、Unicorn や他のアプリケーションサーバーをフォークしてローカルで使っている場合、アプリケーションサーバーが複数のインスタンスを起動していると、データを消えるなど奇妙な動作を確認することがあります。その場合は、以下の Troubleshooting をご覧ください。

トラブルシューティング

開発者モードにおけるトラブルシューティングを記載します。

リクエストの消失

Unicorn やその他のマルチワーカーのディスパッチャーでこの問題が発生した場合、ワーカー数を1に制限してみてください。

Rack::Request の未定義のメソッドパス

ユーザーは #<Rack::Request>の未定義のメソッドpathを見ることがあります。Rails 2.3.2 を使っているならば、Railsのパッケージで定義されたRack 依存性の問題であることが多いです。その場合は、2.3.3 以上にアップグレードするか、Gemfile で dependency として、Rack のバージョン 1.0.0 を指定してください。

ActiveRecord 再読み込み

開発者モードは、リロード毎に ActiveRecord のメソッドの定義をリロードしメソッドを定義するにかかった時間(例えば、define_attribute_methodなど)を報告します。これは、Production では起きないことです。よって、実際の結果を得るには、開発環境に次の行を追加します。

  config.cache_classes = true