标签: asset-pipeline

如何禁用Rails 3.1 Asset Pipeline?

如何暂时禁用Rails 3.1提供的资产管道功能?(我正在进行升级)

ruby-on-rails ruby-on-rails-3.1 asset-pipeline

6
推荐指数
2
解决办法
6814
查看次数

使用Dir.glob列出Rails 3.1中的资产?

我试图/app/assets/images使用Dir.glob()命令从我的目录中的子目录中随机选择一个图像,然后用一个显示它image_tag.不知怎的,我无法让它发挥作用.

这是我的代码:

- @badges = Dir.glob("app/assets/images/badges/*")
= image_tag @badges.sample
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

ActionController::RoutingError (No route matches [GET] "/assets/app/assets/images/badges/produce.png"):
Run Code Online (Sandbox Code Playgroud)

如您所见,资产管道正在目录前插入"/ assets".好吧Rails,我会在这里见到你.接下来我尝试/app/assets从查询路径中删除以使其工作并获得以下结果:

- @badges = Dir.glob("images/badges/*")
  = image_tag @badges.sample

ActionController::RoutingError (No route matches [GET] "/assets"):
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?在此先感谢您的帮助!

ruby-on-rails-3.1 asset-pipeline

6
推荐指数
1
解决办法
2265
查看次数

Rails 3.1.1 - 资产管道 - asset.prefix无法使用资源:资产

我遇到资产管道问题,我已经有一个名为assets的资源/控制器.所以我已将assets.prefix选项更改为"/ externals".

config.assets.prefix = '/externals'
Run Code Online (Sandbox Code Playgroud)

这个简单的剂量不起作用,除非我删除:

resources: assets
Run Code Online (Sandbox Code Playgroud)

然后一切按预期工作.

我不知道如何编写测试来证明这一点,但我已经创建了一个应用程序来展示它.

https://github.com/nodrog/asset-pipeline-issue

如果你运行应用程序,并访问'/ products'都可以,那么转到routes文件并将变量create_bug更改为true.

我们查看了https://github.com/rails/rails/blob/master/actionpack/lib/sprockets/helpers/rails_helper.rb,然后在asset_path方法中添加了一个调试器.

如果你是javascript_include_tag方法中的调试器,则不调用此方法.并运行方法(:asset_path).source_location,它告诉你它是从默认路由而不是从sprockets helper调用方法.

任何帮助将不胜感激...

ruby-on-rails asset-pipeline

6
推荐指数
1
解决办法
1828
查看次数

资产预编译缺少独立的javascript/css

我有一种偷偷摸摸的感觉,我错过了一些明显的东西:

我跑了

RAILS_ENV=production bundle exec rake assets:precompile

在推送到Heroku之前预先编译我的资产.查看/public/assets显示成功编译application.jsapplication.css显示,但我的预编译文件没有预编译:

admin.js.coffee
blog.js.coffee.erb
[ ... several more similarly named ... ]
twitter.js.coffee.erb
Run Code Online (Sandbox Code Playgroud)

admin.css.less
home.css.less
public.css.less
Run Code Online (Sandbox Code Playgroud)

都缺少了/public/assets.

我认为Rails会预编译application.js/.css文件,以及其他任何不以js/css结尾的文件:

用于编译文件的默认匹配器包括application.js,application.css和所有不以js或css结尾的文件:

[ /\w+\.(?!js|css).+/, /application.(css|js)$/ ]
Run Code Online (Sandbox Code Playgroud)

来自:http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

我不想config.assets.precompile每次资产文件名更改时都手动更新.我错过了一些会让Rails预先编译这些资产的东西吗?

更新

