标签: asset-pipeline

如何在rails 3.1中显示控制器特定的javascript?

我有我的资产文件夹结构

assets
  javascripts
    products
      --product.js
      --productValidate.js
    store
      --store.js
Run Code Online (Sandbox Code Playgroud)

我希望将project.js和projectValidate.js添加到我的application.js中,作为资产管道的一部分,仅当调用产品控制器中的操作时,并且当调用存储控制器中的操作时将存储为store.js.我怎样才能在rails 3.1中实现这一目标?

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

9
推荐指数
1
解决办法
3593
查看次数

如何在rails 3.1应用程序中使用Less?

什么是最简单的(有一种简单的方法吗?)在rails 3.1资产管道中使用Less(与Sass/Scss结合使用)?

我想加载像foo.css.less这样的文件,就像我为bar.css.scss做的那样

我找到了一些不适合我的解决方案(没有尝试过很多):https: //github.com/thisduck/ruby-less-js/issues/2

我们的想法是以干净的方式使用Twitter Bootstrap.提前致谢

sass less ruby-on-rails-3.1 asset-pipeline

9
推荐指数
2
解决办法
9091
查看次数

Raging上的资产管道:正确的指纹,但404ing

我正在运行Rails 3.1.3,其中包括Sprockets 2.0.3作为依赖项.

我按照Rails指南为生产建议的方式设置我的暂存环境.

config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)

我已经加入了我的Capfile

load 'deploy'
load 'deploy/assets'
Run Code Online (Sandbox Code Playgroud)

资产在部署时按预期进行预编译.

在公共/资产中,我发现资产符合预期的指纹.

application-bd402855d34fb61e0a1690da06f79f20.js
application-bd402855d34fb61e0a1690da06f79f20.js.gz
application-ed3f9a8d23992790841c11b6692fb576.css
application-ed3f9a8d23992790841c11b6692fb576.css.gz
...and a bunch of images...
Run Code Online (Sandbox Code Playgroud)

当我加载页面时,我看到正确的引用,指纹和所有.

<link href="/assets/application-ed3f9a8d23992790841c11b6692fb576.css" media="screen" rel="stylesheet" type="text/css">
<script src="/assets/application-bd402855d34fb61e0a1690da06f79f20.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

然而,一切404s,css,js,图像,一切.

有谁知道这笔交易是什么?谢谢!

production ruby-on-rails staging sprockets asset-pipeline

9
推荐指数
1
解决办法
2757
查看次数

Rails资产 - 保留许可证评论

如何防止Uglifier从某些文件中删除一些注释?我希望代码缩小和压缩,但我也希望许可注释保持不变.

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

9
推荐指数
1
解决办法
1361
查看次数

Rails资产不会更新

我有一个Rails 3.1应用程序,由于某种原因,当我更改CSS时,更改不会显示.我做了bundle exec rake assets:precompile,它曾经帮助过一次,但现在我无论如何都被旧CSS所困扰.

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

9
推荐指数
3
解决办法
1万
查看次数

Rails 3.1资产无法解决

问题

我有一个Rails 3.0.4应用程序,我按照Railscast视频的说明升级到3.1.4 :"升级到rails 3.1".

现在我遇到资产问题,因为它们没有解决,在服务器日志中给出消息,如下所示:

Started GET "/assets/application.css" for 127.0.0.1 at 2012-04-08 03:57:13 -0500
Served asset /application.css - 404 Not Found (15ms)

ActionController::RoutingError (No route matches [GET] "/assets/application.css"):
Rendered /usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (14.3ms)

Started GET "/assets/application.js" for 127.0.0.1 at 2012-04-08 03:57:13 -0500
Served asset /application.js - 404 Not Found (35ms)

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

这些文件在assets目录中:

