Javascript 如何将静态资产打包到gem中,以便在Sinatra应用程序中使用?

Javascript 如何将静态资产打包到gem中,以便在Sinatra应用程序中使用?,javascript,css,ruby,sinatra,rack,Javascript,Css,Ruby,Sinatra,Rack,假设您有一个gem,它只包含静态文件,没有代码(gempec、rakefile等中的Ruby元数据除外)。静态文件是CSS、JS和图像之类的东西 现在,您希望在使用Sinatra assetpack或其他类似资产管道的Sinatra web应用程序中使用这些资产。我们不希望这些资产成为每个项目的一部分,因为它们可能会发生变化,我们不希望更新N个项目 在多个Sinatra应用程序中包含静态内容的正确方法是什么?我这样做的方法是将静态资产添加到gem的供应商目录中。通常我会用bundle insta

假设您有一个gem,它只包含静态文件,没有代码(gempec、rakefile等中的Ruby元数据除外)。静态文件是CSS、JS和图像之类的东西

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


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

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

有关示例,请参见。另外,为了不必在不断更新repo的同时对应该构建哪些资产进行pfaff,我将版本号添加到静态文件中(您也可以使用一个目录来实现),并使用仅将当前资源添加到gem中

我已经用过了(还有一些其他的,它变成了一种癖好:),但是正如你所看到的,在某些时候我选择了一种糟糕的方式来命名目录,但是为了保持一致性,我现在将坚持使用它


希望有帮助。如果你找到更好的方法,一定要让我知道

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