通过安装在默认的Rails应用程序rails new具有config.assets.compile = false生产.
通常的做法是rake assets:precompile在部署应用程序之前运行,以确保编译所有资产管道资产.
那么如果我config.assets.compile = true投入生产会发生什么?
我precompile不再需要跑步了.我认为会发生的是第一次请求资产时,它将被编译.这将是第一次出现性能损失(这意味着您通常需要在生产中使用js运行时才能执行此操作).但除了这些缺点之外,在资产被懒散编译之后,我认为对该资产的所有后续访问都不会受到性能影响,应用程序的性能将与初始首次命中的懒惰编译之后的预编译资产完全相同.这是真的?
有什么我想念的吗?没有投入config.assets.compile = true生产的其他原因?如果我在生产中有一个JS运行时,并且愿意为首次访问资产而采取降级性能的权衡,作为不必运行的回报precompile,这是否有意义?
如果我没有正确处理视图,生产环境显示500.
<%= image_tag post.user.image_url %>
这可能是
<%= image_tag post.user.image_url if post.user && post.user.image_url %>
但我有点不小心,多次忘记了这个问题.
我怎么能阻止这个?如何<%= image_tag nil %>在不提高500的情况下在生产环境中使用?