Rails Rails 服务启动的判定方法

zhangjingqiang · June 05, 2012 · Last by zhangjingqiang replied at June 05, 2012 · 2885 hits

今天在日本的 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 ,可以判定。

You need to Sign in before reply, if you don't have an account, please Sign up first.