Существует ли идиома jruby-on-rails для определения, работаете ли вы в Tomcat? - PullRequest
1 голос
/ 10 декабря 2011

Проверка defined?(JRUBY_VERSION) представляется наиболее идиоматичным способом определения того, работаете ли вы в jruby (см. Как я могу узнать, работаю ли я с JRuby против Ruby? , различные FOSS jrubyпроекты).Есть ли подобная идиома для определения того, работаете ли вы в Tomcat?

Ответы [ 3 ]

2 голосов
/ 10 декабря 2011

В отсутствие существующей четко установленной идиомы я собираюсь предложить defined?($servlet_context). Это будет определено в любом контейнере сервлета, не только в Tomcat, но это может быть предпочтительнее в любом случае.

0 голосов
/ 11 декабря 2011

работает как в мрт, так и в джруби

IN_TOMCAT = begin
   require 'org/apache/tomcat/InstanceManager'
   defined?(Java::org::apache::tomcat::InstanceManager)
rescue LoadError;end
0 голосов
/ 10 декабря 2011

Может быть что-то вроде:

public boolean isTomcat() {
    try {
      Class.forName("org.apache.tomcat.InstanceManager");
      return true;
    } catch (ClassNotFoundException ex) {
    return false;
  }
}
...