检查defined?(JRUBY_VERSION)
似乎是判断你是否在jruby(c.f。How can I tell if I'm running from JRuby vs. Ruby?,各种FOSS jruby项目中运行的最惯用的方式)。是否有类似的习惯用于确定您是否在Tomcat中运行?
答案 0 :(得分:2)
如果没有现成的明确成语,我将提议defined?($servlet_context)
。这将在任何 servlet容器中定义,而不仅仅是Tomcat,但无论如何这可能更合适。
答案 1 :(得分:0)
可能是这样的:
public boolean isTomcat() {
try {
Class.forName("org.apache.tomcat.InstanceManager");
return true;
} catch (ClassNotFoundException ex) {
return false;
}
}
答案 2 :(得分:0)
适用于mri和jruby
IN_TOMCAT = begin
require 'org/apache/tomcat/InstanceManager'
defined?(Java::org::apache::tomcat::InstanceManager)
rescue LoadError;end