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

时间:2017-10-09 16:31:48

标签: ruby rubygems rvm bundler gem-bundler

我正在开发一些私有宝石,我认为我无法正确理解PATH / GEM_PATH和/或Bundler / RVM安装流程,如果有人可以填写,我们会很高兴。

我有一个包含两个宝石的存储库(为简单起见,A& B)。我使用脚手架+按照this bundler tutorial提供的指南开发了宝石。

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

我的计算机使用RVM管理ruby版本和Bundler版本1.15.1

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

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

我尝试了什么:因此,在rake build/install/install:local之后,.gem下会生成一个新的pkg文件。我尝试使用gem install pkg/A.gemgem install --local pkg/A.gemgem install --local --user-install pkg/A.gem手动安装“已编译”文件但未成功。 (there are plenty of SO questions/answers about this

我认为这与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

我已经迷失和沮丧太长时间了,任何帮助都表示赞赏。也可以听取有关更好的私人宝石安装流程的建议:)

2 个答案:

答案 0 :(得分: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 ...)

答案 1 :(得分:1)

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

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

echo $GEM_HOME

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

安装宝石的地方
echo $PATH

如果没有,请把它放在你的道路上,你应该没事这样:

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