如何判断rails是否在Web服务器下运行,而不是脚本或irb?
对于上下文:我正在跟踪ActiveRecord对象,如果对象发生更改,我希望通过电子邮件发送警报,但仅当通过Web界面进行更改时。
答案 0 :(得分:4)
我的应用程序的任务是在专门作为服务器启动之前执行几次启动检查。在我的特定情况下,我想确保数据库中存在特殊的User
记录,因为对我的应用程序进行的API调用需要User
。
我在其中一个负责启动检查的初始化程序中使用了以下hack:
if defined? Rails::Server
puts "Running as a server..."
# Perform checks here...
end
答案 1 :(得分:0)
也许我错过了一些显而易见的事情但是,如果您的模型访问是通过控制器接口(即某些操作)发生的,那么根据定义,通过Web界面进行访问?
Rails不在irb下运行。是的,您可以访问console
下的对象和状态,但这不是Web服务器访问。
我认为您只需要在控制器中设置一些过滤器来实现您感兴趣的模型的跟踪逻辑,然后您就可以区分一般访问和Web服务器访问(由控制器启动)。
有意义吗?
答案 2 :(得分:-1)