Ruby on rails 如何在生产之前捕获rails资产管道中的错误?
我刚刚开始熟悉Rails 3.1,我花了一些时间更新一个旧项目,并试图找出新资产管道在开发模式和生产模式下的表现 默认的Ruby on rails 如何在生产之前捕获rails资产管道中的错误?,ruby-on-rails,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails,Ruby On Rails 3.1,Asset Pipeline,我刚刚开始熟悉Rails 3.1,我花了一些时间更新一个旧项目,并试图找出新资产管道在开发模式和生产模式下的表现 默认的config.assets.precompile设置只允许application.css和application.js,目的是所有内容都应作为单个样式表和单个javascript文件使用 显然,有些情况下我们不希望这样,所以我们可以在该配置变量的列表中添加项 以下是我在投入生产时遇到的沙箱项目情况: 浏览了开发中的网站,发现一切正常。这些资源作为单独的文件链接,站点显示正确 将
config.assets.precompile
设置只允许application.css和application.js,目的是所有内容都应作为单个样式表和单个javascript文件使用
显然,有些情况下我们不希望这样,所以我们可以在该配置变量的列表中添加项
以下是我在投入生产时遇到的沙箱项目情况:
stylesheet\u link\u标记helper中引发的。)
config.assets.precompile
并重试我还很好奇,为什么缺少样式表资产会导致整个页面出现错误500,而不是在请求该资产时按需编译或提供404服务。这是故意设计的“早期失败”吗?我在rails 3.1中也遇到过类似的问题。您可以做的最好的事情是安装capistrano multi-stage并获得一个暂存服务器
如果出于任何原因,这是不可能的,请在您的计算机上安装一个虚拟机,并尝试复制您的服务器环境。这可能有些过分,但这对我来说是可行的(它为我提供了干净、已编译的资产)。我的.bash_配置文件中有这个
alias ggo='bundle exec rake assets:clean && bundle exec rake assets:precompile && git add . && git commit -m "precompile" && git push origin master && cap deploy'
这在我的config/environments/production.rb中(在需要时强制生产进行编译;如果我记得先运行“ggo”,则不需要编译):
因此,我的工作流程是:
1.代码
2.git添加和git提交
3.如果我触摸CSS/SASS/JS/CoffeeScript文件,我就会运行ggo。否则,我将执行常规的cap部署。连续部署是一件很棒的事情,您应该知道它非常简单,实际上并不那么痛苦。这就是说,
config.assets.precompile
可以使用regex,那么您可以为顶级链轮“manifest”文件提供一个标准,或者为不捆绑的东西提供一个标准子文件夹吗?(请注意,我实际上还没有尝试过……我刚刚发布了一个名为gem的gem,它确保开发人员在开发时不会忘记向config.assets.precompile
添加资产。如果您通过javascript\u include\u标记
或样式表\u link\u标记
包含资产,并且该资产与config.assets.precompile中的筛选器不匹配,则会引发异常
这意味着资产错误将在开发过程中被捕获,而不是在部署到生产环境后被发现。是的,基本上我已经这样做了。它属于“试错”的标题(当然可以通过一些集成测试实现自动化……也许没有更好的方法了。)我最近将一个旧应用程序转换为资产管道,没有任何问题。不过,我花了一段时间才弄明白一切是如何协同工作的。为了回答您的问题,您能否显示css和js文件的内容,特别是require语句?我也感兴趣的是,你是如何从视图中调用这些。最后,它们都在应用程序/资产中,还是您也在使用lib/assets和vendor/assets?这是一个有用的技巧,但问题是预编译只作用于它知道的项。诀窍在于找出从不同视图链接的资源,并确保它们被添加到列表中。
config.assets.compile = true