无法使用RVM从git中获取gem

时间:2016-03-16 21:46:06

标签: ruby git rubygems

我不能要求我开发一个ruby项目的自定义gem。我使用RVM。这就是我所做的:

我通过Gemfile在本地添加了gem:

gem 'my-gem', git: 'https://github.com/username/my-gem.git'

我安装了gem:

bundle
Fetching https://github.com/username/my-gem.git
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Using my-gem 0.1.0 https://github.com/username/my-gem.git (at master@dcdac02)
Using bundler 1.11.2
Bundle complete! 1 Gemfile dependency, 2 gems now installed.

我确认已安装:

bundle show my-gem
/Users/myuser/.rvm/gems/ruby-2.2.2/bundler/gems/my-gem-dcdac02a8b69

我确认了我的宝石路径:

GEM PATHS:
     - /Users/myuser/.rvm/gems/ruby-2.2.2
     - /Users/myuser/.rvm/gems/ruby-2.2.2@global

当我运行gem list时,我的宝石缺少。当我require 'my-gem'时,无法找到宝石。

当我运行gem which my-gem时,我得到:

ERROR:  Can't find ruby library file or shared library my-gem

我不确定还有什么可以尝试的。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

Rubygems没有安装git的gem的概念,因此Bundler包含了一种用于将这些路径加载到GEMPATH中的特定机制,在需要它们之前,您需要执行以下操作:

require 'bundler'
Bundler.setup

有关更多信息,请参见Bundler git gems docs

答案 1 :(得分:0)

我会确保安装的gem版本包含您期望的所有文件,尤其是lib及其内容。过去的讨论可能对您有所帮助:

gem which cannot find gem despite it being installed

答案 2 :(得分:0)

我发现了类似的问题

bundle show kubernetes_metadata_filter

/fluentd/vendor/bundle/ruby/2.3.0/bundler/gems/fluent-plugin-kubernetes_metadata_filter-0cd7e29eacec

其余的宝石都安装在这里:

/fluentd/vendor/bundle/ruby/2.3.0/gems/

请注意2.3.0 / bundler / gems / ...和2.3.0 / gems / ......之间的细微差别

棘手的解决方案: 安装捆绑软件后,我执行了以下操作:

gem install specific_install
gem specific_install -l <url to a github gem>

这可以解决问题,并将gem安装到gems目录中,而不仅仅是捆绑程序。我相信正确的解决方案是项目需要在启动时要求捆绑器,然后它也会安装捆绑器gems,但并非所有项目都非常适合该解决方案。祝你好运!