Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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应用程序使用生产过度开发_Ruby On Rails_Mongrel - Fatal编程技术网

Ruby on rails 为什么对rails应用程序使用生产过度开发

Ruby on rails 为什么对rails应用程序使用生产过度开发,ruby-on-rails,mongrel,Ruby On Rails,Mongrel,两者之间有什么主要区别吗?我还没有看到一份解释主要区别的文件?性能???缓存和错误处理。在Rails生产环境中,应用程序代码被缓存,因此解释器不必在每次调用方法时都重新加载类。你的应用程序基本上存储在内存中。这样可以明显提高速度 而且,默认情况下,它做的日志记录要少得多;例如,生产日志不像开发日志那样包含每一个sql调用。即使“开发”和“生产”操作模式表面上看起来很相似,但两者之间仍存在显著差异 在开发模式下,app/和config/routes.rb中的任何文件都会随每个请求一起重新加载。这可

两者之间有什么主要区别吗?我还没有看到一份解释主要区别的文件?性能???

缓存和错误处理。

在Rails生产环境中,应用程序代码被缓存,因此解释器不必在每次调用方法时都重新加载类。你的应用程序基本上存储在内存中。这样可以明显提高速度


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

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

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

开发的另一个特性是,Rails日志记录级别设置为
debug
,尽可能详细。您不仅可以获得每个SQL调用的详细分类,还可以获得一些小警告和其他信息性消息,这些消息在生产中可能会被忽略。这种日志记录对性能有很大的拖累,除非您试图诊断问题,否则不应在生产环境中使用。这些日志文件很快就会变大,如果不重新启动web服务器进程,就很难旋转它们

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


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

使用缓存后,性能是否有显著提高?假设我的页面不是静态的,而是在某种意义上非常动态的,这是否仍然有益?所有的应用程序代码都将在请求之间缓存,因此它们不必在每个请求上进行解析。这就是为什么您可以对文件进行更改,并在开发环境中而不是在生产环境中获得即时更改。在两种环境中加载应用程序,并比较相同请求的WebBrick输出,您将看到执行时间的差异。太好了!现在,如果我想在生产时打开调试模式,我仍然可以将其设置为调试吗?您可以在
production.rb
中调整日志记录级别,但在完成后请小心将其关闭。它以每小时多GB的速度增长并非罕见。