From 9fbb0442c41b241fc98965db534cac3df3875cde Mon Sep 17 00:00:00 2001 From: Patrick Gansterer Date: Tue, 3 Oct 2017 20:36:17 +0200 Subject: [PATCH] Use ExceptionNotification via generator generated code Ensure that FoodsoftConfig is loaded before running the initalizers. This also enables notifaction for Resque. --- Gemfile | 5 +- config/initializers/01_load_app_config.rb | 5 ++ config/initializers/exception_notification.rb | 51 +++++++++++++++++++ config/initializers/load_app_config.rb | 24 --------- 4 files changed, 57 insertions(+), 28 deletions(-) create mode 100644 config/initializers/01_load_app_config.rb create mode 100644 config/initializers/exception_notification.rb delete mode 100644 config/initializers/load_app_config.rb diff --git a/Gemfile b/Gemfile index c8c284a527..afa112ba87 100644 --- a/Gemfile +++ b/Gemfile @@ -47,6 +47,7 @@ gem 'recurring_select' gem 'roo' gem 'roo-xls' gem 'spreadsheet' +gem 'exception_notification' gem 'gaffe' gem 'ruby-filemagic' gem 'midi-smtp-server' @@ -63,10 +64,6 @@ gem 'foodsoft_discourse', path: 'plugins/discourse' #gem 'foodsoft_documents', path: 'plugins/documents' -group :production do - gem 'exception_notification' -end - group :development do gem 'sqlite3' gem 'mailcatcher' diff --git a/config/initializers/01_load_app_config.rb b/config/initializers/01_load_app_config.rb new file mode 100644 index 0000000000..8d9957c2f6 --- /dev/null +++ b/config/initializers/01_load_app_config.rb @@ -0,0 +1,5 @@ +# Initial load the default config and database from rails environment +# See config/app_config.yml for further details +# Load Config, start by selecting defaults via current environment +require 'foodsoft_config' +FoodsoftConfig.init diff --git a/config/initializers/exception_notification.rb b/config/initializers/exception_notification.rb new file mode 100644 index 0000000000..ccb23bfcd8 --- /dev/null +++ b/config/initializers/exception_notification.rb @@ -0,0 +1,51 @@ +require 'exception_notification/rails' + + +require 'resque/failure/multiple' +require 'resque/failure/redis' +require 'exception_notification/resque' + +Resque::Failure::Multiple.classes = [Resque::Failure::Redis, ExceptionNotification::Resque] +Resque::Failure.backend = Resque::Failure::Multiple + + +ExceptionNotification.configure do |config| + # Ignore additional exception types. + # ActiveRecord::RecordNotFound, Mongoid::Errors::DocumentNotFound, AbstractController::ActionNotFound and ActionController::RoutingError are already added. + # config.ignored_exceptions += %w{ActionView::TemplateError CustomError} + + # Adds a condition to decide when an exception must be ignored or not. + # The ignore_if method can be invoked multiple times to add extra conditions. + config.ignore_if do |exception, options| + not Rails.env.production? + end + + # Notifiers ================================================================= + + # Email notifier sends notifications by email. + config.add_notifier :email, { + :email_prefix => FoodsoftConfig[:notification]['email_prefix'], + :sender_address => FoodsoftConfig[:notification]['sender_address'], + :exception_recipients => FoodsoftConfig[:notification]['error_recipients'] + } + + # Campfire notifier sends notifications to your Campfire room. Requires 'tinder' gem. + # config.add_notifier :campfire, { + # :subdomain => 'my_subdomain', + # :token => 'my_token', + # :room_name => 'my_room' + # } + + # HipChat notifier sends notifications to your HipChat room. Requires 'hipchat' gem. + # config.add_notifier :hipchat, { + # :api_token => 'my_token', + # :room_name => 'my_room' + # } + + # Webhook notifier sends notifications over HTTP protocol. Requires 'httparty' gem. + # config.add_notifier :webhook, { + # :url => 'http://example.com:5555/hubot/path', + # :http_method => :post + # } + +end diff --git a/config/initializers/load_app_config.rb b/config/initializers/load_app_config.rb deleted file mode 100644 index 216fb4e703..0000000000 --- a/config/initializers/load_app_config.rb +++ /dev/null @@ -1,24 +0,0 @@ -# Initial load the default config and database from rails environment -# See config/app_config.yml for further details -# Load Config, start by selecting defaults via current environment -require 'foodsoft_config' -FoodsoftConfig.init - -Foodsoft::Application.configure do - # Set action mailer default host for url generating - [:protocol, :host, :port].each do |k| - config.action_mailer.default_url_options[k] = FoodsoftConfig[k] if FoodsoftConfig[k] - end - - if %w(production).include? Rails.env - # Configuration of the exception_notification plugin - # Mailadresses are set in config/app_config.yml - config.middleware.use ExceptionNotification::Rack, - :email => { - :email_prefix => FoodsoftConfig[:notification]['email_prefix'], - :sender_address => FoodsoftConfig[:notification]['sender_address'], - :exception_recipients => FoodsoftConfig[:notification]['error_recipients'] - } - end -end -