Rails Rails 服务启动的判定方法

zhangjingqiang · 2012年06月05日 · 最后由 zhangjingqiang 回复于 2012年06月05日 · 2894 次阅读

今天在日本的 QA 网看到这样一条问题:

rails server rails console

启动后的判定方法是什么?

有这样的判定方法吗?

没有明白你的意思。

我想这个问题的意思是:

如果执行了 rails server rails console 的操作,从哪里可以判断执行了。

提问者把问题补充了,我简单翻译一下:

现在在表中设置了动态的检测员作为监视对象,但是想排除 rails console 的时候监视对象。

# Migration
class CreateObserveTable < ActiveRecord::Migration
 def self.up
  create_table observe_tables do |t|
   t.string :table_name
  end
 end
end
# Fixture
ObserveTable.create{ :table_name => "users"}
ObserveTable.create{ :table_name => "user_profiles"}
# Observer
class OperationLogObserver < ActiveRecord::Observer

 if 只想在从服务器启动时执行
  observe ObserveTable.all.map{|table| table.table_name.classify.to_sym}
 end

 def after_save
  #do something
 end

end

现知道这样的判定方法

if defined?(Mongrel) or defined?(WEBrick)
  # 作为服务器的处理
else
  # 作为一个脚本处理
end

但用Passenger时,这样的做法并不起效

defined?(Passenger)

找好方法。

Module.const_defined? 可以确认 rails console 启动时加载的定没定义的类。

# 在 rails console 使用 irb 的时候
Module.const_defined? :IRB
# 在 rails console 使用 pry 的时候
Module.const_defined? :Pry

这样 rails console 执行时返回 truerails server 执行时返回 false ,可以判定。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号