上記の短い質問、以下の詳細 (ほとんど不要ですが、役立つ可能性があると考えました)。私はガードが初めてで、レールには比較的慣れていませんが、ガードが正しく(rspecを使用して)正しく動作するレールプロジェクトをセットアップしました。主なことは、ガードとカスタムロガーの両方が完全に機能し、それ自体で期待どおりに機能することですが、ロガーが有効になっているとガードが解除されます。
詳細は次のとおりです。次のようにカスタムロガーを定義すると:
logfile = File.open("#{Rails.root}/log/my.log", 'a')
logfile.sync=true
MY_LOGGER = Logger.new(logfile)
「/lib/assets/my_logger.rb」などのファイルに
config/development.rb ファイルでこれが必要な場合は、次のようにします。
require "assets/my_logger"
次に、このロガーを任意のコントローラー内で使用できますが、そこに配置するとすぐに、たとえば
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_back_or user
else
flash.now[:error] = 'Invalid email/password combination'
render 'new'
MY_LOGGER.info "this will break guard tests"
end
end
def destroy
sign_out
redirect_to root_url
end
end
次に、コントローラーのこのアクションに依存する私のガード テストが壊れます。
(上記でコメントした MY_LOGGER 行を使用):
16:56:33 - INFO - Running: spec/requests/authentication_pages_spec.rb
Running tests with args ["--drb", "-f", "progress", "-r", "/Users/crashandburn4/.rvm/gems/ruby-2.0.0-p0/gems/guard-rspec-2.5.0/lib/guard/rspec/formatter.rb", "-f", "Guard::RSpec::Formatter", "--failure-exit-code", "2", "spec/requests/authentication_pages_spec.rb"]...
..................
Finished in 1.61 seconds
18 examples, 0 failures
(線を引いた状態)
16:56:19 - INFO - Running: spec/requests/authentication_pages_spec.rb
Running tests with args ["--drb", "-f", "progress", "-r", "/Users/crashandburn4/.rvm/gems/ruby-2.0.0-p0/gems/guard-rspec-2.5.0/lib/guard/rspec/formatter.rb", "-f", "Guard::RSpec::Formatter", "--failure-exit-code", "2", "spec/requests/authentication_pages_spec.rb"]...
..FFF.............
Failures:
1) Authentication signin with invalid information
Failure/Error: it { should have_title('Sign in') }
expected #has_title?("Sign in") to return true, got false
# ./spec/requests/authentication_pages_spec.rb:20:in `block (4 levels) in <top (required)>'
2) Authentication signin with invalid information
Failure/Error: it { should have_selector('div.alert.alert-error', text: 'Invalid') }
expected #has_selector?("div.alert.alert-error", {:text=>"Invalid"}) to return true, got false
# ./spec/requests/authentication_pages_spec.rb:21:in `block (4 levels) in <top (required)>'
3) Authentication signin with invalid information after visiting another page
Failure/Error: before { click_link "Home" }
Capybara::ElementNotFound:
Unable to find link "Home"
# ./spec/requests/authentication_pages_spec.rb:23:in `block (5 levels) in <top (required)>'
Finished in 1.62 seconds
18 examples, 3 failures
Failed examples:
rspec ./spec/requests/authentication_pages_spec.rb:20 # Authentication signin with invalid information
rspec ./spec/requests/authentication_pages_spec.rb:21 # Authentication signin with invalid information
rspec ./spec/requests/authentication_pages_spec.rb:24 # Authentication signin with invalid information after visiting another page
(不必要なスタックトレースをお詫びします)
今、私はガードのgithubページを見回してきましたが、ガードによって無視されるようにカスタムロガーを有効にすることについて何かが書かれている場所を簡単に見つけることができません.誰かがこれを達成する方法を知っていますか?