12

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

  • 该网站是否仍以 开头rails server
  • 与数据库的设置方式有什么不同吗?

注意:我正在运行 Rails 3。

4

2 回答 2

18

rails 应用程序可以在生产调用中运行rails server -e production,尽管 99% 的时间您将在诸如乘客或瘦身之类的东西而不是 WEBrick 上提供服务,这意味着启动服务器的命令不同。(thin start -e production例如)

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

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

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

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

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

于 2011-11-26T18:09:02.627 回答
2

您可以在两种情况下使用“生产”一词。其中之一是以生产模式运行服务器。您可以通过以下方式在本地执行此操作,

RAILS_ENV=production ./script/server 

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

另一方面,将 Rails 部署到生产环境是不同的。您需要仔细选择您的服务器。您可能要处理的部署脚本可能是 capistrano。您可能还需要一个负载平衡器,例如 netgear。数据库还可能需要深入考虑,如大小预期、主/从集群等,

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

于 2011-11-26T18:09:44.293 回答