【问题标题】:warbler Gemfile path option not supported不支持莺 Gemfile 路径选项
【发布时间】:2012-07-19 00:11:48
【问题描述】:

对于不支持 Gemfile 中的路径选项的莺有推荐的解决方法吗? 路径不受支持(我不能只是实现它)有根本原因吗?

【问题讨论】:

    标签: jruby warbler


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。如果路径目录在我的项目中,那么它是可移植的,并且有一种方法可以添加对莺的支持吗?
    【解决方案2】:

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

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

    2. Monkeypatch 捆绑器,因此当它加载带有 :path 规范的 Gemfile 时,它们会被重写为指向 vendor/gems

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


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


    另外,我同意 Nick Siger 的观点,即按原样支持 :path(没有上述任何技巧)确实违背了自包含 WAR 文件的目的,但自包含 WAR 文件并不总是可取的。当然,非独立的 WAR 文件需要权衡取舍,但一个优点是体积更小、复制、解压缩等更快。当然,支持这一点需要对 JRuby-Rack 和 Warbler 进行更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-24
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2021-10-25
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多