gpt4 book ai didi

ruby-on-rails - 让 Bundler 从 Gemfile/s 中解析并加载依赖项,在 gem/s 中加载 :path

转载 作者:太空宇宙 更新时间:2023-11-03 16:33:08 24 4
gpt4 key购买 nike

这是我目前的情况:

我正在研究 Rails 引擎 ( "awesome_engine")。我通过主机应用程序进行所有开发,即一个 Rails 应用程序,它使用 :path 参数将此引擎指定为其 Gemfile 中的依赖项

    gem "awesome_engine", :path => "awesome_engine"

这很好用——引擎 gem 文件夹位于“awesome_engine”下,相对于主机应用程序的根目录。然而,“awesome_engine”引用了一个也在开发中的 gem,“awesome_core”。 awesome_engine/Gemfile 因此读取:

    gem "awesome_common", :path => "../awesome_core"

此设置的问题似乎是 Bundler 在为主机 Rails 应用程序创建应用程序包时不会在 awesome_engine/中寻找 Gemfile,它只从“awesome_engine”的 gemspec 中读取依赖项,这对您希望在其“未打包”状态下加载的任何单个 gem,当您想要同时处理相关 gem 的图形时不太适合

我是吗

a) 尝试吃掉更多的东西,而不是咀嚼,应该在主机应用程序的 Gemfile 中转储“awesome_core”,同时它正在开发中并且对此感到满意(我不会:-))

b) 遗漏了一些关于如何让 Bundler 执行此操作的琐碎内容

c) 以上都不是(请说明:________)

谢谢!安德拉斯

ps:我知道 Bundler 不会解析“awesome_engine/Gemfile”,因为 a) 如果我在其中放入废话 bundle install 在主机应用程序中仍然运行良好 b) 该文件的其他依赖项最终都不会出现在主机应用程序中应用程序包

最佳答案

因此,当您通过(当前项目的)Gemfile 指定一个 gem 时,假定您正在引用具有明确定义的依赖项的内容。这意味着应该有一个有效的 .gemspec 文件来命名这些依赖项。但这你已经知道了。

我对 c) 的建议是使用 bundle gem 创建您的 gem,它以从 .gemspec 文件中提取 Gemfile 信息的方式设置 gem。看看http://gembundler.com/v1.2/bundle_gem.html只需生成一个测试 gem 并阅读其源代码,就很清楚了。

希望这能解决您的问题。

关于ruby-on-rails - 让 Bundler 从 Gemfile/s 中解析并加载依赖项,在 gem/s 中加载 :path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12447332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com