1

我已经升级到 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 的早期版本,但我不确定。对此的任何帮助将不胜感激!

谢谢 :)

更新:

我已将此通知 exception_notification-rake gem 开发人员。我有所有必备的 gem 并且有一个相当普通的设置,所以我认为这可能是一个需要为 Rails 4.1 修复的错误

4

1 回答 1

3

从这个问题中可以看出,当前发布的版本ExceptionNotification不适用于 rails 4.1

在新版本发布之前,您可以只使用主版本。在你的Gemfile包括你的宝石如下:

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

维护者发布了一个rc-version,你可以使用如下

gem 'exception_notification', '4.1.0.rc1'

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

于 2014-04-18T09:55:07.897 回答