0

上記の短い質問、以下の詳細 (ほとんど不要ですが、役立つ可能性があると考えました)。私はガードが初めてで、レールには比較的慣れていませんが、ガードが正しく(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ページを見回してきましたが、ガードによって無視されるようにカスタムロガーを有効にすることについて何かが書かれている場所を簡単に見つけることができません.誰かがこれを達成する方法を知っていますか?

4

1 に答える 1