0

現在、Windows サービスの「実行可能ファイルへのパス」として次のものがあります。

インタラクティブにデバッグできるように、コマンドライン アプリケーションに変換する方法を知りたいです。

Windows サービス 実行ファイルへのパス: "C:\LONG_PATH_1\ruby\bin\rubyXXXX_console.exe" "C:\LONGPATH_2\windows_script.rb"

windows_script.rb は次のとおりです。

# console_windows.rb
#
# Windows-specific service code.

# redirect stdout / stderr to file, else Windows Services will crash on output
$stdout.reopen File.open(File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..',
      'log', 'XXXX_console.output')), 'a')
$stderr.reopen $stdout
$stdout.sync = true
$stderr.sync = true

require File.join(File.dirname(File.expand_path(__FILE__)),"script_helper.rb")

require 'rubygems'
require 'win32/daemon'
include Win32

class BackgroundWindowsDaemon < Daemon

  def service_init
    # Do startup in service_main so that Windows Services doesn't timeout during startup
  end

  def service_main
    BackgroundScriptHelper.request_start
    BackgroundScriptHelper.monitor
  end

  def service_stop
    BackgroundScriptHelper.request_stop
  end

end

BackgroundWindowsDaemon.new.mainloop
4

1 に答える 1

1

ruby デバッガー gem をインストールする

gem install debugger

または、たとえばスクリプトが /lib フォルダーなどにある場合は、Gemfile に gem を追加します。

インストール中に問題が発生した場合は、これらの回答がさらに役立つ可能性があります: Windows に ruby​​-debug gem をインストールできません。

スクリプトでデバッガーを要求する

require 'rubygems'
require 'win32/daemon'
include Win32
require "debugger"

class BackgroundWindowsDaemon < Daemon

  def first_method
    puts "i am doing something"
  end

  def second_method
    puts "this is something I want debug now"
    # your code is here..
    foo = {}
    debugger
    foo = { :bar => "foobar" }
  end

  # more code and stuff...

end

スクリプトを実行して「second_method」が呼び出されると、スクリプトは「debugger」と記述した行で停止します。「irb」と入力すると、通常のコンソールが起動します。コンソール内のすべてのローカルのものにアクセスできます。この例では、「foo」と入力すると => {} が結果として表示されます。

ここで、gem を Windows にインストールしたことはなく、Linux と Mac にのみインストールしたことを追加しなければなりません。しかし、これらの手順でアイデアを得ることができると思います。わかりますか?

デバッグの詳細については、http: //guides.rubyonrails.org/debugging_rails_applications.htmlを参照してください。Rails と Ruby 2.0 でのデバッグについて詳しく説明されています。

Rails 2.0 以降、Rails には ruby​​-debug のサポートが組み込まれています。Rails アプリケーション内では、debugger メソッドを呼び出してデバッガーを呼び出すことができます。

于 2013-05-06T14:26:15.933 に答える