问题标签 [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.
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 中被覆盖以添加散列。
我怎样才能做到这一点?
把你能想到的每一个想法都给我!谢谢。
ruby-on-rails-3 - Heroku Cedar 堆栈和 Rails 3.1 RC5 不显示图像?
有人在 Heroku、Cedar 堆栈上运行 Rails 3.1 RC5 吗?到目前为止,一切似乎都正常,除了没有显示资产图像(如徽标、图标、main_bg 等)。
我不确定它是否与这个问题有关。
希望听到任何能够解决此问题的人的意见。
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 放在哪里......
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 上开了一张票。
ruby-on-rails-3 - 资产管道未生成 application.js application.css
不知道我做错了什么。但我得到:
这是我的配置:
在 application.rb 中:
在 app/assets/javascripts/application.js 中:
同样适用于 app/assets/stylesheets/application.css
为什么 /assets/application.[css|js] 无法生成/访问?我需要手动运行一些东西吗?还需要链轮还是现在是轨道的一部分?
ruby-on-rails - 有没有办法根据每个请求编译资产?
我有一个包含动态内容的资产的问题。例如 time.js.erb 看起来像:
我的问题是,由于我没有更改资产,因此不会编译资产,而是我得到“304 Not Modified”作为响应,并且时间变量将与上次请求中的相同。
有没有办法指示资产管道始终编译资产,至少在开发时是这样?
ruby-on-rails - Rails 3.1:具有命名路由的资产管道
导轨 3.1.0.rc5
我无法让命名路由在启用 ERB 的 Javascript 文件中工作:
错误信息如下:
ajax_items_path
如果我直接在视图中使用该路线,则该路线可以正常工作。
看起来命名路由在资产管道中不可用。如果是这种情况,解决方法是什么?我真的想避免在我的 Javascript 中对 URL 进行硬编码。
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
文件夹。从此:
- 我可以在其中维护子文件夹吗?
- 如何使用 image_tag 显示适当的图像?
编辑:解决方案 下面的答案是正确的,但我不想每次都输入那么多代码,所以我创建了两个辅助方法:
ruby-on-rails - 在 Rails 3.1 中仅对图像使用asset_host proc
在以前版本的 rails 中,我能够使用 proc 仅提供来自另一台服务器的图像资产:
由于新的资产管道,这似乎在 Rails 3.1 中不起作用。任何人都知道如何让这个工作?
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.css
app.css.sass
app.css.sass
有没有办法强制 sass 资产在开发中的每个服务器请求上重新生成?