标签: asset-pipeline

向Rails 3.1资产管道添加自定义方法?

如何将我的自定义方法添加到我的资产中,例如像Rails一样使用'asset_path'帮助程序的css文件?

有了Rail自己的助手,我可以这样写:

# some.css.erb:

<%= asset_path 'a_image.png' %>

# How can I write this:

<%= my_custom_method 'a_image.png' %>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多方法但是找不到合适的方法.你知道吗?

谢谢

ruby-on-rails-3 asset-pipeline

10
推荐指数
1
解决办法
1938
查看次数

Rails 3.1.1资产管道Heroku缓存问题

简而言之,问题是在开发模式下我们会对CSS或JS文件进行更改,但总会获得这些文件的缓存/旧版本.我所做的一切都没有任何效果.我检查了几十次配置并尝试了配置值的每个组合,但始终保持得到相同的结果:过时/缓存文件.我必须实际运行在生产模式,并在每次更改后重新启动服务器进行测试.

我花了好几天在这个问题上撕扯我的头发,看了几十个关于资产管道的stackoverflow问题,但从来没有找到解决它的问题,所以我想我会把它发布给后人.

我们使用Heroku并预编译我们的资产,因为Heroku无法为我们预编译(我们也使用了设计,这显然是heroku预编译失败的原因).因此,为了将我们的预编译资产推送到Heroku,我们必须检查它们到git.

这是问题所在.

当我们升级到Rails 3.1.1资产预编译生成的文件时,无论是否有名称中的MD5哈希.我没有想太多,并继续检查所有这些文件,所以我可以推送到heroku.一段时间后,我注意到在开发模式下缓存结果的问题.没有MD5哈希的预编译和签入资产作为静态文件从/ public/assets提供,这使我们无法看到我们在/ app/assets中进行的任何更改.

终于意识到这一点后,我运行了git rm/public/assets,一切都运行了.所以外卖是:小心检查资产到git!

把这变成一个问题:其他人如何做到这一点?我错过了一些明显的东西吗 我真正喜欢的是Heroku为我预编译我的资产,但是我收集的数据库连接错误是因为设计而失败.我曾希望Rails 3.1.1修复此问题,但事实并非如此.

ruby-on-rails heroku asset-pipeline

10
推荐指数
1
解决办法
6042
查看次数

application.css不作为资产

编辑4,5和6

8个小时,欢迎任何更多的想法:)也许这个错误已经知道并解决了,但我得到了我在编辑2和3中描述的行为,当你在app/assets/stylesheets中的.css.erb文件中有这个时:

li {
    background-image: url(<%= asset_path "logo_80px_80px.png" %>);
}
Run Code Online (Sandbox Code Playgroud)

问题部分似乎是asset_path方法调用,但.css.scss也打破了它:

li {
    background-image: url(image-path("logo_80px_80px.png"));
}
Run Code Online (Sandbox Code Playgroud)

我的GemFile是:

source 'http://rubygems.org'

gem 'rails', '3.1.3'
gem 'pg', '0.11.0'
gem 'gravatar_image_tag', '1.0.0.pre2'
gem 'will_paginate'
gem 'rake'
gem 'jquery-rails'
gem 'nested_form'
gem 'acts-as-taggable-on'

gem 'sass-rails'
group :assets do
  gem 'coffee-rails', '~> 3.1.0'
  gem 'uglifier', '>= 1.0.3'
end

group :development do
  gem 'rspec-rails', '2.5.0'
  gem 'annotate', '2.4.0'
  gem 'faker', '0.3.1'
end


group :test do
  gem 'rspec', '2.5.0'
  gem 'webrat', '0.7.1'
  gem 'factory_girl_rails', '1.0'
end …
Run Code Online (Sandbox Code Playgroud)

css ruby-on-rails erb pre-compilation asset-pipeline

10
推荐指数
2
解决办法
1万
查看次数

Heroku*.js不是预编译错误

我在Heroku Cedar堆栈上使用Rails并且在编译资产时没有抛出任何问题,但后来我得到了500个内部服务器错误:

