私の仕様のいずれかで実行中のデバッガーRubyを取得しようとしています:
describe User do
it "should be valid" do
debugger
User.new.should be_valid
end
end
しかし、rspecを実行すると、次の結果が得られます。
debugger statement ignored, use -d or --debug option to enable debugging
私は次を試しました:
rake spec --debug
rake spec --debug --trace
rake spec:models --debug
bundle exec rspec --debug
bundle exec rspec --debug spec/models/
bundle exec rspec --d spec/models/
bundle exec "rspec --debug" spec/models/
bundle exec rspec --debugger spec/models/
bundle exec --debugger rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle exec --debugger rspec spec/models/
bundle exec rspec --debugger spec/models/
Rspecを正しい方法で実行する方法についてのアイデアはありますか?私はRails 3.0.5、Ruby 1.9.2、RSpec 2.5.1、Ruby-debug19。
ありがとう、ジャスティン。
仕様の先頭にrequire 'Ruby-debug'
を含めることで、必要なものを取得できます。
# spec/models/user_spec.rb
require 'spec_helper'
require 'Ruby-debug'
describe User do
it "should be valid" do
debugger
User.new.should be_valid
end
end
その後、通常どおりrake spec
またはrspec
を実行します
注:私は今Ruby 2.0+ and pryを好む。それはほとんど同じプロセスである:
require 'spec_helper'
require 'pry-debugger'
describe User do
it "should be valid" do
binding.pry
expect(User.new).to be_valid
end
end
また、pry-debuggerをすべての仕様で使用できるように、通常はspec_helperファイルにこのような要件を設定します。
プロジェクトのルートに.rspec
構成ファイルを作成し、次の行を含めることができます。
--debug
Ruby 2.0 byebugを使用: https://github.com/deivid-rodriguez/byebug
gem 'byebug'
コード:
# spec/models/user_spec.rb
require 'spec_helper'
require 'byebug'
describe User do
it "should be valid" do
byebug
User.new.should be_valid
end
end
RSpecでデバッグするために見つけた最良の方法は、 'spec_helper.rb'ファイルに以下を追加することです。
def logger
Rails.logger
end
その後、rSpecファイル内のすべてのロガーメソッドにアクセスし、タグ付きロギングなどを組み込むことができます。これはもちろん、Rails 3以上です。Rails 3の前に何かがある場合は、代わりにこれを追加します。
def logger
Rails_DEFAULT_LOGGER
end
ロギングステートメントを設定したら、次を入力できます。
tail -f log/test.log
ターミナルシェルで、テストの実行中にログステートメントを監視します。
もちろん、実際のrspecテストでは、次のように入力します
logger.debug "#{1.class}" # => Fixnum
テストログの残りの部分からデバッグステートメントをフィルター処理する場合は、デバッグステートメントにランダムな文字列を追加し、tailコマンドの出力をgrepにパイプするだけです。
例:
logger.debug "random_string #{1.class}" # => Fixnum
tail -f log/test.log | grep random_string
私はこれについて私の意見を変えました。 pry、pry-doc、およびpry-debug、pry-debugger、およびpry-Railsをインストールする必要があります。次に、コードでbinding.pryを使用して、世界を支配する対話型デバッガーコンソールを開きます!
最良かつ最もクリーンなオプションは、--require
あなたの.rspec
ファイル。配置する内容は、デバッグに使用するgemによって異なります。
--color
--require pry
--require Rails_helper
これらはコマンドラインオプションに対応しています(-dまたは--debugは非推奨になりました)。
debugger
、Ruby-debug
またはpry
(Gemfileのpry-Rails)。
Gemfileの場合:
group :test, :development do
gem 'pry-Rails'
end
置くrequire 'Ruby-debug'
など、仕様の最上部にあるものは、より緊密に結合されています。特に、ここでは、上位のコメントがすべてのファイルに個別に配置することを示唆しているためです。新しい.rspec
置く必要のないファイルrequire 'spec_helper'
またはrequire 'Rails_helper'
もうファイルの先頭に。
暗黙のコマンドライン引数としてより意味があります。