基于以下@Richard赫尔斯的答案,我测试了它通过创建一个独立的资产单独的清单文件(即我改名twitter.js.coffee.erbtwitter-include.js.coffee.erb并添加twitter.js一个单一//= require的原改名拉).这似乎有效.

必须有比这更简洁的方法,它似乎上面引用的Rails指南相矛盾.该指南说,唯一不会编译的文件是.js或.css文件命名application.我所看到的只是直接编译.js或.css(即不通过清单) - 没有别的.

ruby-on-rails-3.1 asset-pipeline

6
推荐指数
1
解决办法
3419
查看次数

Rails 3.2.1,资产在部署时预编译了两次?

我有这个Capistrano任务:

namespace :deploy do
  task :precompile, :role => :app do
    run "cd #{release_path}/ && RAILS_ENV=staging bundle exec rake assets:precompile --trace"
  end
end

after "deploy:finalize_update", "deploy:precompile"
Run Code Online (Sandbox Code Playgroud)

我知道有,load 'deploy/assets'但我正在努力了解这里发生了什么.

我正在部署到Amazon EC2 m1.small实例,该实例显然持续50%的cpu窃取时间,经过验证top.这导致编译资产的时间增加,但看看这个:

    [23.21.xxx.xx] rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'ruby-1.9.3-p125' -c 'cd /home/ubuntu/apps/myapp-rails/releases/20120227020245/ && RAILS_ENV=staging bundle exec rake assets:precompile --trace'
 ** [out :: 23.21.xxx.xx] ** Invoke assets:precompile (first_time)
 ** [out :: 23.21.xxx.xx] ** Execute assets:precompile
 ** [out :: 23.21.xxx.xx] /home/ubuntu/.rvm/rubies/ruby-1.9.3-p125/bin/ruby /home/ubuntu/apps/myapp-rails/shared/bundle/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=staging RAILS_GROUPS=assets --trace
 ** [out :: …
Run Code Online (Sandbox Code Playgroud)

capistrano ruby-on-rails asset-pipeline

6
推荐指数
1
解决办法
5930
查看次数

在Rails中如何在使用javascript_include_tag之前检查javascript文件是否存在

在rails 3.2应用程序中,我想在将javascript_include_tag包含在文件中之前检查资产管道中是否存在javascript文件.就像是:

<% if javascript_file_exists? %>
  <%= javascript_include_tag "#{controller_name}_controller" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我想这样做,以便缺少一个javascript文件不会导致错误.有没有办法做到这一点?

ruby-on-rails-3 asset-pipeline

6
推荐指数
4
解决办法
4328
查看次数

茉莉花没有装载资产管道

我有一个茉莉花规格设置,适用于那些不在我公司的人.我想跑

rake jasmine
Run Code Online (Sandbox Code Playgroud)

但是,当规格运行时,它们都会失败.我确信资产管道没有加载,因为我得到的错误如下:

ReferenceError: jQuery is not defined
Run Code Online (Sandbox Code Playgroud)

这是我的jasmine.yml

src_files:
  - 'app/assets/javascripts/application.js'

stylesheets:
  - 'app/assets/stylesheets/application.css'
  # - assets/application.css
  # - stylesheets/**/*.css

helpers:
  - 'helpers/**/*.js'

spec_files:
  - '**/*[sS]pec.js'

# src_dir
#
# Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
# Default: project root
#
# EXAMPLE:
#
# src_dir: public
#
# src_dir: app/assets

spec_dir: spec/javascripts
Run Code Online (Sandbox Code Playgroud)

这是我的application.js

// This is a manifest file that'll be compiled into including all …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails jasmine asset-pipeline

6
推荐指数
1
解决办法
965
查看次数

Grails Asset-pipeline不加载角度局部模板

我使用带有Grails 2.3.x资产管道的angular-ui-bootstrap:1.6.1插件.其中一个组件 - alert.js正在尝试加载/template/alert/alert.html,但这会解析为404.

我试过包括grails.assets.includes = [*/ .html],没有帮助.

有什么解决方法吗?无论如何让资产管道包含部分模板?

grails asset-pipeline angularjs angular-ui-bootstrap

6
推荐指数
1
解决办法
1556
查看次数

Rails资产管道:JavaScript被执行两次

我的JavaScript正在执行两次.当我运行Chrome调试器时,我注意到单个JavaScript文件将在第一次执行代码,之后,application.js文件将再次执行代码.

我相信这种情况正在发生,因为我最近关闭了预编译,因为我遇到了Heroku的问题.在此之后,我跑了rake assets:precompile.

javascript ruby-on-rails ruby-on-rails-3 asset-pipeline turbolinks

6
推荐指数
1
解决办法
2796
查看次数

将大模板资产链接到rails erb文件的正确方法是什么?

我正在从webarch模板开始开发rails应用程序.我知道在public /文件夹中添加整个assets文件夹会将资产与我的视图链接起来,但它不会利用资产管道功能.该模板有很多插件和不同的选项,一个通常不使用所有.资源文件夹的大小为30MB.

我将它放在供应商/资产中并将其与资产管道一起使用,但这会产生两个问题:

  1. 我将提供30MB的缩小代码,并在我的应用程序中使用一小部分.
  2. 我必须手动重写整个资产文件夹,以便像资产管道所希望的那样使用链接(javascript_include_tag "file"提供file.js).当然,我会通过脚本来做到这一点,但它似乎仍然是一个人应该首先遇到的问题.

由于供应商/资产和公共/文件夹似乎都不是这些文件的正确位置,我希望有更好的选择(或者让后面的选项更好地工作).

assets ruby-on-rails asset-pipeline

6
推荐指数
1
解决办法
301
查看次数