exception通知Gem和Rails 3

我试图让这个启动和运行,但我看到“未初始化的常量ExceptionNotifier”,每当我启动我的服务器。

http://github.com/rails/exception_notification

在我的Gemfile中有

gem“exception_notification”,:git =>“ http://github.com/rails/exception_notification.git ”,:branch =>“master”

我已经尝试把config / application.rb,config / environment.rb和config.ru中的github自述文件中显示的configuration。 我用我的应用程序名称replace了“无论”。

所有以前的答案都过时了,现在你可以简单的把它添加到你的gemfile中:

gem 'exception_notification', :require => 'exception_notifier' 

并按照自述文件中的说明编辑您的production.rbconfiguration文件:

 config.middleware.use ExceptionNotifier, :email_prefix => "[Exception] ", :sender_address => %{"Exception Notifier" <support@example.com>}, :exception_recipients => %w{you@me.com} 

官方gem的最新版本使用Rails 3,你可以在这里find: https : //github.com/smartinez87/exception_notification 。

下一个gem版本将使得:require => 'exception_notifier'选项不必要。

好吧,现在为我工作:

 # Gemfile gem "exception_notification", :git => "git://github.com/rails/exception_notification", :require => 'exception_notifier' # application.rb, inside the config block config.middleware.use ::ExceptionNotifier, :email_prefix => "ApplicationName-Errors: ", :sender_address => %w{office@application.com}, :exception_recipients => %w{office@application.com} 

保持简单愚蠢

gemfile中

 gem 'exception_notification', :require => 'exception_notifier' 

application.rb文件中

  config.middleware.use ExceptionNotifier, :email_prefix => "[ERROR] ", :sender_address => %{"Exception Notifier" <Dummy_email@exapmle.com>}, :exception_recipients => %w{Dummy_email@example.com} 

你已经完成..:*

看来,Rails 3不能使用这个插件的gemforms。 也许机架上的应用程序不能从gem加载? 我把它作为插件安装,并将configuration语法更改为:

config.middleware.use“:: ExceptionNotifier”

代替

config.middleware.use ExceptionNotifier

github官方回购现在是: https : //github.com/smartinez87/exception_notification

在Gemfile中

 gem "exception_notification", :require => 'exception_notifier', :git => "https://github.com/smartinez87/exception_notification.git" 

在config \ initializers \ exception_notification.rb中

 Rails.application.config.middleware.use ExceptionNotifier, :email_prefix => "[Whatever] ", :sender_address => %{"notifier" <notifier@example.com>}, :exception_recipients => %w{exceptions@example.com} 

事实上,现在,这是更容易。 在你的Gemfile你需要写:

 gem "exception_notification", :git => "http://github.com/rails/exception_notification.git", :require => 'exception_notifier' 

一切都应该修复。 :require选项是至关重要的(我猜是因为名称不同,你必须明确指定)。 前面提到的所有其他补丁已经合并我假设。

我能够在production.rb中使用以下代码:

 config.after_initialize do config.middleware.use ExceptionNotifier, :email_prefix => "[Whatever] ", :sender_address => %{"notifier" <notifier@example.com>}, :exception_recipients => %w{exceptions@example.com} end 

https://github.com/smartinez87/exception_notification

这个gem已更新为轨道3.x和我只是在3.0.7testing,安装更简单。

的Gemfile:

 gem 'exception_notification' 

初始化:

 Rails.application.config.middleware.use ExceptionNotifier, :email_prefix => "[Whatever] ", :sender_address => %{"notifier" <notifier@example.com>}, :exception_recipients => %w{exceptions@example.com} 

如果您正在执行rescue_from Exception, with: :render_500来处理显示500个模板/页面,但不会再发送电子邮件

  config.middleware.use ExceptionNotifier, :email_prefix => "[some prefix] ", :sender_address => %{"Notifier" <notify@domain.com>}, :exception_recipients => %w{recipient@domain.com} 

您需要手动将其发送到处理exception的方法中

 def render_500(exception) # email an error email if there's a 500 in production mode if Rails.env.production? ExceptionNotifier::Notifier.exception_notification(request.env, exception).deliver end end 

所以把你的环境(production.rb)的configuration和你的应用程序控制器中的exception处理代码。

我刚刚有同样的问题,并解决这个问题:

的Gemfile

 source 'http://rubygems.org' gem 'exception_notification_rails3', :require => 'exception_notifier' 

