如何使用rack-coffee提供静态文件

时间:2013-06-05 07:04:21

标签: javascript coffeescript sinatra rack

我使用gem rack-coffee来编译我的咖啡脚本。我也想使用jquery.js。我把它们放在同一个文件夹中,但它不起作用。 Rack-coffee也编译jquery.js,编译器抛出错误。如何在同一文件夹中使用这两种文件。

use Rack::Coffee,
  :root => File.join(Dir.pwd, 'assets'),
  :urls => '/javascripts'

2 个答案:

答案 0 :(得分:0)

机架咖啡README描述了一种方法:

  

如果您想从与coffeescript文件相同的目录中提供库存javascript文件,请在Rack :: Coffee之后将Rack :: File粘贴到中间件堆栈中。

虽然Rack::File似乎不是中间件而是独立的Rack应用类,所以我会在上面的代码之前使用Rack::Static

use Rack::Static,
  :root => File.join(Dir.pwd, 'assets'),
  :urls => ["/javascripts"]
use Rack::Coffee,
  :root => File.join(Dir.pwd, 'assets'),
  :urls => '/javascripts'

答案 1 :(得分:0)

作为替代方案,我最近wrote a gem that utilises the CDN's for jQuery。如果将其添加到中间件堆栈,则无需考虑它。

require 'rack/jquery'

use Rack::Coffee,
  :root => File.join(Dir.pwd, 'assets'),
  :urls => '/javascripts'

use Rack::JQuery # This can go before or after Rack::Coffee, it doesn't matter.

# add this to your layout's head section:
= Rack::JQuery.cdn env

该页面现在将使用Google的jQuery CDN(有关CDN的更多信息,请参阅http://jquery.com/download/),并且该库附带了一个后备脚本。