2014-01-21 36 views
0

我无法创建私人宝石,推送到私人git回购,然后通过:git参考在我的Gemfile中使用该宝石。Bundler未从git repo安装私人宝石

问题是,bundler(虽然没有提供任何错误)似乎并没有为我安装宝石。

我发现我可以证明这与任何宝石,不只是我的。所以我要用'colorize'gem来演示它,因为它已经在github和rubygems上,并且是一个简单的没有依赖关系的gem。下面是用宝石我test.rb文件:

require 'colorize' 
puts 'some blue text'.colorize(:blue) 

CASE(在此工作):

的Gemfile文件如下:

source 'https://rubygems.org' 
gem 'colorize' 

捆绑运行令人高兴的是,和ruby test.rb输出蓝色文字就好了。

然后运行gem uninstall colorize在下次测试前清理。

情况下,两个(失败):

现在,我改变的Gemfile这样:

#source 'https://rubygems.org' 
gem 'colorize', :git => '[email protected]:fazibear/colorize.git' 

注意,我注释掉rubygems.org线,以确保我不小心从rubygems获得宝石。

捆绑再次运行得很好,可以看到从回购获得宝石。到现在为止还挺好。但是现在,ruby test.rb失败:require cannot load 'colorize'。它似乎没有安装宝石,并且实际上,如果我运行gem uninstall colorize进行清理,则表示未安装着色!

那么我在这里做错了什么,或者不明白?我想从git仓库安装宝石,而不是rubygems,因为宝石是一个私人宝石。

感谢, - 格伦

+0

run'bundle exec。/ test.rb' –

+0

我的回答有帮助吗? –

回答

1

当然创业板未安装在第二种情况下,这是正确的,因为它已被删除。但是,当捆绑克隆一个Git回购,或使用路径键创建的宝石,它不使用Ruby的宝石实用,要知道weither创业板成功安装你刚刚运行,并查看已安装的宝石的路径:

$ bundle show colorize 
/home/user/.rvm/gems/[email protected]/gems/colorize-~.~.~ 

如果情况下,创业板安装不正确,你看壳:

Could not find gem 'colorize'. 

,将不得不再次发出bundle install和陷阱错误,如果任何。

由于捆绑不叫gem命令,不把检查了宝石从git的回购协议或GitHub的成普通宝石的拉动,以及而是创建其拉内的宝石本身,控制它。你应该使用捆绑本身运行脚本:

$ bundle exec ./test.rb 

$ bundle exec ruby test.rb 
+0

-1这不是OP所要求的,他无法安装宝石本身。 –

+0

@ ansh0l你可以阅读由作者提供的错误'“require不能加载'colorize'”',并且文本'Bundle再次运行正常,'从作者的消息?他们说安装顺利通过。所以你是不正确的。 –

+0

我不这么认为。在第二种情况下没有卸载宝石,这意味着没有安装宝石。无论如何,我会等待OP对这个问题做出回应。如果我错了,或者如果他明天不回来,我会消除我的失望。 –

1

在我看来,你的ssh连接到github上未正确设置。

按照建议的here on github尝试做ssh -T [email protected],如果配置错误,这会给你一个错误。按照链接中提到的步骤,然后再次检查,事情应该正常工作。 FWIW,我试过并能够以这种方式安装宝石。

如果您在服务器上安装此gem,请在服务器本身上运行此命令。

的替代来克服这个(配置ssh密钥的限制的每个帐户使用在:git[email protected] URL)是改为使用一个https URL(查核this thread);然而这却击败了使用SSH密钥的所有目的。