[RUBY-ON-RAILS] 억제 루비 경고 사양을 실행
RUBY-ON-RAILS억제 루비 경고 사양을 실행
나는 내 사양을 실행할 때 루비 경고를 억제하는 방법을 찾고 있어요.
spec spec/models/account_spec.rb
나는 다음과 같은 경고가 나타납니다
DEPRECATION WARNING: ActiveSupport::Dependencies.load_paths is deprecated, ...
warning: already initialized constant SOME_CONSTANT_NAME
ActiveSupport 경고를 제거하면 ActiveSupport와 매우 쉽습니다 :: Deprecation.silenced 사실 =.
어떻게 사양 명령의 일환으로 이미 초기화 일정한 경고를 방지합니까? 또는 경고를 억제 할 수있는 또 다른 사양 파일을 만드는 과정. 이러한 경고는 보석 파일에서 있음을 알아 두셔야합니다 그러므로 나는 Kernel.silence_warnings로를 해당 파일로 이동 및 서라운드 수 없습니다.
노트 : 나는 억제 경고가 나쁜 것으로 알고 있습니다. 내가 정력 내에서 하나의 스펙을 실행할 때 경고가 내 화면을 어수선하지 않은 경우 그러나, 그것은 좋은 일 것입니다.
해결법
-
==============================
1.대신 사양 래퍼의 루비 명령을 직접 사양을 실행하면 경고 침묵에 -W 명령 행 옵션을 사용할 수 있습니다 :
대신 사양 래퍼의 루비 명령을 직접 사양을 실행하면 경고 침묵에 -W 명령 행 옵션을 사용할 수 있습니다 :
$ ruby --help [...] -W[level] set warning level; 0=silence, 1=medium, 2=verbose (default)
귀하의 경우 이렇게 :
$ ruby -W0 -Ispec spec/models/event_spec.rb
당신에게 경고를 표시하지합니다.
당신의 보석이로드되기 전에 (당신이 레일 3 인 경우 또는 application.rb) 또는, 당신은 당신의 environment.rb에의 상단에, 즉 $ VERBOSE = 전무를 설정할 수 있습니다. 참고이 모든 경고 모든 시간을 비활성화있다.
당신이 레일을 사용하고 있기 때문에 또는, 당신은 당신이 Bundler 프로그램을 사용하는 경우 Bundler.require 블록 주위에 Kernel.silence_warnings을 사용할 수 있어야합니다 :
Kernel.silence_warnings do Bundler.require(:default, Rails.env) if defined?(Bundler) end
더 선택적으로 만 로딩 특정 보석에 대한 VERBOSE $를 설정합니다 :
config.gem 'wellbehaving_gem' original_verbosity = $VERBOSE $VERBOSE = nil config.gem 'noisy_gem_a' $VERBOSE = original_verbosity
-
==============================
2.RUBYOPT의 구문은
RUBYOPT의 구문은
RUBYOPT="-W0" rspec
루비 2.1.x의 및 2.14.x에서 테스트
-
==============================
3.레일 가이드에서 말했듯이 게시물과 관련, 당신은 당신이 작업하는 환경에 따라 중단 경고를 관리 할 수 있습니다 :
레일 가이드에서 말했듯이 게시물과 관련, 당신은 당신이 작업하는 환경에 따라 중단 경고를 관리 할 수 있습니다 :
로그 :에 대해 stderr : 그래서 그냥 설정 / 환경 / test.rb 값을 변경
Rails.application.configure do ... # Print deprecation notices to the log file instead of console. config.active_support.deprecation = :log ... end
그리고이 변화, 사용 중단 경고는 이제 로그 / test.log 대신 콘솔 출력에 인쇄됩니다.
-
==============================
4.또한 RSpec을 위해 -W0를 전달하는 "RUBYOPT"환경 변수를 사용할 수 있습니다 :
또한 RSpec을 위해 -W0를 전달하는 "RUBYOPT"환경 변수를 사용할 수 있습니다 :
RUBYOPT=W0 rspec spec/models/event_spec.rb
이것은 당신이 디렉토리에 전달하여 여러 사양을 실행할 수 있습니다
RUBYOPT=W0 rspec spec/models
-
==============================
5.RSpec에 당신이 사용할 수있는 태그 옵션이 있습니다 - 단순히을 / dev / null을 사용했다.
RSpec에 당신이 사용할 수있는 태그 옵션이 있습니다 - 단순히을 / dev / null을 사용했다.
rspec spec --deprecation-out /dev/null
-
==============================
6.당신은 당신의 .rspec 파일 삭제이있는 경우
당신은 당신의 .rspec 파일 삭제이있는 경우
--warnings
프로젝트 루트에 .rspec 파일에서.
-
==============================
7.나를 위해 일한 유일한 해결책은 내 설정 / 환경 / test.rb 파일의 상단에 $ VERBOSE = 전무를 추가하는 것입니다
나를 위해 일한 유일한 해결책은 내 설정 / 환경 / test.rb 파일의 상단에 $ VERBOSE = 전무를 추가하는 것입니다
Rails.application.configure do $VERBOSE = nil
나는 사기꾼 경고 문제 사기꾼-1.9.6 / lib 디렉토리 / 사기꾼 / 기본 / number.rb 함께 해요 : 34. 이 지역의 다른 모든 경고를 숨 깁니다 때문에 사용합니다.
-
==============================
8.사실, 아마 당신은 당신의 경고를 무시해서는 안하지만 있어야 할 것 어디에 있는지 그들이 해고하기 위해 그들을 테스트합니다.
사실, 아마 당신은 당신의 경고를 무시해서는 안하지만 있어야 할 것 어디에 있는지 그들이 해고하기 위해 그들을 테스트합니다.
그것은 사용하기 쉬운 아니지만, 그것은 다음과 같습니다 :
obj.should_receive(:warn).with("Some Message")
난 여기가 발견, 내 사용 사례에 대해 그것을 테스트하고 그것을 작동합니다 (및 경고는 물론, 콘솔에서 사라)
-
==============================
9.당신은 시험을 위해 경비를 사용하고 6 레일과 같은 경고를받을 경우 : - "경고 : 평가에서 FILE 바인딩의 위치를 반환하지 않을 수 있습니다" - "경고 : Proc.new를 사용하여 주어진 블록을 캡처가되지 않습니다 대신 사용 및 블록" - "경고 : 키워드 매개 변수로 마지막 인수를 사용하여 더 이상 사용되지 않습니다, 어쩌면 ** 호출에 추가해야합니다"
당신은 시험을 위해 경비를 사용하고 6 레일과 같은 경고를받을 경우 : - "경고 : 평가에서 FILE 바인딩의 위치를 반환하지 않을 수 있습니다" - "경고 : Proc.new를 사용하여 주어진 블록을 캡처가되지 않습니다 대신 사용 및 블록" - "경고 : 키워드 매개 변수로 마지막 인수를 사용하여 더 이상 사용되지 않습니다, 어쩌면 ** 호출에 추가해야합니다"
그리고 유일한 방법은 그래서 모두가하는 것입니다 제거 :
나는이, 그래서 나중에 모든 경고를 제거하는 몇 가지 보석 업데이트 후, 우리는 우리가 예를 들어 자신의 코드 사용에 적절한 경고를받을 정도로 다시 그 라인을 제거해야 좋은 충고 아닌 것 같아요.
-
==============================
10.경고 퍼팅 : = 거짓 후 필요 [되지] "레일을 / 모든"설정 / application.rb 사방 그 경고를 억제하기 위해 아주 잘 작동합니다. 넌 할 수있어
경고 퍼팅 : = 거짓 후 필요 [되지] "레일을 / 모든"설정 / application.rb 사방 그 경고를 억제하기 위해 아주 잘 작동합니다. 넌 할 수있어
Warning[:deprecated] = false if Rails.env.test?
특정 경우에, 또는 더 나은 아직 - 설정 / 환경 / test.rb에 넣어,하지만 확실히 내가 몇 가지 물건이 그 전에로드 보라 이후 직장에가는 방법을 잘 모르겠어요.
from https://stackoverflow.com/questions/5591509/suppress-ruby-warnings-when-running-specs by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 응용 프로그램 / 자산의 모든 CSS와 JS 파일을 처리 할 수 config.assets.precompile 설정을 레일 (0) | 2020.02.14 |
---|---|
[RUBY-ON-RAILS] 어떻게 우분투에 루비를 제거 할 수 있습니다? (0) | 2020.02.14 |
[RUBY-ON-RAILS] 레일 클립 및 승객` '확인'command`에서 인식되지 않습니다 (0) | 2020.02.14 |
[RUBY-ON-RAILS] 루비 온 레일즈에 has_many 항목의 수의 유효성을 검사합니다 (0) | 2020.02.14 |
[RUBY-ON-RAILS] 어떻게 레이크 작업에 RAILS_ENV를 강요하는 걸까? (0) | 2020.02.14 |