运行Rails站点:开发与生产

时间:2011-11-26 17:43:25

标签: ruby-on-rails dev-to-production

我正在学习Ruby on Rails。目前我只是在OS X终端中使用rails server在本地运行我的站点。 在生产工具箱上运行Rails网站时会发生什么变化?

  • 网站是否仍以rails server开始?
  • 与db的设置有何不同?

注意:我正在运行Rails 3。

2 个答案:

答案 0 :(得分:18)

rails应用程序可以在生产中运行,可以调用rails server -e production,虽然99%的时间你可以使用乘客或瘦身而不是WEBrick,这意味着有一个不同的命令来启动服务器。 (例如thin start -e production

这是一个复杂的问题,但是开始了解差异的最佳位置是查看特定的environment.rb文件。当rails启动时,它会从与被调用环境匹配的环境文件开始,即如果您在开发中启动它,则首先加载development.rb文件,或者如果您正在生产它将加载{{1}文件。环境的差异主要是各种环境配置文件中这些差异的结果。

基本上,如果Rails 3.1应用程序处于生产模式,那么默认情况下它不会动态编译资产,并且会在开发过程中发生许多缓存。此外,当您收到错误消息时,它们将被记录但不会呈现给用户,而是使用公共目录中的静态错误页面。

为了更深入地了解这一点,我建议您阅读相关的导轨指南:

Rails初始化指南:http://guides.rubyonrails.org/initialization.html

Rails配置指南:http://guides.rubyonrails.org/configuring.html

答案 1 :(得分:2)

有两种情况你可以在这里使用“生产”这个词。其中一个是在生产模式下运行服务器。您可以通过

在本地执行此操作
RAILS_ENV=production ./script/server 

从config / environments / production.rb中获取此配置。尝试将此文件与config / environments / development.rb进行比较。只有缓存类之类的细微差别。开发模式使其更容易,以便它可以立即响应您所做的任何更改。另外,如果您选择以这两种模式之一运行服务器,将使用两个不同的数据库(默认情况下),即yourproject_development和yourproject_production。

另一方面,将轨道部署到生产箱是不同的。您需要仔细选择服务器。您可能必须处理部署脚本可能是capistrano。您可能还需要负载均衡器,例如netgear。数据库也可能需要深入考虑,如大小期望,主/从群集等,

注意:我从未使用过Rails 3.这个答案偏向于2.3.x.