【问题标题】:How do you package static assets in a gem for use in Sinatra applications?如何将静态资产打包到 gem 中以用于 Sinatra 应用程序?
【发布时间】:2014-05-25 20:39:44
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否有理由为此使用 gem,而不是通过符号链接包含在程序中的单个共享资源文件夹?
  • @mcfinnigan 应用程序不一定部署到相同的物理位置。

标签: javascript css ruby sinatra rack


【解决方案1】:

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

有关示例,请参阅 Rack::JQuery。此外,为了在必须不断更新存储库的同时不必担心应该构建哪些资产,我将版本号添加到静态文件(您也可以使用目录执行此操作)并使用 this line in the gemspec仅将当前资源添加到 gem。

我已经用CSS too 完成了它(以及其他一些,它变成了一种瘾:) 但正如你所看到的,在某些时候我选择了一种糟糕的方式来命名目录,但我会坚持下去现在为了保持一致。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2014-12-19
    • 2018-05-20
    • 2015-11-15
    相关资源
    最近更新 更多