今天在日本的 QA 网看到这样一条问题:
rails server rails console
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时,这样的做法并不起效
Passenger
defined?(Passenger)
找好方法。
用 Module.const_defined? 可以确认 rails console 启动时加载的定没定义的类。
Module.const_defined?
# 在 rails console 使用 irb 的时候 Module.const_defined? :IRB # 在 rails console 使用 pry 的时候 Module.const_defined? :Pry
这样 rails console 执行时返回 true,rails server 执行时返回 false ,可以判定。
true
false