问题标签 [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 投票
2 回答
2461 浏览

ruby-on-rails - 如何在 Rails 3.0.x 中使用 Sprockets 2(如何使用预编译资产)

我正在尝试在我的 rails 3.0 app 中复制 rails 3.1 中引入的资产管道的基础知识

到目前为止,我有这样的东西: https ://gist.github.com/1112393 。

它工作得很好:

  • 我的资产在 app/assets/、lib/assets、vendor/assets...
  • 它们都在 /assets 提供
  • 我可以使用 sprockets 2 提供的所有东西等...

问题是,我不希望 rails 应用程序提供静态资产。服务器应该这样做。这就是为什么你可以在 rails 3.1 中预编译资产,如果我理解正确的话。所以我做了一个 rake 任务(使用 Sprockets::Environment 的预编译方法)。它有效,我的所有资产都在 /public/assets/。

例如,我有

  • 应用程序-02f8c96b342b4569513d0edf39ef55eb.css
  • 应用程序-505e8f472350fb1e0d15f6ad2f5e0389.js
  • 画廊图标-0e922050a85718fef3cd570df4eb5845.png

但是在 rails 3.1 中,您可以在 style.css.scss.erb 中执行类似的操作

你会得到

在预编译文件中。

如果我没记错的话,stylesheet_link_tag 和 javascript_link_tag 也一样,它们在 rails 3.1 中被覆盖以添加散列。

我怎样才能做到这一点?

把你能想到的每一个想法都给我!谢谢。

0 投票
1 回答
1039 浏览

ruby-on-rails-3 - Heroku Cedar 堆栈和 Rails 3.1 RC5 不显示图像?

有人在 Heroku、Cedar 堆栈上运行 Rails 3.1 RC5 吗?到目前为止,一切似乎都正常,除了没有显示资产图像(如徽标、图标、main_bg 等)。

我不确定它是否与这个问题有关。

希望听到任何能够解决此问题的人的意见。

0 投票
3 回答
3744 浏览

ruby-on-rails - Rails 3.1 和 jQuery mobile:在考虑资产管道的同时组织 JS 和 CSS 的最佳方式?

我正在将我的 Rails 3.1 应用程序与 jQuery mobile(目前为 Beta 2)集成,但我不确定如何组织我的 JS 和 CSS。

我在 application.mobile.erb 的头部标签中有这个(从http://jquerymobile.com/download/复制):

我应该把我的 stylesheet_link_tag for 'application' 放在上面,这样我的 CSS 样式就不会覆盖 jQuery mobile 的精美 CSS 吗?'application' 的 javascript_include_tag 怎么样?

或者也许所有这些都应该完全分开?

我只是不确定如何组织所有这些/如果有传统的方法可以做到这一点。输入赞赏。

(如有需要,请询问更多详情。)

编辑:*我也想知道将我的移动专用 JS 和 CSS 放在哪里......

0 投票
4 回答
6277 浏览

ruby-on-rails - 如何防止 Rails 3.1 将静态资产缓存到 Rails.cache?

我在 Rails 3.1 应用程序上使用 CloudFlare CDN。Cloudflare 是一个在 DNS 级别工作的 CDN。在第一次点击静态资产时,CloudFlare 从您的应用程序加载它,然后将其缓存在他们的 CDN 中。从 CDN 而不是您的应用程序加载该资产的未来请求。

我遇到的问题是,如果您将控制器缓存设置为 true:

它启用 Rack::Cache 中间件。由于 Rails 为静态资产设置了默认缓存控制设置,因此这些资产被写入 Rails.cache 存储。结果,我的缓存存储(在我的情况下为 redis)被静态资产填充,其中 url 作为哈希键。

不幸的是,我无法在不影响 Cloudflare 和我的用户浏览器缓存资产的情况下关闭静态资产缓存控制标头。我无法关闭控制器缓存或丢失页面/动作/片段缓存。如果我删除 Rack::Cache 中间件,结果相同。

有没有人有任何其他想法?

更新:我在 GitHub 上开了一张

0 投票
3 回答
2502 浏览

ruby-on-rails-3 - 资产管道未生成 application.js application.css

不知道我做错了什么。但我得到:

这是我的配置:

在 application.rb 中:

在 app/assets/javascripts/application.js 中:

同样适用于 app/assets/stylesheets/application.css

为什么 /assets/application.[css|js] 无法生成/访问?我需要手动运行一些东西吗?还需要链轮还是现在是轨道的一部分?

0 投票
1 回答
101 浏览

ruby-on-rails - 有没有办法根据每个请求编译资产?

我有一个包含动态内容的资产的问题。例如 time.js.erb 看起来像:

我的问题是,由于我没有更改资产,因此不会编译资产,而是我得到“304 Not Modified”作为响应,并且时间变量将与上次请求中的相同。

有没有办法指示资产管道始终编译资产,至少在开发时是这样?

0 投票
1 回答
2128 浏览

ruby-on-rails - Rails 3.1:具有命名路由的资产管道

导轨 3.1.0.rc5

我无法让命名路由在启用 ERB 的 Javascript 文件中工作:

错误信息如下:

ajax_items_path如果我直接在视图中使用该路线,则该路线可以正常工作。

看起来命名路由在资产管道中不可用。如果是这种情况,解决方法是什么?我真的想避免在我的 Javascript 中对 URL 进行硬编码。

0 投票
2 回答
2774 浏览

image - Rails 3.1:动态链接到资产管道中的图像?

我有大约 500 多张以前保存在public/images/flags/public/images/flags_small/. 对于我的 Country 模型中的每个国家/地区,我存储:iso_code,它与对应的标志图像的名称相同。例如,mx.png 是墨西哥国旗的名称,因为 mx 是墨西哥的两个字母 ISO 代码。

我以前有一个帮助方法,它会根据国家的 iso 代码以及我想要大旗还是小旗来返回 html 以显示图像。

对于 Rails 3.1,为了符合资产管道,我的印象是这些图像应该进入app/assets/images文件夹。从此:

  1. 我可以在其中维护子文件夹吗?
  2. 如何使用 image_tag 显示适当的图像?

编辑:解决方案 下面的答案是正确的,但我不想每次都输入那么多代码,所以我创建了两个辅助方法:

0 投票
1 回答
1336 浏览

ruby-on-rails - 在 Rails 3.1 中仅对图像使用asset_host proc

在以前版本的 rails 中,我能够使用 proc 仅提供来自另一台服务器的图像资产:

由于新的资产管道,这似乎在 Rails 3.1 中不起作用。任何人都知道如何让这个工作?

0 投票
2 回答
4902 浏览

import - Rails 3.1 资产管道不接受对@import'd 表的更改

我使用@import'd 部分表来组织我的 css/sass:

app.css.sass有一个@import规则_layout.sass,它允许我在原始 sass 文件被编译成之前共享 mixins 和变量app.css

问题是 Rails 无法识别对@import'd partials ( )的更改,并且在我对实际文件本身进行更改之前_layout.sass不会重新生成。这大大减慢了我的工作流程,意味着我必须添加/删除空白行才能看到更改。3.0从来没有这个问题。app.cssapp.css.sassapp.css.sass

有没有办法强制 sass 资产在开发中的每个服务器请求上重新生成?