对于Gemfile中不支持路径选项的warbler,是否有推荐的解决方法?path不受支持(我不能直接实现它)有什么根本原因吗?
发布于 2012-04-02 20:48:06
路径选项不可移植。Bundler希望能够在该路径中找到代码,这在某种程度上违背了自包含war文件的目的。
一种解决方法是在基于路径的gem目录中运行"git init;git commit -a“,并将其视为基于git的gem。然后,Bundler可以签出代码的副本,Warbler可以将副本存储在war文件中。
发布于 2012-07-19 00:11:48
我(很遗憾)还不能为此发布代码,但我已经成功地完成了以下工作:
:path指定的gem复制到vendor/gems中(正常gem位置是gems/gems)。这种复制几乎与warbler从specification.vendor/gems.的方式相同,因此当它加载带有:git规范的Gemfile时,它们将被重写以指向gem
这不是很好,但我对这个解决方案非常满意。
我看到的另一个选择是创建一个vendor/gems目录,其中包含指向所有在gem文件中使用:path的gem的符号链接。Warbler会抱怨不支持:path gem,但它们会通过符号链接复制到WAR文件中。我不喜欢这个解决方案,因为您必须在Gemfile和symlink中维护:path,但它比上面的实现更容易实现。
此外,我同意Nick Siger的观点,即支持:path原样(没有上述任何技巧)确实违背了自包含WAR文件的目的,但自包含WAR文件并不总是可取的。当然,对于非自包含的WAR文件也有一些折衷,但一个优点是更小,更快地复制,解压缩等。当然,要支持这一点,需要对JRuby-Rack和Warbler进行更改。
https://stackoverflow.com/questions/9958010
复制相似问题