【发布时间】:2015-09-19 07:53:01
【问题描述】:
我开始在我正在开发的项目中构建一系列插件和引擎,我遇到了必须列出主应用程序和插件的所有 Gemfile 中的依赖项路径的问题/engines 如果我想让 rake 工作。
Rake 适用于主应用程序,因为它的 Gemfile 列出了我想要的插件/引擎的相对路径,但是当一个插件/引擎依赖于另一个并且没有列出所有相对路径时,使用 rake rdoc 我'会得到一个类似下面的错误(大概我会在尝试运行测试/虚拟应用程序/等时得到同样的错误):
Bundler could not find compatible versions for gem "user":
In Gemfile:
auth (>= 0) ruby depends on
user (>= 0) ruby
Could not find gem 'user (>= 0) ruby', which is required by gem 'auth (>= 0) ruby', in any of the sources.
我尝试在插件/引擎中指定 git 存储库,而不是必须使用路径:
# User engine
gem 'user', git: 'https://localhost/git/project/user.git', branch: 'master'
然后使用bundler config local.user /path/to/local/repo 命令使其指向本地存储库进行开发。这似乎工作得很好......直到我在本地仓库中更改插件的版本,然后它在任何依赖的插件/引擎/应用程序中吐出这个错误:
Could not find user-0.0.1 in any of the sources
Run `bundle install` to install missing gems.
虽然这并不是什么大问题——无论如何,版本号最终都会改变——如果你在本地仓库的一个分支上,它也会抛出以下错误主人:
Local override for user at /path/to/local/repo is using branch deleteme but Gemfile specifies master
从 Gemfile 中省略分支选项会导致我出现以下错误:
Cannot use local override for user at /path/to/local/repo because :branch is not specified in Gemfile. Specify a branch or use `bundle config --delete` to remove the local override
所以我只是坚持让, path: "../local-repo-directory" 散布在所有插件/引擎的 Gemfiles 中,在开发过程中相互依赖,或者有一种方法可以同时为 Rails 开发多个相互依赖的插件/引擎不使用真正草率/不雅的解决方案?
我正在用其他方法来做这件事,所以任何帮助都将不胜感激。我希望我已经解释得足够清楚了,但是如果还有什么我可以澄清的,请告诉我。
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby dependencies bundler ruby-on-rails-plugins