Ruby Sinatra或Rack应用程序是否可以确定它是使用Apache还是Thin运行的?

Ruby Sinatra或Rack应用程序是否可以确定它是使用Apache还是Thin运行的?,ruby,sinatra,rack,Ruby,Sinatra,Rack,我正在尝试对Sinatra应用程序进行一些愚蠢的自动配置,这将允许从不同的子URI使用它,这取决于它是使用Apache和Passenger运行的,还是使用瘦web服务器运行的 所以我的问题是:是否有可能从Sinatra应用程序内部找到运行它的web服务器?您无法(据我所知)看到它是否在Apache上运行,但您可以检查它是否在Passenger上运行: if defined?(PhusionPassenger) # We are running Passenger! end 您应该能够对Th

我正在尝试对Sinatra应用程序进行一些愚蠢的自动配置,这将允许从不同的子URI使用它,这取决于它是使用Apache和Passenger运行的,还是使用瘦web服务器运行的

所以我的问题是:是否有可能从Sinatra应用程序内部找到运行它的web服务器?

您无法(据我所知)看到它是否在Apache上运行,但您可以检查它是否在Passenger上运行:

if defined?(PhusionPassenger)
  # We are running Passenger!
end
您应该能够对Thin执行相同的操作:

if defined?(Thin)
  # We are running Thin!
end
您无法(据我所知)查看它是否在Apache上运行,但您可以检查它是否在Passenger上运行:

if defined?(PhusionPassenger)
  # We are running Passenger!
end
您应该能够对Thin执行相同的操作:

if defined?(Thin)
  # We are running Thin!
end
谢谢,这个有用!(我想我试着使用
定义?
,但可能弄糟了什么)。谢谢,这很有效!(我想我试图使用
定义?
,但可能弄糟了一些东西)。