我正在尝试启动并运行,但每当我启动服务器时,我都会看到“未初始化的常量ExceptionNotifier”。
http://github.com/rails/exception_notification
在我的Gemfile中我有
gem“exception_notification”,:git => “http://github.com/rails/exception_notification.git”,:branch => “主”
我已尝试将配置如config / application.rb,config / environment.rb和config.ru中的github readme所示。我用我的应用程序名称替换了“Whatever”。
答案 0 :(得分:57)
之前的所有答案都已过时,您现在只需将其添加到您的gemfile:
gem 'exception_notification', :require => 'exception_notifier'
并按照自述文件中的说明编辑您的production.rb配置文件:
config.middleware.use ExceptionNotifier,
:email_prefix => "[Exception] ",
:sender_address => %{"Exception Notifier" <support@example.com>},
:exception_recipients => %w{you@me.com}
答案 1 :(得分:21)
官方gem的最新版本与Rails 3一起使用,你可以在这里找到它:https://github.com/smartinez87/exception_notification。
下一个gem版本将不再需要:require => 'exception_notifier'
选项。
答案 2 :(得分:13)
好的,它现在为我工作:
# 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}
答案 3 :(得分:10)
保持简单愚蠢
在 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}
你做完了......:*
答案 4 :(得分:4)
似乎Rails 3无法以gem形式使用此插件。也许机架应用程序无法从宝石加载?我将其作为插件安装,并将配置语法更改为:
config.middleware.use“:: ExceptionNotifier”
而不是
config.middleware.use ExceptionNotifier
答案 5 :(得分:4)
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}
答案 6 :(得分:3)
实际上,现在,它要容易得多。在Gemfile
中你需要写:
gem "exception_notification", :git => "http://github.com/rails/exception_notification.git", :require => 'exception_notifier'
所有都应该修复。 :require
选项至关重要(我猜因为名称不同,您必须明确指定)。
之前提到的所有其他补丁都已合并,我认为。
答案 7 :(得分:3)
我能够在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
答案 8 :(得分:3)
如果您正在执行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}
您需要在处理异常的方法中手动发送
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)和应用程序控制器中的异常处理代码中。
答案 9 :(得分:3)
https://github.com/smartinez87/exception_notification
此gem已针对rails 3.x进行了更新,我刚刚在3.0.7上进行了测试,安装更加简单。
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}
答案 10 :(得分:2)
我花了一些工作但是我使用Rails 3.0.0的Exception Notifier:
1- rails plugin install http://github.com/sickill/exception_notification.git
(如果您不想使用此fork,只需手动将his patch应用于原始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's patch。 (更新:此链接似乎已损坏)它修复了uninitialized constant ActiveRecord::RecordNotFound
错误,记录为here。
就是这样。
答案 11 :(得分:2)
步骤1。编辑你的Gemfile:
gem 'exception_notification'
步骤2。
从Rails 3开始,ExceptionNotification被用作机架中间件,所以 您可以在config.ru文件或 你希望它运行的环境。在大多数情况下,你会想要 ExceptionNotification在生产中运行。您可以通过
使其工作Whatever::Application.config.middleware.use ExceptionNotifier, :email_prefix => "[Whatever] ", :sender_address => %{"notifier" <notifier@example.com>}, :exception_recipients => %w{exceptions@example.com}
答案 12 :(得分:2)
使用Rails 3.0.3这对我有用:
gem "exception_notification", :git => "https://github.com/sickill/exception_notification.git", :require => 'exception_notifier'
:git part是导入的,因为它是一个修补版本来绕过'undefined method controller_name error'并且:require需要正确的lib。
然后在我的production.rb环境文件中我只有这个(来自手册)
config.middleware.use ExceptionNotifier,
:email_prefix => "[MyApp] ",
:sender_address => %{"notifier" <email@example.com>},
:exception_recipients => %w{email@example.com}
似乎有许多不同的方法可以让它发挥作用,但这是我的方式。
干杯!
答案 13 :(得分:2)
我刚才遇到了同样的问题并以这种方式解决了这个问题:
的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初始化放在config / initializers /而不是application.rb中的单独初始化文件中可能实际上更好(或“更正确”)。
配置/初始化/ 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}
答案 14 :(得分:1)
我正在使用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}
它绝对不适合我作为宝石,自述文件确实说“Rails的Exception Notifier插件”,并没有提到将其安装为gem。
哈利
答案 15 :(得分:1)
截至3/14的更新答案......
您只需在gem文件中执行gem exception_notification
即可。不需要'需要'。
此外,其他更改只是直接来自文档......
“从4.x版开始,配置语法已更改。 所有与电子邮件相关的选项必须嵌套在:email密钥下。“
像这样......Whatever::Application.config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "[Whatever] ",
:sender_address => %{"notifier" <notifier@example.com>},
:exception_recipients => %w{exceptions@example.com}
}
答案 16 :(得分:0)
我将exception_notification配置从旧应用程序复制并粘贴到新应用程序,但失败了。
它把我带到了这里,上述答案都不是最新的。
从4.x版开始,中间件被重命名为ExceptionNotification::Rack
,
所以中间件配置看起来像这样:
Whatever::Application.config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "[Whatever] ",
:sender_address => %{"notifier" <notifier@example.com>},
:exception_recipients => %w{exceptions@example.com}
}