1

我正在开发几个私有 gem,我认为我不正确理解 PATH/GEM_PATH 和/或 Bundler/RVM 安装流程,如果有人能加入我会很高兴。

我有一个包含两个 gem 的存储库(为简单起见,A 和 B)。我已经使用脚手架 + 遵循此捆绑器教程提供的指南开发了这些 gem 。

感谢 Bundler 项目,我有一些 Rakefile 任务,例如rake build、和. 由于这些 gem 的私有性质,我无法将它们发布到 RubyGems(而且我们还没有考虑托管我们的 ruby​​gems)。rake installrake install:localrake release

我的机器正在使用 RVM 来管理 ruby​​ 版本和 Bundler 版本 1.15.1

我想要做的:假设一台新机器/开发人员尝试该项目,理想情况下我们将cd进入每个子文件夹(当前为 2,gem A 和 gem B),运行rake install,然后我们应该在系统范围内为当前用户。

发生了什么: gem 已构建并正常工作,但它们仅在每个 gem 的子文件夹中可用,即 gem A 仅在子文件夹 A 中可用,gem B 仅在子文件夹 B 中可用。

我试过rake build/install/install:local的:所以,.gempkg. 我尝试使用 手动安装“编译”文件gem install pkg/A.gemgem install --local pkg/A.gemgem install --local --user-install pkg/A.gem没有成功。(有很多关于这个的问题/答案

我相信这与 PATH 变量有关,但就像我之前所说的,我并不完全理解它们的管理方式。我从这些命令中得到以下结果:

# Our gem
> gem which A
/home/ubuntu/.rvm/gems/ruby-2.4.0/gems/A-0.1.8/lib/A.rb

# Pry, available globally
> gem which pry
/home/ubuntu/.rvm/gems/ruby-2.4.0/gems/pry-0.11.1/lib/pry.rb

我已经迷失和沮丧太久了,感谢任何帮助。也愿意听取更好的私人 gem 安装流程的建议:)

4

2 回答 2

2

是的,它与您的 PATH 变量有关。您的安装似乎很好。

我建议您首先确认您的 gems 安装路径:

echo $GEM_HOME

仔细检查您的 PATH 以确保其存在,并确认 GEM 主页也是 gem 从rake install

echo $PATH

如果没有,请将其放在您的路径中,您应该可以使用以下内容:

echo PATH=$PATH:$GEM_HOME >> ~/.bashrc
source ~/.bashrc
于 2017-10-15T11:37:06.660 回答
1

根据您链接的指南构建您的 gem。您应该最终得到一个 gem 文件。按照您认为合适的方式分发它(我使用 rsync/crontab 下载较新的 gem 版本,但一切正常)。用户可以按如下方式安装 gem:

gem install --user-install /path/to/your/file.gem

这会将 gem 安装在用户的~/.gem/ruby/<version>/gems/<your-gem-name>目录中。

用一个空的宝石(美食家,如该示例指南中所示)尝试过它,它工作正常。但是如果你没有指定 --user-install 参数,它会尝试安装在系统的 ruby​​ 目录 (/usr/lib/ruby/gems...)

于 2017-10-13T03:02:36.363 回答