$ ls app/assets/*/application*
app/assets/javascripts/application.js   app/assets/stylesheets/application.css
Run Code Online (Sandbox Code Playgroud)

并包含这个:

$ cat app/assets/javascripts/application.js
//= require jquery
//= …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3.1 asset-pipeline

9
推荐指数
1
解决办法
8606
查看次数

使用rails资产管道维护RTL版本的样式表

背景

我想启用从右到左的语言环境以及从左到右,但我只想维护一组样式表.

这个想法是调用application-rtl.css将服务于rtl转换版本application.css(使用r2).

此功能有两个用例:

  • 开发:动态提供,即时转换
  • 生产:预编译生成-rtl版本(扩展rake资产:预编译任务)

到目前为止,我已经设法实现了一个RTLConverter,使我可以将所有转换为RTL的样式表服务,而不必触及它们:

配置/初始化/ rtl_converter.rb:

require "r2"
require "tilt"

class RTLConverter < Tilt::Template
  def prepare; end

  def evaluate(context, locals, &block)
    R2.r2 @data
  end
end

Rails.application.assets.register_preprocessor 'text/css', RTLConverter
Run Code Online (Sandbox Code Playgroud)

您还可以将其实现为sprockets的引擎,以仅转换具有.rtl扩展名的文件:

Rails.application.assets.register_engine 'rtl', RTLConverter
Run Code Online (Sandbox Code Playgroud)

我的问题

如何挂钩资产管道以便:

  1. 使用名称后缀'-rtl'提供任何样式表的动态转换版本(查找没有后缀的文件并提供转换后的版本)?
  2. 在预编译期间使用所有样式表的名称后缀"-rtl"创建转换后的副本

笔记:

转换器不能与sass引擎一起使用,但似乎工作得很少.它已被应用于基于twitter-bootstrap的网站,并且像魅力一样工作.

转换器尚未在生产中进行测试.

如果我能找到解决这个问题的合适解决方案,我打算创建并维护一个gem并将其交还给社区.

ruby-on-rails right-to-left sprockets asset-pipeline

9
推荐指数
2
解决办法
1341
查看次数

Rails资产管道中的静态html模板文件和开发模式下的缓存

我正在使用AngularJS和Rails构建一个网站.我用于模板的HTML文件存储在/ app/assets/templates下,每次更新路径或更改模板内部嵌套部分内的内容时,我都需要"触摸"最高级别的文件.我正在改变的html文件的/ app/assets/templates目录.

因此,如果我有一个页面"edit.html"加载部分"_form.html",那么每当我更新路线或更改_form.html中的内容时,我都需要确保触及edit.html.

这很烦人,非常挑剔.有没有办法通知资产管道/链轮,以避免app/assets/templates目录的缓存?

ruby-on-rails asset-pipeline

9
推荐指数
2
解决办法
8942
查看次数

资产预编译好,但尝试获取文件时为404

好的,所以编译我的资产工作正常,但当我运行时:

thin start -e production

我的javascript或css都没有加载.我的浏览器也取消了获取资产的请求.我不确定为什么会这样,但我怀疑它是因为它认为它是404'.如果您查看顶部图像,您将看到我的application.css文件已编译并存储在我的assets文件夹中,但当我尝试访问该文件时,我收到了我的404.html文件.

是什么赋予了!?

在此输入图像描述

在此输入图像描述

编辑:

我被要求发表我的观点.以下是项目中的一些代码:

<% content_for :title, 'Quick Quote' %>
<% content_for :subtotal, get_subtotal %>
<% content_for :stylesheet_includes do %>
  <%= stylesheet_link_tag "quote", "jquery-ui-timepicker-addon" %>
<% end %>
<% if @quote.errors.any? %>
  <div class="flash alert">
  <% @quote.errors.full_messages.each do |msg| %>
    <div><%= msg %></div>
  <% end %>
  </div>
<% end %>
<h1>Quick Quote</h1>
Run Code Online (Sandbox Code Playgroud)

我的布局:

<!DOCTYPE html>
<html>
<head>
  <title><%= (yield(:title) + " - " unless yield(:title).blank?).to_s + "Online Scheduler Order Taker" %></title>
  <%= stylesheet_link_tag    "application", "jquery-ui-timepicker-addon.css", …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails asset-pipeline

9
推荐指数
2
解决办法
6185
查看次数

如何在rails4中为default_url使用摘要感知资产?

在Rails 3,作为使用资产从管道default_urlcarrierwave的上传,你不喜欢的东西如下:

class MyUploader
  # Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
  include Sprockets::Helpers::RailsHelper
  include Sprockets::Helpers::IsolatedHelper

  def default_url
    # For Rails 3.1+ asset pipeline compatibility:
    asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
  end
end
Run Code Online (Sandbox Code Playgroud)

在导轨4中,管道被抽象到sprockets-rails gem/railtie中,因此上面的内容将为您提供:

未初始化的常量链轮::助手

看看sprockets-rails gem,替换助手似乎就是这样Sprockets::Rails::Helper.但是包含这个模块,asset_path("fallback/default.png")返回,简单地说:

# wrong:
"/fallback/default.png"
Run Code Online (Sandbox Code Playgroud)

不是我期望的资产和摘要感知网址:

"/assets/fallback/default-b3beee1588afe2ae582c64888cd007db.png"
Run Code Online (Sandbox Code Playgroud)

如何asset_path在视图外获得正确的行为?

helper carrierwave asset-pipeline ruby-on-rails-4

9
推荐指数
1
解决办法
3003
查看次数