- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在同时开发两个 Ruby gem,其中一个依赖于另一个。假设我的 gem 名称是“foo”和“bar”。 “bar”依赖于“foo”,所以它的 gemspec 包括:
s.add_runtime_dependency "foo", "~> 0"
# More dependencies...
还有我的 Gemfile:
source "https://rubygems.org"
gemspec
当然,现在运行 bundle install
会给我一个错误,因为“foo”放在本地文件夹中。
我不想注释掉依赖行,也不想将它指向本地文件夹,因为那将是我永远不会提交到我的 Git 存储库的本地更改.它会占用 git status
下的空间,并且会在我需要修改文件时挡路。
我希望我可以用一些环境变量来做一些技巧,让 Bundler 知道“foo”在哪里,并将其计为“已安装”。这可能吗?
最佳答案
这个技巧是使用 bundler 完成的。
假设 gem foo 依赖于 gem bar。然后在 foo 的 Gemfile 中,使用 bundler 的 path 选项指向 gem bar:
gem "bar", path: "/home/wayne/lab/bar"
然后 bundle install
之后,命令如bundle exec rspec
, bundle exec rake features
等,将使用本地文件夹中的 gem“bar”。
完成后,还原 gem "bar"
Gemfile 中的一行到它的正常形式。
如果您想永久保留对 Gemfile 的修改,您有多种选择。一种是仅通过修改将其 checkin 。根据Gemfile source priority ,Bundler 将首先尝试从本地路径加载 gem,然后回退到从全局源安装它。
如果 gem 是公开的,您的本地修改可能会使克隆您的 gem 的人感到困惑。在那种情况下,由于 Gemfile 只是 ruby 代码,您可以使用例如环境变量来打开您的位置修改:
# When making concurrent modifications to gem "bar",
# use that gem by its local directory.
if ENV['BAR_GEM_PATH']
gem "bar", path: ENV['BAR_GEM_PATH']
end
关于ruby - 如何让 Bundler 将本地 gem 视为 "already installed"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26526282/
我是一名优秀的程序员,十分优秀!