如何在gem中打包静态资产以用于Sinatra应用程序?

时间:2014-04-11 15:32:24

标签: javascript css ruby sinatra rack

假设您有一个仅包含静态文件且没有代码的gem(除了gemspec中的Ruby元数据,Rakefiles等)。静态文件是CSS,JS和图像。

现在,您希望在使用sinatra-assetpack或其他类似资产管道的Sinatra Web应用程序中使用这些资产。我们不希望这些资产成为他们所包含的每个项目的一部分,因为它们可能会发生变化,我们也不想更新N个项目。

在多个Sinatra应用程序中包含静态内容的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我这样做的方法是将静态资产添加到gem的vendor目录中。通常我会用bundle install --binstubs --path vendor设置一个项目,所以无论如何目录都在那里,我看到其他一些Rails宝石正在使用供应商,所以我把东西放在那里。它可以创建从gem库文件引用资产的路径非常长,但它仍然被宝石消费者抽象出来。

有关示例,请参阅Rack::JQuery。另外,为了不必在不断更新存储库的情况下构建哪些资产,我将版本号添加到静态文件中(您也可以使用目录执行此操作)并使用{{3}仅将当前资源添加到gem。

我已经用this line in the gemspec(和其他一些人,它变得上瘾:)完成了它,但正如你所看到的,在某些时候我选择了一种糟糕的方式命名目录,但我会坚持现在为了保持一致性。

希望有所帮助。如果你找到更好的方法,请告诉我!