Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我的Rails代码如何判断它是在服务器(例如thin)中运行还是在rspec中运行?_Ruby On Rails_Rspec_Thin_Eventmachine_Faye - Fatal编程技术网

Ruby on rails 我的Rails代码如何判断它是在服务器(例如thin)中运行还是在rspec中运行?

Ruby on rails 我的Rails代码如何判断它是在服务器(例如thin)中运行还是在rspec中运行?,ruby-on-rails,rspec,thin,eventmachine,faye,Ruby On Rails,Rspec,Thin,Eventmachine,Faye,事实证明,瘦服务器对自己启动EventMachine反应器非常挑剔。那就好了,只是有些情况下我需要启动反应器,因为这个过程不是在稀薄的空气中进行的 因此,一个简单的问题是,我如何通过编程确定我的Rails应用程序是由瘦服务器启动的?在这种情况下,我不会启动自己的EventMachine reactor,否则我必须启动。在经历了Rails和精简初始化之后,似乎确实没有从Thin::Server渗透到应用程序实例中。这似乎意味着我无法检查我的应用程序以查看运行它的服务器 所以我只是选择检查是否定义了

事实证明,瘦服务器对自己启动EventMachine反应器非常挑剔。那就好了,只是有些情况下我需要启动反应器,因为这个过程不是在稀薄的空气中进行的


因此,一个简单的问题是,我如何通过编程确定我的Rails应用程序是由瘦服务器启动的?在这种情况下,我不会启动自己的EventMachine reactor,否则我必须启动。

在经历了Rails和精简初始化之后,似乎确实没有从
Thin::Server
渗透到
应用程序
实例中。这似乎意味着我无法检查我的应用程序以查看运行它的服务器

所以我只是选择检查是否定义了
Thin::Server
。因为我已经加载了:

gem 'thin', require: false
如果应用程序是从精简版启动的,我只需要初始化
Thin::Server
类。我已经检查了rails控制台、rake任务和延迟工作,这个假设似乎成立

因此,在my application.rb中:

# Start Faye...
config.middleware.delete Rack::Lock

thin_server = defined?(Thin::Server)

config.after_initialize do |app|
  Faye.logger = Rails.logger

  unless thin_server
    Faye.logger.debug "Ensure reactor running!"
    Faye.ensure_reactor_running!
  end
end

faye_params = {mount: '/faye', timeout: 25}
faye_params[:server] = 'thin' if thin_server

config.middleware.use FayeRails::Middleware, faye_params

如果我不使用Faye作为中间件呢?我在ELB容器中的AWS平衡器后面启动它,所以我不能将它用作中间件