为什么将生产用于轨道应用的开发

时间:2010-11-10 19:23:09

标签: ruby-on-rails mongrel

两者之间有什么重大差异吗?我还没有看到一个解释主要区别是什么的文档?性能??

3 个答案:

答案 0 :(得分:8)

“开发”和“生产”操作模式之间存在显着差异,即使两者看起来表面上相似。

在开发模式下,app/config/routes.rb中的任何文件都会随每个请求重新加载。这可能需要相当长的时间来处理,但具有基于对代码库的任何更改生成最新响应的优势,这可能是在开发环境中可能正在进行的。由于生产环境不应在部署之间更改,因此Rails将缓存您的控制器,视图,路由,帮助程序和模型以获得最佳性能。对源的任何更改都需要重新启动应用程序。

开发的另一个特性是Rails日志记录级别设置为debug,尽可能详细。您不仅可以获得每次SQL调用的详细分类,还可以获得次要警告和其他信息性消息,否则这些消息将在生产中被忽略。此日志记录对性能造成相当大的影响,除非您尝试诊断问题,否则不应在生产环境中使用。这些日志文件变得非常快,如果不重新启动Web服务器进程就很难轮换它们。

在开发环境中还有一种方法可以从异常中解救并将它们呈现为人类可读的错误报告。这对于调试很有用,但在生产环境中可能会暴露有关应用程序的敏感详细信息,因为它通常包含有关文件系统,关键参数等的大量信息。绝不应在生产站点上启用此功能。

这些差异可能并不明显,但您只需要比较config/environments/development.rbconfig/environments/production.rb中的配置设置。不幸的是,有些默认值并不明显,因为它们有时在这些文件中没有明确表达,但通常都有基础知识。

答案 1 :(得分:5)

在Rails生产环境中,您的应用程序代码被缓存,因此解释器不必在每次调用方法时重新加载您的类。您的应用程序基本上存储在内存中。这提供了明确的速度改进。

此外,默认情况下,它的记录次数要少得多;例如,生产日志不像开发日志那样包含每个sql调用。

答案 2 :(得分:2)

缓存&错误处理。