gpt4 book ai didi

ruby-on-rails - 您如何在生产之前捕获 rails Assets 管道中的错误?

转载 作者:行者123 更新时间:2023-12-04 06:27:04 25 4
gpt4 key购买 nike

我刚刚熟悉 Rails 3.1,我花了一些时间更新一个旧项目并试图弄清楚新 Assets 管道在开发模式与生产模式下的行为方式。

默认config.assets.precompile仅设置祝福 application.css application.js ,目的是所有内容都应作为单个样式表和单个 javascript 文件提供。

显然有些情况下我们不希望那样,所以我们可以在该配置变量中将项目添加到列表中......

这是我在进行生产时遇到沙箱项目的情况:

  • 浏览开发中的网站,看到一切正常。 Assets 被链接为单独的文件,站点显示正确。
  • 将站点上传到我的服务器,并尝试使其在生产中运行。第一个错误是说“ie.css”(条件样式表)没有被预编译。 (我在 Safari 中,甚至无法下载此样式表:该错误是在呈现页面之前从 stylesheet_link_tag 助手中引发的。)
  • rake assets:precompile并再次尝试。
  • 将违规项目添加到 config.assets.precompile并再次尝试。
  • 将错误踢到路边,直到遇到另一个 Assets 错误。
  • 转到 3。

  • 不知道如何解决这个问题,我转了几圈,直到我认为我获得了所有 Assets 并且网站正在生产中呈现。然后我在 MSIE 中尝试它并遇到另一个错误 500:“belated_png_fix.js”正在有条件地加载,直到那时它才出现。

    所以我的问题是,除了反复试验或严重依赖集成测试之外,当 Assets 管道发现某些样式表或 javascript 未添加到预编译列表时,我如何预测我的站点不会被炸毁?

    我也很好奇为什么缺少样式表 Assets 会导致整个页面出现 500 错误,而不是仅按需编译或在请求该 Assets 时提供 404。这是故意“过早失败”的设计吗?

    最佳答案

    我刚刚发布了一个名为 assets_precompile_enforcer 的 gem ,确保开发人员不会忘记将 Assets 添加到 config.assets.precompile在他们发展的同时。如果您通过 javascript_include_tag 包含 Assets ,则会引发异常。或 stylesheet_link_tag ,并且它与 config.assets.precompile 中的过滤器不匹配。

    这意味着 Assets 错误将在开发过程中被捕获,而不是在部署到生产后被发现。

    关于ruby-on-rails - 您如何在生产之前捕获 rails Assets 管道中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7278703/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com