Rails 4.1和exception_notification-rake gem导致未初始化的常量ExceptionNotification

时间:2014-04-09 10:25:28

标签: ruby-on-rails actionmailer exception-notification

我已升级到Rails 4.1并尝试设置exception_notification-rake gem以通过电子邮件通知我rake任务失败。

在我的Gemfile中,我有gem 'exception_notification-rake'

development.rb中,我有以下内容:

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

如您所见,我使用Rails 4.1的secrets.yml文件传递用户名和密码。 当我尝试启动我的Rails服务器时,出现以下错误:

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

我猜这是exception_notification-rake gem中的一个错误,它调用了exception_notification的先前版本,但我不确定。任何有关这方面的帮助将不胜感激!

谢谢:)

更新

notified the exception_notification-rake gem developer对此有所了解。我有所有必备的宝石,并且有一个相当普通的设置,所以我认为这可能是一个需要修复Rails 4.1的错误

1 个答案:

答案 0 :(得分:3)

issue可以看出,当前发布的ExceptionNotification版本不适用于rails 4.1

在新版本发布之前,您只需使用主版本即可。在您的Gemfile中包含您的宝石,如下所示:

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

维护者发布了一个rc版本,您可以按照以下方式使用

gem 'exception_notification', '4.1.0.rc1'

发布新的gem版本后,您可以切换到已发布的版本(4.1.0)。这不应该花太长时间我猜;)