我正在使用Jammit将资产打包为Rails应用程序,我有一些资产文件,我希望将其包含在几个组中.例如,我希望Sammy及其插件同时包含在我的mobile和screenJS包中.
我试过这个:
sammy: &SAMMY
- public/javascripts/vendor/sammy.js
- public/javascripts/vendor/sammy*.js
mobile:
<<: *SAMMY
- public/javascripts/something_else.js
Run Code Online (Sandbox Code Playgroud)
还有这个:
mobile:
- *SAMMY
Run Code Online (Sandbox Code Playgroud)
但两者都把Sammy JS文件放在嵌套数组中,Jammit无法理解.是否有将Array的元素直接包含在另一个Array中的语法?
注意:我意识到在这种情况下,SAMMYArray 中只有两个元素,因此在每个包中给每个元素一个别名和引用都不会太糟糕.这种情况很好,但是当有五个或十个具有特定加载顺序的元素时,很快就无法维护.
我正在努力在我的Rails 3应用程序上安装Jammit,然后部署到Heroku.
我安装了Jammit Gem,并配置了assets.yml就好了,它适用于dev.但是当我推送到heroku时,文件是404'ing.
Jammit的使用说明说:"你可以在你的Rakefile和其他脚本中轻松使用Jammit:
require 'jammit'
Jammit.package!
Run Code Online (Sandbox Code Playgroud)
我不是在关注它在哪里/如何运作.在我的网站命令中运行Jammit就像在Mac上运行会产生一个找不到的命令.
任何Jammit用户都能帮助我了解如何使用Jammit进入生产阶段?
谢谢
我有一个使用Jammit组合javascript资源的rails应用程序,我想使用Jasmine进行我的javascript的BDD风格测试.我想知道是否有人有任何关于从Jasmine访问Jammit生成的'pacakges'的建议?
问题是Jasmine是通过在磁盘上定义要测试的JS文件列表来配置的,然后它将这些文件包含在自己的测试运行器页面中,该页面在浏览器中加载和运行.
我可以在jasmine.yml配置文件中使用Jammit打包之前引用每个JS文件...但是,Jammit已经在为我处理文件之间的依赖关系了,更重要的是,我还需要访问Jammit生成的已编译的javascript模板.
我也可以先手动运行Jammit来生成编译后的资产,然后再运行Jasmine,但我不得不在每次测试运行之前手动重新生成资产以测试更改,这会严重阻碍快速测试 - 驱动型工作流程.
我想知道我能否以某种方式:
有什么建议?我刚刚开始这样做,所以我可能会把它弄错.任何建议将不胜感激.:-)
谢谢!-约翰
我正在尝试使用Jammit来打包部署在Heroku上的Rails应用程序的CSS和JS,由于Heroku的只读文件系统而无法开箱即用.我已经看到的每个如何做到这一点的例子都建议提前构建所有打包的资产文件.由于Heroku基于Git的部署,这意味着每次这些文件发生变化时,您都需要对存储库进行单独的提交,这对我来说是不可接受的解决方案.相反,我想改变Jammit用来编写缓存包的路径#{Rails.root}/tmp/assets(通过更改ActionController::Base#page_cache_directory),这在Heroku上是可写的.
我不明白的是如何使用缓存文件而不必每次都访问Rails堆栈,即使使用缓存包的默认路径也是如此.让我解释一下我的意思:
当您使用Jammit的帮助程序包含一个包时,它看起来像这样:
<%= include_javascripts :application %>
Run Code Online (Sandbox Code Playgroud)
生成此脚本标记:
<script src="/assets/application.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
当浏览器请求此URL时,实际发生的是它被路由到Jammit::Controller#package,它将包的内容呈现给浏览器,然后将缓存的副本写入#{page_cache_directory}/assets/application.js.我们的想法是,这个缓存文件是在第一个请求的基础上构建的,后续请求应直接为缓存文件提供服务,而不需要访问Rails堆栈.我查看了Jammit代码,但我看不出这是怎么发生的.什么阻止后续请求/assets/application.js简单地Jammit::Controller再次路由到从不使用缓存文件?
我的猜测是有一个Rack中间件,我没有看到它存在服务文件,如果它存在,并将请求转发给控制器,如果它没有.如果是这样的话,代码在哪里?它在改变时会如何工作ActionController::Base#page_cache_directory(有效地改变Jammit编写缓存包的位置)?由于#{Rails.root}/tmp位于公共文档根目录之上,因此没有映射到该路径的URL.
我们的Java EE项目中有很多javascript和CSS文件.我们想知道是否有一个工具可以帮助你打包(缩小)这些文件,比如Rails中的jammit工具?
例如,在JSP页面中,我想做这样的事情:
<tag:include_stylesheets :common, :workspace, :media => 'all' />
<tag:include_javascripts :workspace />
Run Code Online (Sandbox Code Playgroud)
在开发过程中,不会执行任何打包,因此您将看到所有JavaScript和CSS文件的单独引用列表.当我们打包war文件时,它会将javascript编译成单个文件(或几个文件,并且只包含使用的文件)
是否有类似JSP的工具?
jammit ×5
heroku ×2
javascript ×2
assets ×1
jasmine ×1
jsp ×1
servlets ×1
unit-testing ×1
yaml ×1