1

質問

ローカル マシンで Thin によってホストされている Sinatra Web サイトをデバッグできるようにしたいと考えていますrake

さまざまなテクノロジ (Windows、Rails、Java など) やその他のサーバー (Unicorn、Passenger、Puma など) の使用を示唆する回答を受け入れることはできません。ただし、私が求めていることが不可能な場合は、その答えを受け入れます。

私が試したこと

現在のタスクにはシン サーバーを起動Rakefileするタスクが含まれています:startが、ブレークポイントに到達しても端末に出力が表示されません。ターミナルから直接 Thin を起動すると(rdb:1)、予想どおりブレークポイントに到達したときにプロンプ​​トが表示されます。いずれの場合も、シン サーバーはサイトを正しく実行しています (ブレークポイントをコメント アウトすることで確認できます)。

Gemfile

source :rubygems
gem 'sinatra'
gem 'thin'
gem 'debugger-pry'

レーキファイル

task :start do
  conf = File.expand_path('config.ru', File.dirname(__FILE__))
  `thin -e development -R #{conf} --debug start`
end

config.ru

require File.expand_path('app', File.dirname(__FILE__))

run ModularExample::App.new

app.rb

require 'sinatra'
require 'debugger/pry'

module ModularExample
  class App < Sinatra::Base
    get '/' do
      debugger
      "Hello, world"
    end
  end
end
4

1 に答える 1

3

STDOUTに出力していません。バックティックはコマンドを実行し、出力を文字列として返すため、次のようなことができます。

puts `thin -e development -R #{conf} --debug start`

しかし、プロセス出力をSTDOUTにストリーミングしたいので、実際に実行したいのは次のとおりです。

task :start do
  conf = File.expand_path('config.ru', File.dirname(__FILE__))
  exec("thin -e development -R #{conf} --debug start")
end

この質問からコマンドライン呼び出しを呼び出す方法の詳細をご覧ください。

于 2013-01-31T02:49:36.240 に答える