我有一堆'bootstrap'sass文件,我想/lib按照资产管道的新约定粘在我的应用程序目录中.
但是,我需要将这些导入到我application.css.scss而不是要求它们,因为我想在整个应用程序中共享一些颜色变量等.我无法找到@import从中获取.scss文件的方法/lib/assets/stylesheets.
有什么建议?
使用Rails资产管道和require.js的插件,我可以使用CoffeeScript,SASS,我喜欢组织的文件,并将它们全部编译成单个JavaScript和单个CSS文件进行生产.是否有与Django一起使用的匹配设置?它需要支持上面的CofeeeScript,SASS,Require.JS以及单独提供文件的开发模式以及将所有内容编译成单个文件的生产模式.
我有一个Rails 3.2应用程序,我正在Heroku Cedar堆栈上部署.这意味着应用程序本身负责提供其静态资产.我希望这些资产被gzip压缩,所以我插入Rack::Deflater到我的中间件堆栈中production.rb:
middleware.insert_after('Rack::Cache', Rack::Deflater)
Run Code Online (Sandbox Code Playgroud)
...并且curl告诉我这个广告的作用.
但是,由于Heroku将全力以赴地运行rake assets:precompile,生成一堆预先压缩的资产,我非常喜欢使用它们(而不是让Rack::Deflater所有的工作再次完成).我已经看到了使用nginx(没有在Heroku上使用)和CDN(不想使用CDN)的配方,但我还没有看到任何可以单独运行的东西.我已经将一个机架中间件一起攻击,但是我想知道这是否是最好的方法呢?
rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
创建像application-be2b8c92856ffacee861d9e9c2935e3e这样的新文件,但有一个名为application-c730047bc2a5cf3a706aa3a9f998ab77.css的旧文件.它将永远不会被使用.有没有办法清理变更后的资产?我不想删除所有资产目录,因为这对于所有那些未被触及的文件来说似乎有些过分(并且它在git中看起来很糟糕)
我们有一个相当大的应用程序正在使用heroku ...它是一个使用browsercms作为基础的应用程序,它建立在它之上.Gemfile并不是那么大(我们没有比普通应用程序更多的宝石),但出于某种原因,部署需要15分钟.由于所有资产,将资产编译并推送到s3(通过assetsync)大约需要5分钟,但剩余的10分钟用于此期间:
----> Heroku receiving push
-----> Removing .DS_Store files
-----> Ruby/Rails app detected
-----> Using Ruby version: ruby-1.9.3
-----> Installing dependencies using Bundler version 1.2.0
Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
Run Code Online (Sandbox Code Playgroud)
任何人都有任何线索为什么这部分需要这么长时间?gemfile锁在repo中,并推送到heroku,这里是我们的gemfile的主旨:https://gist.github.com/aa44bbb06eed97736c20
编辑:我们在轨道3.2.7
我有一个Rails应用程序.还有一个javascript(javascript1.js)文件必须包含在每个视图的最底部.我把它放到/ assets/javascripts文件夹中.Application.js包含以下代码
//= require jquery
//= require jquery_ujs
//= some other files
//= require_directory .
Run Code Online (Sandbox Code Playgroud)
即使不包括javascript1.js在Application.js,它会自动地包含,不会吧?
那我怎么能做我想要的呢?
保留了一些资产,但每次都上传了很多资产(其他的是tiny_mce文件,还有静态图像文件),即使我什么都没改变.
我在雪松堆栈上使用Heroku,以及资产同步gem的v.0.5.4.
Heroku推送日志的一部分:
Uploading: assets/logo_na.png
Uploading: assets/icons/woofunction-icons/home_32.png
Run Code Online (Sandbox Code Playgroud)
(尚未更改)
Ignoring: assets/application-2b6fe7367c39811f8bae3c83bd39e8bf.js.gz
Ignoring: assets/application-44fd5226ff0852aeecfcda68b9aa755c.css.gz
Run Code Online (Sandbox Code Playgroud)
(这些也没有改变,但被正确忽略.)
这曾经工作得很好,问题出现在我将应用程序移动到heroku欧洲堆栈后.我还添加了turbo-sprockets-rails3(0.3.6)gem,上传的内容没有任何明显差异.
因此,资产管道摘要存在一个小问题,即我们有许多HTML模板作为资产(对于AngularJS),我们使用asset_path帮助程序在Javascript文件中引用这些资产的路径.不幸的是,由于资产预编译步骤(和Heroku)检查更改的方式,对模板进行更改不会导致重新编译javascript文件.
所以基本上在像application.coffee.erb我们可能有类似的东西的文件中:
url = '<%= asset_path('views/template.html') %>'
Run Code Online (Sandbox Code Playgroud)
当我们运行时rake assets:precompile,将变为/assets/views/template-1023911231.html具有摘要值但是如果template.html.slim更改,则摘要将改变但是由于application.coffee.erb没有从根本上改变它不会被重新编译并继续指向旧的摘要.
思考?解决方案?这实际上对我来说似乎是个错误.
更新
目前我最好的解决方案是在application.rb中更新资产版本,如果我们需要更改我们的HTML模板资产但没有更改javascript.
我正在尝试使用以下命令为Rails 4.1.1应用程序编译资产,RAILS_ENV=production bundle exec rake assets:precompile但是当rails尝试编译资产时,它会给我一个错误.
错误如下所示,
$ RAILS_ENV=production bundle exec rake assets:precompile
rake aborted!
ExecJS::ProgramError: Unexpected character '#' (line: 13079, col: 0, pos: 361024)
Error
at new JS_Parse_Error (<eval>:2357:10623)
at js_error (<eval>:2357:10842)
at parse_error (<eval>:2357:12560)
at Object.next_token [as input] (<eval>:2357:17582)
at next (<eval>:2357:18881)
at semicolon (<eval>:2357:19726)
at simple_statement (<eval>:2357:22538)
at <eval>:2357:20689
at <eval>:2357:19938
at <eval>:2357:31926
at Object.parse (<eval>:2358:98)
(in /opt/rails/crj.com/app/assets/javascripts/application.js)/home/capin/.gem/ruby/2.1.0/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
/home/capin/.gem/ruby/2.1.0/gems/sprockets-rails-2.1.3/lib/sprockets/rails/task.rb:61:in `block (3 levels) in define'
/home/capin/.gem/ruby/2.1.0/gems/sprockets-rails-2.1.3/lib/sprockets/rails/task.rb:60:in `block (2 levels) in define'
V8::Error: Unexpected character '#' …Run Code Online (Sandbox Code Playgroud) 我正在使用Rails 4.2.3并尝试自定义404错误页面public/404.html.如何包含资产管道中的图像?
如何构建动态自定义错误页面有一个很好的帖子.但是,如上所述,它需要对设置进行大量更改,作为初学者,我还没准备好.我想做的就是在我的404页面中包含2个资产管道中的图像.是否有捷径可寻?