warbler Gemfile路径选项不受支持

时间:2012-03-31 17:18:29

标签: jruby warbler

对于warbler是否有建议的解决方法不支持Gemfile中的路径选项? 是否有一个根本原因,为什么不支持路径(我不能只实现它)?

2 个答案:

答案 0 :(得分:2)

路径选项不可移植。 Bundler希望能够在该路径中找到代码,这有点会破坏自包含战争文件的目的。

解决方法是在基于路径的gem的目录中运行“git init; git commit -a”,并将其视为基于git的gem。然后Bundler可以查看代码的副本,Warbler可以将副本存储在war文件中。

答案 1 :(得分:0)

我(很遗憾)无法为此发布代码(但是......),但我已成功完成以下操作:

  1. Hack warbler(基本上替换整个bundler gem包装代码)将:path指定的gems复制到vendor/gems(普通gem位置为gems/gems)。这种复制几乎与莺从:git规范中复制宝石的方式完全相同。

  2. Monkeypatch bundler所以当它加载Gemfile :path规格时,它们会被重写为指向vendor/gems

  3. 它不漂亮,但我对这个解决方案非常满意。


    我看到的另一个选项是创建一个vendor/gems目录,其中包含在Gemfile中使用:path的所有gem的符号链接。 Warbler会抱怨不支持:path宝石,但它们将通过符号链接复制到WAR文件中。我不喜欢这个解决方案,因为你必须在Gemfile和符号链接中维护:path,但它比上面的更容易实现。


    另外,我同意Nick Siger的说法,支持:path原样(没有任何上述黑客攻击)确实会破坏自包含WAR文件的目的,但是自包含的WAR文件并不总是如此可取的。当然,对于非自包含的WAR文件存在权衡,但一个优点是尺寸更小,复制更快,解压缩等。当然,支持这一点需要更改JRuby-Rack以及Warbler。

相关问题