我不能要求我开发一个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
我不确定还有什么可以尝试的。有什么想法吗?
答案 0 :(得分:1)
Rubygems没有安装git的gem的概念,因此Bundler包含了一种用于将这些路径加载到GEMPATH中的特定机制,在需要它们之前,您需要执行以下操作:
require 'bundler'
Bundler.setup
有关更多信息,请参见Bundler git gems docs。
答案 1 :(得分:0)
我会确保安装的gem版本包含您期望的所有文件,尤其是lib
及其内容。过去的讨论可能对您有所帮助:
答案 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,但并非所有项目都非常适合该解决方案。祝你好运!