1

I've upgraded to Rails 4.1 and am trying to set up the exception_notification-rake gem to notify me by email of failed rake tasks.

In my Gemfile, I have gem 'exception_notification-rake'.

In development.rb, I have the following:

MyApp::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # In the development environment your application's code is reloaded on
  # every request. This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Do not eager load code on boot.
  config.eager_load = false

  # Show full error reports and disable caching.
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  # Specify what domain to use for mailer URLs
  config.action_mailer.default_url_options = {host: "localhost:3000"}
  config.action_mailer.smtp_settings = {
      :address              => 'smtp.gmail.com',
      :port                 => 587,
      :domain               => 'gmail.com',
      :user_name            => Rails.application.secrets.email['user'],
      :password             => Rails.application.secrets.email['pass'],
      :authentication       => 'login',
      :enable_starttls_auto => true
  }

  # Print deprecation notices to the Rails logger.
  config.active_support.deprecation = :log

  # Raise an error on page load if there are pending migrations
  config.active_record.migration_error = :page_load

  # Debug mode disables concatenation and preprocessing of assets.
  # This option may cause significant delays in view rendering with a large
  # number of complex assets.
  config.assets.debug = true

  config.after_initialize do
    Bullet.enable = true
    Bullet.alert = true
    Bullet.bullet_logger = true
    Bullet.console = true
    # Bullet.growl = true
    Bullet.rails_logger = true
    Bullet.add_footer = true
  end

  config.middleware.use ExceptionNotification::Rack,
    :ignore_if => lambda { |env, exception| !env[:rake?] },
    :email => {
      :sender_address => %{"notifier" myemail@gmail.com},
      :exception_recipients => %w(myemail@gmail.com)
    }
    ExceptionNotifier::Rake.configure
end

As you can see, I'm passing in the user and password using Rails 4.1's secrets.yml file. When I try starting up my Rails server, I get the following error:

/development.rb:52:in `
block in <top (required)>': uninitialized constant ExceptionNotification (NameError)

I'm guessing this is a bug in the exception_notification-rake gem which calls a previous version of the exception_notification, but I'm not sure. Any help with this would be appreciated!

Thanks :)

Update:

I've notified the exception_notification-rake gem developer about this. I have all the prerequisite gems and have a fairly vanilla setup so I think this might be a bug that needs to be fixed for Rails 4.1

DaniG2k
  • 4,772
  • 36
  • 77
  • This feels like a very obvious thing to ask but are you sure you ran `bundle update` and `bundle install` and have you got `gem 'exception_notification'` in your gemfile as well as `gem 'exception_notification-rake`? – Mike H-R Apr 16 '14 at 14:34
  • Yep, done all that. Still not working, Thanks – DaniG2k Apr 17 '14 at 13:05

1 Answers1

3

As can be seen in this issue the current, published, version of ExceptionNotification does not work with rails 4.1

Until the new version is released, you can just use the master version. In your Gemfile include your gem as follows:

gem 'exception_notification', github: 'smartinez87/exception_notification'

The maintainer has released a rc-version, which you can use as follows

gem 'exception_notification', '4.1.0.rc1'

Once the new gem version is released, you can switch to the released version (4.1.0). This should not take too long I guess ;)

nathanvda
  • 49,707
  • 13
  • 117
  • 139
  • When I try adding `gem 'exception_notification', github: 'smartinez87/exception_notification'` to my Gemfile, I get the following error: `Bundler could not find compatible versions for gem "exception_notification": In Gemfile: exception_notification-rake (>= 0) ruby depends on exception_notification (~> 3.0.0) ruby` – DaniG2k Apr 25 '14 at 13:49
  • You have to update your version of `exception_notification-rake` as well. Note: both gems are now released, so you do not have to refer to the github anymore, just install the latest version (4.0.1). I updated my answer accordingly. – nathanvda Apr 25 '14 at 14:20
  • Ok. I was mistaken (4.0.1 and 4.1.0 look similar). You seem to have an old version of `exception_notification-rake`. I see the current version (0.1.2) depends on `exception_notification` with version `~> 4.0.1` so I hope that would work (the `~>` means only minor changes, non-breaking are allowed) so I am not sure it will support a `4.1.0.rc` version at all. I am guessing it does not, so the gem author should relax that dependency (e.g. use `> 4.0.1` instead), or release a new version. – nathanvda Apr 25 '14 at 14:28
  • 2
    I'm the maintainer of `exception_notification-rake`. Thanks for tracking down this issue. I pushed a new version (0.2.0.rc1) that has the dependencies rejiggered to work with Rails 4.1 and exception_notification 4.1. – Nik Haldimann Apr 26 '14 at 21:34