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} }
- 将多个文件添加到目录时,FileSystemWatcher出现文件访问错误
- 最后在try catch / finally语句除外的意义是什么?
- 如何在Java中创build自定义exception?
- jQuery的Ajaxerror handling,显示自定义的exception消息
- WCF ExceptionShielding错误ID不匹配与handlingInstanceId传递给处理程序
- 硬编码string“第三行”,应该使用@string资源
- 捕获构造函数的初始值设定项列表中的exception
- debugging器不会在asynchronous方法中打破/停止exception
- 如何在sql server中重新抛出同样的exception