我有我的资产文件夹结构
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中实现这一目标?
什么是最简单的(有一种简单的方法吗?)在rails 3.1资产管道中使用Less(与Sass/Scss结合使用)?
我想加载像foo.css.less这样的文件,就像我为bar.css.scss做的那样
我找到了一些不适合我的解决方案(没有尝试过很多):https: //github.com/thisduck/ruby-less-js/issues/2
我们的想法是以干净的方式使用Twitter Bootstrap.提前致谢
我正在运行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,图像,一切.
有谁知道这笔交易是什么?谢谢!
如何防止Uglifier从某些文件中删除一些注释?我希望代码缩小和压缩,但我也希望许可注释保持不变.
我有一个Rails 3.1应用程序,由于某种原因,当我更改CSS时,更改不会显示.我做了bundle exec rake assets:precompile,它曾经帮助过一次,但现在我无论如何都被旧CSS所困扰.
问题
我有一个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) 我想启用从右到左的语言环境以及从左到右,但我只想维护一组样式表.
这个想法是调用application-rtl.css将服务于rtl转换版本application.css(使用r2).
此功能有两个用例:
到目前为止,我已经设法实现了一个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)
如何挂钩资产管道以便:
笔记:
转换器不能与sass引擎一起使用,但似乎工作得很少.它已被应用于基于twitter-bootstrap的网站,并且像魅力一样工作.
转换器尚未在生产中进行测试.
如果我能找到解决这个问题的合适解决方案,我打算创建并维护一个gem并将其交还给社区.
我正在使用AngularJS和Rails构建一个网站.我用于模板的HTML文件存储在/ app/assets/templates下,每次更新路径或更改模板内部嵌套部分内的内容时,我都需要"触摸"最高级别的文件.我正在改变的html文件的/ app/assets/templates目录.
因此,如果我有一个页面"edit.html"加载部分"_form.html",那么每当我更新路线或更改_form.html中的内容时,我都需要确保触及edit.html.
这很烦人,非常挑剔.有没有办法通知资产管道/链轮,以避免app/assets/templates目录的缓存?
好的,所以编译我的资产工作正常,但当我运行时:
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) 在Rails 3,作为使用资产从管道default_url中carrierwave的上传,你不喜欢的东西如下:
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在视图外获得正确的行为?
asset-pipeline ×10
sprockets ×2
carrierwave ×1
helper ×1
less ×1
production ×1
sass ×1
staging ×1