2016-07-24 3 views
0

here 안내에 따라 Rails 앱에 부풀린 빌리를 추가하려고합니다. 테스트 스위트를 실행구출해야 할 때 왜이 줄을 '불러올 수 없습니까?'

제기 : 나는하지 웹킷을 심령 사진을 사용하고, 그래서이 파일을로드 할 필요가 없습니다

in `require': cannot load such file -- capybara/webkit (LoadError) 

.

오류가 구출이 오류의 원인이되는 피고-빌리에서

# /lib/billy/browsers/capybara.rb 

DRIVERS = { 
    poltergeist: 'capybara/poltergeist', 
    webkit: 'capybara/webkit', 
    selenium: 'selenium/webdriver' 
} 

def self.register_drivers 
    DRIVERS.each do |name, driver| 
    require driver rescue next # this line should be rescued 
    send("register_#{name}_driver") 
    end 
end 

어떻게 막을 수 require driver을 다음 행에서 유래하고,이를 디버깅하기위한 체계적인 접근 방법은 무엇인가?

+0

가능한 중복을 [어떻게 할 \ require에서 구출 : 루비에로드 할 파일이 없습니까?] (http://stackoverflow.com/questions/2460891/how-do-i-rescue-from-a-require-no-such-file- 로드 - 인 - 루비) –

답변

0

일반적으로 루비에서 인라인 rescuse를 사용하는 것은 좋지 않습니다. https://www.new-bamboo.co.uk/blog/2015/09/23/dont-inline-rescue-in-ruby/

인라인 구조와 "필터링되지 않은"구조 (당신이 잡은하려는 오류의 유형을 지정하지 않고) 모두 StandardErrorLoadError에서 상속하는 모든 예외를 포착 하지의 후손입니다 : 여기 승 좋은 글/자세한 내용은 StandardError 인라인 구조로 잡히지 않습니다. 작동 또한 의도하지 않은 오류를 잡을되지 않도록 그래서 여기 http://blog.honeybadger.io/understanding-the-ruby-exception-hierarchy/

이 코드를 수정 : 여기

루비에서 오류 계층 구조의 차트의

DRIVERS.each do |name, driver| 
    begin 
    require driver 
    send("register_#{name}_driver") 
    rescue LoadError 
    # This skips to the next driver 
    # It would be nice to add logging here to notify that the driver was skipped 
    end 
end 
관련 문제