2012-06-25T23:22:59+00:00 app[web.1]: ActionView::Template::Error (bootstrap-datepicker.js isn't precompiled):
Run Code Online (Sandbox Code Playgroud)

知道可能导致这种情况的原因吗?这是我包含的javascript文件(除了我在本地下载)https://github.com/eternicode/bootstrap-datepicker/blob/master/js/bootstrap-datepicker.js

我将它包含在我的application.html.erb中,如下所示:

<%= javascript_include_tag "bootstrap-datepicker" %>
Run Code Online (Sandbox Code Playgroud)

是因为它不是coffeescript文件吗?任何帮助表示赞赏!

ruby-on-rails heroku ruby-on-rails-3 asset-pipeline cedar

10
推荐指数
1
解决办法
4212
查看次数

开发模式下的资产编译速度慢

我有一个包含数百个咖啡脚本文件的大型rails应用程序.

有时当我在coffeescript文件中进行微小更改或切换分支时,整个资产都被预编译,我必须等待很长时间才能加载页面:

Started GET "/assets/application.js" for 127.0.0.1 at 2013-01-11 19:39:45 +0100
Compiled sprockets/commonjs.js  (0ms)  (pid 18142)
Compiled jquery.js  (2ms)  (pid 18142)
Compiled jquery_ujs.js  (0ms)  (pid 18142)
Compiled underscore.js  (0ms)  (pid 18142)
Compiled backbone.js  (0ms)  (pid 18142)
Compiled backbone_rails_sync.js  (0ms)  (pid 18142)
Compiled handlebars.runtime.js  (0ms)  (pid 18142)
Compiled moment.js  (0ms)  (pid 18142)
...and so on
Run Code Online (Sandbox Code Playgroud)

我使用以下资产配置config/development.rb:

# Do not compress assets
config.assets.compress = false

# Expands the lines which load the assets
config.assets.debug = false
Run Code Online (Sandbox Code Playgroud)

当我设置时,config.assets.debug = false …

javascript ruby ruby-on-rails asset-pipeline

10
推荐指数
2
解决办法
3726
查看次数

是否有"Rails Way"包含Asset Pipeline中的jQuery插件?

许多jQuery插件具有以下目录结构:

/<plugin name>
../css
../images
../js
Run Code Online (Sandbox Code Playgroud)

CSS文件通常具有指向其中图像的相对链接.我想要做的是Rails Way在Asset Pipeline下包含这些插件,希望不需要重命名文件引用来删除相关链接.有这样的Rails方式吗?

在资产管道中包含一个已经缩小的jQuery插件是不是太过分了?

jquery-plugins ruby-on-rails-3 asset-pipeline ruby-on-rails-3.2

10
推荐指数
1
解决办法
2419
查看次数

使用rails 4资产管道找不到预编译的CSS文件

我开始使用rails并且我有一个在dev(webrick)中运行的应用程序.

问题是:在生产中找不到预编译的CSS文件.

现在我将它托管在heroku上并进行部署.我有一条消息说资产是预编译的(因此它不是编译错误),并且默认设置都是一切.

我有/ public/assets文件夹,一切都在那里.我甚cat至可以使用应用程序 - *.css文件,并获得我应该拥有的全部内容.

现在,当我尝试访问CSS文件时,它给出了一个错误404(即使它是一个自动生成的css链接使用  <%= stylesheet_link_tag "application", :media => "all" %>).因此,我确实对CSS链接进行了硬编码并不是问题.

我不确定下一次检查的执行情况.

如果您对输出感到好奇,那么目前可以在此处公开访问.

ruby-on-rails heroku asset-pipeline ruby-on-rails-4

10
推荐指数
1
解决办法
3835
查看次数

与coffeescript和Rails资产管道的JSON错误

我正在使用Rails 3.2.14而没有问题......

我最近重命名application.jsapplication.js.coffee,现在收到JSON错误.

JSON::GeneratorError

only generation of JSON objects or arrays allowed
  (in /.../app/assets/javascripts/application.js.coffee)
Run Code Online (Sandbox Code Playgroud)

即使我删除了所有内容,application.js.coffee我仍然会收到错误.

当我尝试直接查看它(http://localhost:3000/assets/application.js),它同样的问题:

throw Error("JSON::GeneratorError: only generation of JSON objects or arrays allowed\n  (in /.../app/assets/javascripts/application.js.coffee)")
Run Code Online (Sandbox Code Playgroud)

我已针对任何潜在问题梳理了我的应用程序,但一切看起来非常标准.

ruby-on-rails coffeescript asset-pipeline

10
推荐指数
2
解决办法
1920
查看次数

iCheck复选框不显示

我无法在任何浏览器中显示iCheck iCheckbox插件.

这是一个jSFiddle.iCheck依赖于jQuery 1.7+.

http://jsfiddle.net/jmj3M/2/

我没有任何选项初始化它:

$(".ex-f").iCheck();
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,如果您检查DOM,则输入元素将被iCheckbox div包装.但是,<input><ins>元素的不透明度都设置为0.

通过jQuery改变它们的不透明度,你得到这个:http://jsfiddle.net/buRq7/

不幸的是,它仍然无效.有没有人有任何建议或经验让这个工作?

我正在使用rails 4和资产管道.

编辑: 我只是意识到我没有选择库(纯JS)作为的jsfiddle框架选项,似乎即使不改变不透明度的工作(见:http://jsfiddle.net/buRq7/5/).但是,文档明确说明它依赖于jQuery(或Zepto).将框架选项切换到jQuery 1.10.1会导致iCheckbox再次无法运行...不确定为什么会这样.

checkbox jquery ruby-on-rails asset-pipeline icheck

10
推荐指数
2
解决办法
1万
查看次数

Rails 4:如何只编译已更改的资产?

对于Rails 3,这个问题turbo-sprockets-rails3看起来很棒.

对于Rails 4,似乎存在一些关于是否已经修复的争议.

我目前正在使用Rails 4,看起来因为Capistrano deploy:assets:update_asset_mtimes接触所有资产,deploy:assets:precompile同样重新编译所有资产.重新编译是我的最长步骤cap deploy.

理想情况下,这应该由一些基于校验和的清单系统替换,以便只重新编译那些实际已更改(或依赖于已更改的资产)的资产.

做这个的最好方式是什么?(假设我们仍然在服务器上进行,而不是开发机器.)

ruby-on-rails asset-pipeline ruby-on-rails-4

10
推荐指数
1
解决办法
4762
查看次数