저는 보석이 어떻게 작동하는지 이해하고, 레일 3 응용 프로그램에 기능을 추가하거나 추가 할 수있는 보석을 만드는 방법을 알고 싶습니다.이 보석은 오류 처리에 어떻게 연결 되나요?
http를 통해 서버에 오류를 게시하는 오류 잡기 오류입니다.
은 단순히 보석을 추가 한 다음이 API 키를 가진 초기화를 만들고 설치합니다.지금까지 얻을,하지만 보석의 실행을 이해하는 데 도움이 필요하고 레일에 후크 방법이 부분. 내가 찾은
관련 파일은 다음과 같습니다
는ActionController
클래스에 메소드를 추가
https://github.com/airbrake/airbrake/blob/master/lib/airbrake/rails.rb
:
if defined?(ActionController::Base)
ActionController::Base.send(:include, Airbrake::Rails::ActionControllerCatcher)
ActionController::Base.send(:include, Airbrake::Rails::ErrorLookup)
ActionController::Base.send(:include, Airbrake::Rails::ControllerMethods)
ActionController::Base.send(:include, Airbrake::Rails::JavascriptNotifier)
end
그리고 그것을 실행 파일의 맨 아래에 :
Airbrake::Rails.initialize
1. You add the gem to your GEMFILE, and call bundle.
2. You run the generator which creates the initializer file:
내 레일 애플리케이션 시작하면 이니셜 라이저를 통과합니다.
/lib/airbrake/rails.rb
파일의 구문 분석이 끝나면 보석이 인스턴스화 된 다음 어딘가에서 줄을 따라 Airbrake::Rails.initialize
메서드를 실행할 위치입니까? 그것을이가 초기화 실행 후이 코드를 실행하기 때문에 지금은 이해가 보인다 및 구성을 설정
https://github.com/airbrake/airbrake/blob/master/lib/airbrake/railtie.rb
config.after_initialize do
Airbrake.configure(true) do |config|
config.logger ||= ::Rails.logger
config.environment_name ||= ::Rails.env
config.project_root ||= ::Rails.root
config.framework = "Rails: #{::Rails::VERSION::STRING}"
end
if defined?(::ActionController::Base)
require 'airbrake/rails/javascript_notifier'
require 'airbrake/rails/controller_methods'
::ActionController::Base.send(:include, Airbrake::Rails::ControllerMethods)
::ActionController::Base.send(:include, Airbrake::Rails::JavascriptNotifier)
end
end
:
나는 railtie.rb
파일의 초기화 코드를 볼 수 있습니다 ControllerMethods
등을 기본 클래스에 보냅니다.
하지만이 코드는 Airbrake::Rails.initialize
으로 전화하여 이미 ApplicationController
파일로 전송 된 코드를 복제 한 것으로 보입니다.
나는 누군가가 일을 실행하고 어떤 순서로이 과정이 명확한 방식으로 작동 어떻게 그냥보고하지 않는 방법을 말해 줄 수 기대하고있다.
감사합니다. btw, 보석을 만들고 레일 웹 앱에서 동시에 테스트 할 수 있습니까? 또는 보석을 따로 만드나요? 이 물건을 배우고 싶다! – Blankman
@Blankman'rails plugin new '을 사용하면'test/dummy' (또는'spec/dummy')에 dummy test app를 사용하여 플러그인 스켈레톤을 생성하여 통합/기능 테스트를 수행하지만,이 레일 앱을 실행할 수있는 아무 것도 없습니다. 그게 내가 보석 저장소에 예제 응용 프로그램을 가지고 있기 때문에 내가하고있는 일이다. –