标签: asset-pipeline

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

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

  # temporarily set the static assets location from public/assets to our spec directory
  ::Rails.application.assets.static_root = Rails.root.join("spec/javascripts/generated/assets")

  ::Rake.application['assets:clean'].invoke
  ::Rake.application['assets:precompile'].invoke
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Rails I18n的CSS文件

我正在尝试将我的网站国际化,有一件事是为不同的语言使用不同的字体大小.还需要替换一些文本图像.

我认为唯一的方法是在公共文件夹中添加其他特定于语言环境的CSS文件,并根据我视图中的语言环境加载它们.这可以避免资产管道编译那些特定的CSS文件.但是我想知道是否有更好的方法来做到这一点?

css ruby-on-rails internationalization ruby-on-rails-3 asset-pipeline

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

Rails 3资产管道 - 不要压缩某些javascript文件

我的资产预编译由于一个已经压缩的javascript文件(ckeditor.js)而失败,uglifier无法解析它.

由于没有真正重点压缩它两次,我想让uglifier忽略某个文件(所有其他文件都可以正常工作).

我能想到的一个解决方案是简单地将其移动到/ public并从那里引用它,但这也意味着我错过了gzip压缩和预编译为我做的指纹识别.

我的配置,以防你想知道:

  # Asset precompilation                                                                                                                                                                                 
  config.assets.digest = true                                                                                                                                                                            
  config.assets.compress = true                                                                                                                                                                          
  config.assets.compile = false                                                                                                                                                                          
  config.assets.precompile += %w{apple.css libs/modernizr-2.5.3.min.js admin/ckeditor.js}                                                                       
  config.assets.css_compressor = :yui  
Run Code Online (Sandbox Code Playgroud)

我正在使用Rails 3.2

ruby-on-rails-3 asset-pipeline

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

Rails3资产管道:控制器特定的样式表

关于资产管道的主题,Rails指南建议Rails可以通过调用以下方式链接到控制器特定的CSS文件:

stylesheet_link_tag params[:controller] 
Run Code Online (Sandbox Code Playgroud)

Rails指南的摘录:

例如,如果您生成ProjectsController,Rails还将在app/assets/javascripts/projects.js.coffee中添加一个新文件,在app/assets/stylesheets/projects.css.scss中添加另一个文件.您应该将任何JavaScript或CSS唯一的控件放在各自的资产文件中,因为这些文件可以仅为这些控制器加载,例如<%= javascript_include_tag params [:controller]%>或<%= stylesheet_link_tag params [ :controller]%>. http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline

这在我们允许Rails回归资产管道的开发中运行得很好.但是,在生产中,我收到一个错误,说样式表没有预编译.

根据我的阅读,您必须将要显示为独立文件的任何资产添加到预编译数组中,如下所示:

config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']
Run Code Online (Sandbox Code Playgroud)

如果我想要按照上面的Rails指南示例链接的控制器特定样式表,我是否必须枚举预编译数组中的每一个?

ruby-on-rails asset-pipeline

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

如何使用Rails的资产管道在JavaScript页面中嵌入JavaScript/CSS?

我正在开发一个网页,其内容完全由客户端JavaScript生成.index.html的唯一目的是引用JavaScript和CSS文档,这些文档是使用Rails的资产管道生成的.为了避免额外的请求,我想在生产中内联这些JavaScript和CSS.

如何内联使用资产管道生成的JavaScript和CSS内容?

ruby-on-rails-3 asset-pipeline

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

Rails路径助手在js.coffee.erb中不起作用

在我的Rails 3.2应用程序(Ruby 1.9)中,在Coffeescript中使用路径助手时出现以下错误.

undefined local variable or method `new_user_session_path'
Run Code Online (Sandbox Code Playgroud)

在我的部分_usermenu.html.haml工作正常:

= link_to t('user.login'), new_user_session_path
Run Code Online (Sandbox Code Playgroud)

在我的app/assets/javascripts/metamenu.js.coffee.erb中抛出错误:

$.get("<%= new_user_session_path %>")
Run Code Online (Sandbox Code Playgroud)

是不是可以在coffeescript erb中使用x_path和x_url助手?

ruby-on-rails coffeescript ruby-on-rails-3 asset-pipeline ruby-on-rails-3.2

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

防止Rails 3.2.11资产管道缓存?

我已经在Rails资产管道上阅读了很多帖子和文章以及问题和答案,但我仍然没有想出如何完全关闭缓存.

我们正在使用Rails 3.2.11并且在我们的实验室环境中(类似于开发)我们遇到了问题,因为即使我们没有在资产管道中预编译或指纹识别资产,它们仍然被缓存在Rails中(Rack ?)缓存.这很烦人,因为某些资产是基于其他配置而更改的ERB,因此缓存变得陈旧.为了尝试关闭缓存,我们设置了以下配置:

  config.action_controller.perform_caching = false

  config.assets.compress = false

  config.assets.debug = true

  # just in case
  config.cache_store = :file_store, "file_cache"
Run Code Online (Sandbox Code Playgroud)

但是,资产tmp/cache/assets无论如何都会出现.我至少会期望它们出现file_cache,但我真的希望它们不会被缓存.

我们如何防止这些资产被缓存?在这种环境下,仅仅删除缓存是不够的.

奖金问题:只要这些文件被缓存,为什么它们进入tmp/而不进入file_cache/

caching ruby-on-rails asset-pipeline ruby-on-rails-3.2

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

Ruby on Rails 4 javascript未执行

我有一个自定义js文件app/assets/javascripts.这是js文件:

//app/assets/javascripts/contacts.js
//$(document).ready(function() { //I've already tried with this method

$(window).load(function() {
    alert("foo bar")
});
Run Code Online (Sandbox Code Playgroud)

我需要contacts.js文件中的application.js文件.

如果我检查html页面,我看到正确加载了js文件,但是没有显示该消息.如果我重新加载页面(通过按f5),则正确显示该消息.

当页面加载时,加载了javascript(我可以在浏览器的源代码中看到它)但是没有执行.

你能帮助我吗?

解决方案: Rails 4:如何将$(document).ready()与turbo-links一起使用

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

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

Rails - 如何仅在某些页面上包含Javascript文件

我有一个WYSIWYG编辑器,我已在网站中内置并自定义.有许多Javascript文件只需要使用WYSIWYG编辑器加载到页面上; 目前它们被加载到每个页面上(甚至在某些页面上打破其他Javascript).

目前,Javascript文件存在assets/javascript/wysiwyg/并且不包含在需求文件中,application.js但由于资产管道(我认为),它仍然包含在每个页面中.

我想知道我是否可以从其他页面中排除这些文件.是否可以将它们从资产管道移动到public/目录并将它们(在咖啡脚本文件中,可能?)导入相应的视图中?

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

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

提供Scala.js资产

我已经开始使用FinchScala.js开发新项目,后端和前端需要共享一些代码.

我担心fastOptJSFinch 生产JS的好方法.目前,我正在使用自定义的SBT任务从中复制文件js/target/scala-2.11/*.jsjvm/src/main/resources.但我想知道是否有更好的方法来做到这一点.

我看到了很棒的SPA教程,它使用了sbt-play-scalajs插件,但它似乎只适用于Play.

scala sbt finch asset-pipeline scala.js

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