17

フォアマンを使用して Rails アプリを起動しようとしています。残念ながら、デバッグのために IDE を接続するのが困難です。

私はここで使用について読んだ

Debugger.wait_connection = true
Debugger.start_remote

リモートデバッグセッションを開始しますが、実際にはうまくいきません。

質問: 職長によって開始された Rails (3.2) アプリをデバッグする方法はありますか? もしそうなら、アプローチは何ですか?

4

2 に答える 2

28

完全な 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]
于 2012-10-30T11:50:56.790 に答える
3

1 つの方法は、gemfile でデバッガーを通常どおりに要求し、debugger必要に応じて通常どおりコードに追加することです。サーバーがその行に到達すると停止しますが、フォアマンはそれについて詳しく説明しません。フォアマン コンソールでやみくもに と入力irbすると、プロンプトが表示されます。悪いUXですよね?

別の (拡張) アプローチは、ログを追跡することです。

tail -f log/development.log

お役に立てれば。

于 2012-08-10T21:49:44.413 に答える