Heroku、Thin和介于它们之间的一切

10

查看日志,我的cedar应用目前使用webrick运行。显然,这不是生产应用的最佳选择。

正如网上所指出的那样,我应该使用Thin Web服务器。

但是,我仍然想在我的开发机器(Windows)上使用webrick的简洁性。

正如在Heroku cedar stack, thin and eventmachine的评论中所述,可以在windows上安装eventmachine(我也需要一些关于该gem的解释)的版本为1.0.0.beta4,但heroku不喜欢它。

  1. 如何仅在heroku上安装thin(和可能需要的eventmachine),并保留webrick以满足所有本地主机需求?

  2. 什么是eventmachine,为什么我需要它?

  3. 有没有办法明确告诉heroku忽略我的要求,使用thin?


1
为了只在生产环境中使用thin,您需要在Gemfile中声明如下:group :production do; gem 'thin'; end 并将以下内容放入Procfile中:web: bundle exec rails server thin -p $PORT,具体请参考http://devcenter.heroku.com/articles/rails3。 - taro
Heroku现在推荐生产应用程序使用Unicorn。 - Yarin
2个回答

30

在你的Gemfile中,创建或更改production组以包含thin

group :production do
  gem 'thin'  
end

然后,在您的 Procfile 中(一个名为 Procfile 并位于您的应用程序根目录中的文件),告诉 Heroku 您要使用 thin,像这样:

web: bundle exec thin start -p $PORT

这将允许你在本地开发环境中继续使用Webrick,同时在Heroku上生产运行thin


我正在使用Rails 3.2.21做完全相同的事情,但它显示:bundler: failed to load command: thin (/app/vendor/bundle/ruby/2.2.0/bin/thin) - Arslan Ali

0
为了跳过在本地机器上安装thin gem,请像这样调用bundler:
bundle install --without production

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接