我有一对夫妇的 gem 文件,我通过 gem install xx.gem安装。我能让 Bundler 用吗?还是必须指定源路径?
gem install xx.gem
默认情况下,Bundler 会首先检查你的系统,如果它找不到 gem,它会使用 Gemfile 中指定的源代码。
您可以使用“ bundle package”和“ bundle install —— local”强制 bundler 使用您部署的 gems
在您的开发机器上:
bundle install
(安装所需的 gem 并使 Gemfile.lock)
bundle package
(将 gem 缓存在供应商/缓存中)
在服务器上:
bundle install --local
(—— local 的意思是“使用来自供应商/缓存的 gems”)
看来 Bundler 用不了。Gem 文件开箱即用。将: 路径指向包含。Gem 文件不管用。有些人建议为此设置一个本地 gem 服务器(geminabox,stikler)。
然而,我发现使用文件系统中的本地 gem“服务器”要简单得多: 只需将您的. Gem 文件放在一个本地目录中,然后使用“ Gem gener_ index”使其成为一个 Gem 存储库
mkdir repo mkdir repo/gems cp *.gem repo/gems cd repo gem generate_index
最后,将下面的行添加到 Gemfile 中,将 bundler 指向这个位置
source "file://path/to/repo"
如果更新存储库中的 gem,请确保重新生成索引。
严格来说,这并不能回答您关于安装 .gem包的问题,但是您可以通过编辑 Gemfile来逐一指定所有类型的位置。
.gem
:path
gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
gem "foreman", git: "git://github.com/pje/foreman.git" # ...or at a specific SHA-1 ref gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c" # ...or branch gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby" # ...or tag gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"
(正如 他的评论中提到的 @ JHurrah)
我会将您的 gem 解压缩到应用程序供应商文件夹中
gem unpack your.gem --target /path_to_app/vendor/gems/
然后添加 Gemfile 上的路径来链接未包装的宝石。
gem 'your', '2.0.1', :path => 'vendor/gems/your'
我发现使用 geminabox运行我自己的 gem 服务器是最容易的
geminabox
参见 这些简单的指示。
将 .gem添加到 vendor/cache似乎是可行的。在 Gemfile中不需要任何选项。
vendor/cache
Gemfile