问题标签 [asset-pipeline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2877 浏览

ruby-on-rails - 预编译资产时如何临时更改输出路径,Sprockets / Rails 资产管道,3.1.0

我正在尝试更新此代码以使用已发布的 Rails 3.1.0:

现在 Sprockets::Environment#static_root 已被删除,临时更改 sprockets 输出目录的最佳方法是什么?

编辑:另外我希望能够清理我的自定义输出目录中的资产:)

0 投票
5 回答
19705 浏览

ruby-on-rails - 如何从模型中引用资产管道中的图像?

我有一个模型,该模型具有将 url 返回到一个人的头像的方法,如下所示:

我正在升级到 3.1,所以现在需要通过资产管道引用硬编码的无图像。在控制器或视图中,我只需将其包装在 中image_path(),但模型中没有该选项。如何生成正确的图片网址?

0 投票
14 回答
107149 浏览

ruby-on-rails - rails 3.1.0 ActionView::Template::Error(application.css 未预编译)

我用一个带有索引功能的简单页面控制器制作了一个基本的 Rails 应用程序,当我加载页面时,我得到:

宝石文件

0 投票
1 回答
713 浏览

ruby-on-rails - 我应该将现有的 Jammit 资产管道移植到新的 Rails 3.1 版本吗?

我们在 Rails 应用程序中实现了 Jammit,用于资产缓存、压缩和优化。它与我们的持续集成流程完全集成并且运行良好。也就是说,我看到 3.1 引入了一个基于 Sprockets 的新规范资产管道。

基于 Sprocket 的方法是否有值得移植我们系统的优点?如果没有好处,我不想花时间转换我们的系统。

0 投票
3 回答
31919 浏览

ruby-on-rails-3.1 - Rails 3.1 资产预编译 - 包括所有 javascript 文件

我希望 Rails 3.1 获取更多我的资产进行预编译。特别是,用于编译文件的默认匹配器不会.jsvendor/assets/javascripts. 我可以将资产添加到config.assets.precompile列表中,但这似乎很烦人。我不想在application.js清单中引用它们,因为我不希望它们包含在所有页面中。

总而言之,有什么方法可以请求.js在 中找到的所有文件vendor/assets/javascripts都由 预编译rake assets:precompile,但不将它们包含在所有页面中?

0 投票
4 回答
1898 浏览

ruby-on-rails - 在生产之前,您如何在 Rails 资产管道中发现错误?

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

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

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

这是我在投入生产时使用沙盒项目遇到的情况:

  1. 浏览了开发中的网站,发现一切正常。资产被链接为单独的文件,并且站点正确显示。
  2. 将该站点上传到我的服务器,并尝试使其在生产中运行。第一个错误是说“ie.css”(一个条件样式表)没有预编译。(我在 Safari 中,甚至不会下载此样式表:stylesheet_link_tag在呈现页面之前,该错误是从帮助程序中引发的。)
  3. rake assets:precompile了又试了一次。
  4. 将有问题的项目添加到并重config.assets.precompile试。
  5. 将错误踢到路边,直到遇到另一个资产错误。
  6. 转到 3。

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

所以我的问题是,除了反复试验或严重依赖集成测试之外,当资产管道发现某些样式表或 JavaScript 未添加到预编译列表中时,我如何预测我的网站不会崩溃?

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

0 投票
3 回答
1463 浏览

ruby-on-rails-3.1 - 为什么在启动生产服务器时没有提供图像?

我在实时服务器上有一个 Rails 3.1.0 应用程序,当它以开发模式启动时,它可以很好地服务于所有图像和 favicon.ico。

但是当在生产环境中启动同一个应用程序时,公共文件夹中的 favicon 图像/其他图像不被提供,并且它们的路径抛出 404 错误(有趣的是,404 页面的静态图像也没有提供)。任何线索Rails Gods?

我正在使用 NginX + Unicorn + Rails 3.1.0。资产管道用于除 404/500 错误页面和网站图标之外的所有内容。

0 投票
3 回答
2823 浏览

ruby-on-rails - Rails 3.1:提供未压缩资产时出现间歇性 500 内部服务器错误

我正在将应用程序升级到 Rails 3.1。经常引用,Firebug 会抱怨一些资产。以下是从 Firebug 粘贴的一些错误:

刷新页面会产生显示相同错误的不同资产。当我复制并粘贴 URL 时,我看到的文件很好。

我正在使用:

  • Ubuntu 11.04
  • 阿帕奇+乘客 3.0.9

我该如何解决?

更新:日志文件

在这个特定的例子中,jquery-ui.js在 Firebug 中显示了一个错误。我的日志文件如下所示:

好像跳过了jquery-ui.js

2011 年 10 月 1 日更新:

我对独立乘客 ( ) 进行了尝试,passenger start因为它似乎给出了更具描述性的错误。当我尝试仅加载jquery.js文件并CTRL-R反复按以刷新浏览器并反复加载该资产时,就会发生这种情况。

0 投票
4 回答
6801 浏览

ruby-on-rails-3.1 - 部署到子 URI 时,Rails 3.1 中的预编译资产损坏

我正在更新 Rails 3 应用程序以使用 Rails 3.1,作为其中的一部分,我正在使用新的资产管道。到目前为止,除了一个我无法解决的相当烦人的问题之外,我已经完成了所有工作。

该应用程序及其所有资产在开发中运行良好,但在生产中使用Passenger ( ) 将其部署到子URI http://the-host/sub-uri/。这样做的问题是资产是在部署期间预编译的,我的一个 CSS(嗯,它是一个.css.scss文件)文件正在使用gem中的image-url帮助程序。sass-rails由于在预编译过程中,路径被硬编码到预编译的 CSS 文件中,因此不考虑 sub-uri:

在我的.css.scss文件中:

编译application-<md5-hash-here>.css文件中的结果:

使它正常工作应该是什么:

这种情况是不是要求太多了?如果是这样,我将不得不切换回旧的非资产流水线方式,只提供来自public. 然而,这似乎是应该考虑和解决的事情......?我错过了解决方案吗?


编辑 1:我应该注意,使用erb 解决方案会产生相同的结果,正如人们所期望的那样。


编辑 2:回应 Benoit Garret 的评论

不,问题与config.assets.prefix. 我尝试将其设置为(/sub-uri/assets而不是默认值/assets),但事实证明这是错误的做法 - 似乎此设置已经与 Rails 应用程序的根目录相关,而不是服务器。删除它(并因此返回默认值)修复了所有导致的奇怪问题(并且有很多,所有资产最终都进入了/sub-uri/sub-uri/assets- 这一切都非常奇怪)。唯一的问题是image-urlhelper 和朋友在预编译时不会拾取 sub-URI。不用说,这是合乎逻辑的,因为当它被预编译时,它不可能知道当它在Passenger下运行时,它会这样配置。我的问题是如何通知它,从而在预编译结果中得到正确的路径。如果确实可以做到。

我当前的解决方法是像这样在 CSS 中引用 iamge:url(../images/bg.png)并将其放置在非流水线public/images位置。几乎不理想,因为它不能从指纹和管道提供的一切中受益。

0 投票
1 回答
249 浏览

ruby-on-rails - Rails 3.1 资产管道和页面刷新

每次我在浏览器中按 cmd+R (ctrl+R, F5) 时,它都会错过所有样式表和 javascript。下次我单击 cmd+R 时,它显示正常。像

这很有趣,但不是在生产中。到底是怎么回事?