Rails什么时候编译CoffeeScript?

时间:2011-11-17 06:27:53

标签: javascript ruby-on-rails ruby-on-rails-3 coffeescript

Rails什么时候将Coffeescript资源编译为JavaScript?是按需还是在启动时发生?

1 个答案:

答案 0 :(得分:24)

当向包含CoffeeScript资源的视图发出请求时,CoffeeScript会根据需要编译JavaScript。

但是,您可以使用以下方法将CoffeeScript提前编译为JavaScript:

rake assets:precompile

有关Rails资产管道的更多信息,请参阅此link

从链接:

  

资产上使用的文件扩展名决定了什么   应用预处理。当生成控制器或脚手架时   使用默认的Rails gemset,CoffeeScript文件和SCSS文件   生成代替常规JavaScript和CSS文件。这个例子   之前用过的是一个名为“projects”的控制器,它生成了一个   app / assets / javascripts / projects.js.coffee和an   app / assets / stylesheets / projects.css.scss文件。

     

请求这些文件时,处理器会处理这些文件   由咖啡脚本和sass-rails宝石提供,然后送回   分别以JavaScript和CSS的形式显示在浏览器中。

...

  

在服务器之后的第一个请求上编译和缓存资产   开始了。 Sprockets设置必须重新生效的Cache-Control HTTP标头   减少后续请求的请求开销 - 关于这些请求   浏览器获得304(未修改)响应。

     

如果清单中的任何文件在请求之间发生了变化,那么   服务器以新的编译文件响应。

...

  

Rails捆绑了一个rake任务来编译资产清单   和管道中的其他文件到磁盘。

     

编译资产将写入指定的位置   config.assets.prefix。默认设置将使用公共/资产   。目录

     

您必须在部署期间或本地使用此任务   没有对生产文件系统的写访问权。

     

rake任务是:

     

捆绑exec rake资产:预编译

更新: 对于那些有兴趣预编译资产以进行开发的人,首先将RAILS_ENV变量设置为开发(来自here):

RAILS_ENV=development bundle exec rake assets:precompile