制作红宝石--无法加载此类文件[英] Making a Ruby Gem - Cannot Load Such File

本文是小编为大家收集整理的关于制作红宝石--无法加载此类文件的处理方法,想解了制作红宝石--无法加载此类文件的问题怎么解决?制作红宝石--无法加载此类文件问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在尝试使用指示在 http://guides.rubygems.org/make-your-own-gem/.以下似乎可以正常工作,并且生成了一个 *.gem文件.

gem build mygem.gemspec

以下似乎也成功(仅在sudo sudo的情况下):

sudo gem install mygem-0.0.1.gem

但是,当我尝试在IRB内部尝试require 'mygem'时,我会收到以下错误:

LoadError: cannot load such file -- mygem

我在Stackoverflow周围看到了类似的错误,但无法弄清楚我的具体情况出了什么问题.我可以在没有问题的情况下需要其他宝石(不是我的).我的宝石确实出现在gem list的输出中,但不会加载.

fwiw我正在使用RBENV,这对我来说是全新的.

这是gem env的输出:

  • RubyGems版本:2.4.5

    • Ruby版本:2.1.5(2014-11-13 Patchlevel 273)[X86_64-DARWIN14.0]

    • 安装目录:/Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/gems/2.1.0

    • ruby​​可执行文件:/users/speersj/.rbenv/versions/2.1.5/bin/ruby

    • 可执行目录:/users/speersj/.rbenv/versions/2.1.5/bin

    • spec cache directory:/users/speersj/.gem/specs

    • 系统配置目录:/Users/speersj/.rbenv/versions/2.1.5/etc

    • RubyGems平台:

    • Ruby

    • x86_64-darwin-14

    • 宝石路径:

      • /users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0

      • /users/speersj/.gem/ruby/2.1.0

    • 宝石配置:

      • :update_sources => true

      • :verbose => true

      • :backtrace => false

      • :bulk_threshold => 1000

    • 远程资源:

    • 外壳路径:

      • /users/speersj/.rbenv/versions/2.1.5/bin

      • /users/speersj/.rbenv/libexec

      • /users/speersj/.rbenv/plugins/ruby-build/bin/bin

      • /users/speersj/.rbenv/shims

      • /users/speersj/.rbenv/bin

      • /library/frameworks/python.framework/versions/3.4/bin

      • /usr/local/bin

      • /usr/local/sbin

      • /usr/local/heroku/bin

      • /usr/local/bin

      • /usr/bin

      • /bin

      • /usr/sbin

      • /sbin

      • /usr/local/bin

      • /usr/local/smlnj/bin

Gemspec:

Gem::Specification.new do |spec|
    spec.name        = 'mygem'
    spec.version     = '0.0.1'
    spec.date        = '2015-01-05'
    spec.summary     = "mygem" 
    spec.description = "Attempting to build a gem"
    spec.authors     = ["speersj"]
    spec.email       = # my email here
    spec.files       = ['lib/command.rb', 'lib/connection.rb']
    spec.homepage    = ''
    spec.license     = 'MIT'
end

推荐答案

spec.files gemspec的条目不包括mygem.rb文件,因此构建时不会在GEM中使用该文件.本条目中仅列出的文件将包含在最终的宝石中.

最简单的解决方案就是将mygem.rb添加到数组:

spec.files = ['lib/command.rb', 'lib/connection.rb', 'lib/mygem.rb']

这是一个相当简单的修复程序,您可能想做一些更灵活的事情,例如使用 Dir glob :

spec.files = Dir['lib/**/*.rb']
实际上此(文本是​​从该部分的末尾):

如果您在宝石中添加了更多文件,请确保在发布新的宝石之前记住将它们添加到Gemspec的文件阵列中!因此(除其他原因),许多开发人员将其自动使用 hoe 珠宝商 rake rake bundler 只是一个动态的gemspec .


另外,您确实需要修复许可问题,您不需要sudo安装GEMS进入您自己的主目录.

其他推荐答案

使用RBENV(或RVM)时,您不能使用sudo安装GEM,除了"多用户"或"系统范围"类型的安装,这些装置是专门的,并且很少有什么正常/普通用户应使用.

sudo将您的特权升级为根,而root在用户的RBENV环境中不了解红宝石.结果,root将使用默认系统Ruby,该系统将在此处安装文件.

相反,使用基本gem install,它将做正确的事.

其他推荐答案

确保在构建宝石之前将所有修改后的文件添加到GitHub存储库中,然后安装构建GEM.

本文地址:https://www.itbaoku.cn/post/786705.html