如果定义?(ActionController)并定义?(ActionController :: Base)

时间:2015-02-12 10:58:38

标签: ruby-on-rails

它是来自rails / init.rb下act_as_audited插件1.1.1的代码片段

为什么使用此代码?欢迎任何一般性解释。

if defined?(ActionController) and defined?(ActionController::Base)

1 个答案:

答案 0 :(得分:4)

acts_as_audited旨在与普通的ActiveRecord一起使用。正如您可以在Rails之外使用ActiveRecord,例如在Sinatra应用程序中,如果宝石没有与Rails绑定,那将会很有帮助。

这正是这里发生的事情:作者试图检测它们是否在Rails下运行(或者更具体地说,如果应用程序使用ActionController进行路由,这是Rails的一部分)来加载其他特定于Rails的功能。

对于不使用ActionController(或Rails)的应用程序,gem仍然可用。

他们似乎在以后的版本中删除了此兼容层。这个,acts_as_audited的继承者(简称为audited)现在取决于Rails。