开发自定义 gem 时无法使用 Bundler 的 Rakefile 安装任务安装 gem

Can't install gem using Bundler's Rakefile install task when developing a custom gem

我正在开发几个私人 gems,我想我没有正确理解 PATH/GEM_PATH and/or Bundler/RVM 安装流程,如果有人可以凑钱。

我有一个包含两个 gem 的存储库(为简单起见,A 和 B)。我已经根据 this bundler tutorial.

提供的指南使用脚手架开发了 gems

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

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

我想做什么:假设一个新的 machine/developer 尝试这个项目,理想情况下我们会 cd 进入每个子文件夹(目前 2 , gem A 和 gem B), 运行 rake install 之后我们应该为当前用户提供 gems 在系统范围内可用。

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

我试过的: 因此,在 rake build/install/install:local 之后,在 pkg 下生成了一个新的 .gem 文件。我尝试使用 gem install pkg/A.gemgem install --local pkg/A.gemgem install --local --user-install pkg/A.gem 手动安装 "compiled" 文件,但没有成功。 ()

我相信这与 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 安装流程的建议 :)

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

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

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

用空的 gem(美食家,如该示例指南中所述)尝试过,效果很好。但是,如果您不指定 --user-install 参数,它将尝试在系统 ruby 目录中安装 (/usr/lib/ruby/gems...)

是的,跟你的PATH变量有关。您的安装似乎不错。

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

echo $GEM_HOME

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

安装到的位置
echo $PATH

如果没有,把它放在你的路径中,这样你应该没问题:

echo PATH=$PATH:$GEM_HOME >> ~/.bashrc
source ~/.bashrc