フォアマンを使用して Rails アプリを起動しようとしています。残念ながら、デバッグのために IDE を接続するのが困難です。
私はここで使用について読んだ
Debugger.wait_connection = true
Debugger.start_remote
リモートデバッグセッションを開始しますが、実際にはうまくいきません。
質問: 職長によって開始された Rails (3.2) アプリをデバッグする方法はありますか? もしそうなら、アプローチは何ですか?
フォアマンを使用して Rails アプリを起動しようとしています。残念ながら、デバッグのために IDE を接続するのが困難です。
私はここで使用について読んだ
Debugger.wait_connection = true
Debugger.start_remote
リモートデバッグセッションを開始しますが、実際にはうまくいきません。
質問: 職長によって開始された Rails (3.2) アプリをデバッグする方法はありますか? もしそうなら、アプローチは何ですか?
完全な Rails 環境で複数のワーカーを使用する場合は、次の初期化子を使用できます。
# Enabled debugger with foreman, see https://github.com/ddollar/foreman/issues/58
if Rails.env.development?
require 'debugger'
Debugger.wait_connection = true
def find_available_port
server = TCPServer.new(nil, 0)
server.addr[1]
ensure
server.close if server
end
port = find_available_port
puts "Remote debugger on port #{port}"
Debugger.start_remote(nil, port)
end
また、職長のログで、デバッガーのポートを見つけることができます。
$ foreman start
12:48:42 web.1 | started with pid 29916
12:48:42 worker.1 | started with pid 29921
12:48:44 web.1 | I, [2012-10-30T12:48:44.810464 #29916] INFO -- : listening on addr=0.0.0.0:5000 fd=10
12:48:44 web.1 | I, [2012-10-30T12:48:44.810636 #29916] INFO -- : Refreshing Gem list
12:48:47 web.1 | Remote debugger on port 59269
12:48:48 worker.1 | Remote debugger on port 41301
次を使用してデバッガーを実行します。
rdebug -c -p [PORT]
1 つの方法は、gemfile でデバッガーを通常どおりに要求し、debugger
必要に応じて通常どおりコードに追加することです。サーバーがその行に到達すると停止しますが、フォアマンはそれについて詳しく説明しません。フォアマン コンソールでやみくもに と入力irb
すると、プロンプトが表示されます。悪いUXですよね?
別の (拡張) アプローチは、ログを追跡することです。
tail -f log/development.log
お役に立てれば。