application.rb中

 config.middleware.use ExceptionNotifier, :email_prefix => "[some prefix] ", :sender_address => %{"Notifier" <notify@domain.com>}, :exception_recipients => %w{recipient@domain.com} 

我正在重构一个Rails 2.3项目到3.0,所以我没有试过这个全新的安装。

编辑:

将ExceptionNotifier初始化放在一个单独的初始化文件中,而不是application / .rb中,实际上可能会更好(或者说更“正确”)。

configuration/初始化/ exception_notifier.rb

 MyApp::Application.config.middleware.use ExceptionNotifier, :email_prefix => "[some prefix] ", :sender_address => %{"Notifier" <notify@domain.com>}, :exception_recipients => %w{recipient@domain.com} 

使用Rails 3.0.3这适用于我:

 gem "exception_notification", :git => "https://github.com/sickill/exception_notification.git", :require => 'exception_notifier' 

:git部分导入,因为它的补丁版本绕过'未定义的方法controller_name错误'和:要求要求正确的lib。

然后在我的production.rb环境文件中,我只有这个(从手册)

  config.middleware.use ExceptionNotifier, :email_prefix => "[MyApp] ", :sender_address => %{"notifier" <email@example.com>}, :exception_recipients => %w{email@example.com} 

似乎有很多不同的方式来使这个工作,但这是我的方式。

干杯!

它花了一些工作,但我得到了使用Rails 3.0.0的Exception Notifier:

1- rails plugin install http://github.com/sickill/exception_notification.git

(如果你不想使用这个分支,只需要将他的补丁手动应用到原来的Rails插件:它只有3行)。它修复了'undefined method controller_name error'

2-在application.rb中:

 config.middleware.use "::ExceptionNotifier" , :email_prefix => "[Whatever] ", :sender_address => %{"notifier" <notifier@example.com>}, :exception_recipients => %w{whoever@example.com} 

3-应用Lawrence Pit的补丁 。 更新:此链接似乎被打破)它修复了uninitialized constant ActiveRecord::RecordNotFound错误,如logging在这里 。

而已。

直到现在(2012年8月 – 03日)官方网站是: https : //github.com/smartinez87/exception_notification ,并根据自述文件,它完美支持Rails3。

步骤1。 编辑你的Gemfile:

 gem 'exception_notification' 

第2步。

从Rails 3 ExceptionNotification被用作机架中间件,所以你可以在你的config.ru文件或者你希望它运行的环境中configuration它的选项。 在大多数情况下,您会希望ExceptionNotification在生产环境中运行。 你可以让它工作

 Whatever::Application.config.middleware.use ExceptionNotifier, :email_prefix => "[Whatever] ", :sender_address => %{"notifier" <notifier@example.com>}, :exception_recipients => %w{exceptions@example.com} 

我正在使用rails 3.0.4,并具有与上面相同的问题。 唯一能解决这个问题的方法是安装rails 3的exception_notification v1.2(确保你使用正确的分支/版本)作为一个PLUGIN

 rails plugin install https://github.com/railsware/exception_notification.git 

并在production.rb中使用每个人都提到的代码:

 config.middleware.use ExceptionNotifier, :email_prefix => "[some prefix] ", :sender_address => %{"Notifier" <notify@domain.com>}, :exception_recipients => %w{recipient@domain.com} 

它肯定不适合我作为一个gem,自述文件没有说“用于Rails的Exception Notifier插件”,并没有提及将它安装为gem。

掠夺

更新的答案截至3/14

你只需要在你的gem文件中做gem exception_notification 。 不需要“需要”。

此外,其他更改只是从文档直接…

“从4.x版开始,configuration语法已经改变,所有与电子邮件相关的选项都必须嵌套在:email密钥下。

像这样…

 Whatever::Application.config.middleware.use ExceptionNotification::Rack, :email => { :email_prefix => "[Whatever] ", :sender_address => %{"notifier" <notifier@example.com>}, :exception_recipients => %w{exceptions@example.com} } 

我从旧的应用程序复制和粘贴exception_notificationconfiguration到新的,它失败了。 它把我带到这里,上面的答案都不是最新的。 由于4.x版本中间件被重命名为ExceptionNotification::Rack ,因此中间件configuration看起来像这样:

 Whatever::Application.config.middleware.use ExceptionNotification::Rack, :email => { :email_prefix => "[Whatever] ", :sender_address => %{"notifier" <notifier@example.com>}, :exception_recipients => %w{exceptions@example.com} }