Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Can';t使用Bundler&x27安装gem;开发自定义gem时的Rakefile安装任务_Ruby_Rubygems_Rvm_Bundler_Gem Bundler - Fatal编程技术网

Ruby Can';t使用Bundler&x27安装gem;开发自定义gem时的Rakefile安装任务

Ruby Can';t使用Bundler&x27安装gem;开发自定义gem时的Rakefile安装任务,ruby,rubygems,rvm,bundler,gem-bundler,Ruby,Rubygems,Rvm,Bundler,Gem Bundler,我正在开发一些私人GEM,我想我没有正确理解PATH/GEM_PATH和/或Bundler/RVM安装流程,如果有人能插手,我会很高兴的 我有一个包含两个gem的存储库(为了简单起见,a和B)。我使用scaffolding+开发了gems,并遵循了由提供的指南 由于Bundler项目,我有一些Rakefile任务,如rake构建,rake安装,rake安装:本地和rake发布。由于这些宝石的私密性,我不能将它们发布给RubyGems(而且我们还没有考虑过托管我们的RubyGems) 我的机器使用

我正在开发一些私人GEM,我想我没有正确理解PATH/GEM_PATH和/或Bundler/RVM安装流程,如果有人能插手,我会很高兴的

我有一个包含两个gem的存储库(为了简单起见,a和B)。我使用scaffolding+开发了gems,并遵循了由提供的指南

由于Bundler项目,我有一些Rakefile任务,如
rake构建
rake安装
rake安装:本地
rake发布
。由于这些宝石的私密性,我不能将它们发布给RubyGems(而且我们还没有考虑过托管我们的RubyGems)

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

我想做什么:假设有一台新的机器/开发人员尝试该项目,理想情况下,我们将
cd
放入每个子文件夹(目前为2个,gema和gemb),运行
rake install
,然后我们应该为当前用户提供系统范围内的gems

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

我所尝试的:因此,在
rake build/install/install:local
之后,在
pkg
下生成一个新的
.gem
文件。我尝试使用
gem install pkg/A.gem
gem install--local pkg/A.gem
gem install--local--user install pkg/A.gem
手动安装“编译”文件,但未成功。()

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

# 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//gems/
目录中安装gem


用一个空的gem(foodie,如该示例指南中所示)尝试了一下,效果很好。但是如果您没有指定--user install参数,它将尝试在系统ruby dir中安装(/usr/lib/ruby/gems…)

是的,它与您的路径变量有关。你的安装看起来不错

我建议您首先通过以下方式确认gems安装路径:

echo $GEM_HOME
重新检查您的路径以确保其存在,并确认GEM主页也是从
rake安装

echo $PATH
如果没有,请将其放在您的路径中,您应该可以这样做:

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

尝试使用
rvm@global do gem install--local pkg/A将您的gem安装到全局gems集。gem
没有为我修复它。我运行了
rvm@global do gem install pkg/A-0.1.8.gem
,现在
gem由A
打印
/home/ubuntu/.rvm/rubies/ruby-2.4.0/bin/gem
。已安装的gems仅在每个目录中继续工作。甚至尝试从回购协议的根目录运行以下命令(未成功):
rvm@global do gem install A/pkg/A-0.1.8.gem