热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

制作Ruby宝石-无法加载此类文件-MakingaRubyGem-CannotLoadSuchFile

ImattemptingtobuildaRubygemusingtheinstructionsathttp:guides.rubygems.orgmake-your-ow

I'm attempting to build a Ruby gem using the instructions at http://guides.rubygems.org/make-your-own-gem/. The following seems to work fine and a *.gem file is generated.

我正在尝试使用http://guides.rubygems.org/make-your-own-gem/上的说明构建Ruby gem。以下似乎工作正常,并生成* .gem文件。

gem build mygem.gemspec

The following also appears to be successful (only if prefaced with sudo):

以下似乎也是成功的(仅当以sudo开头):

sudo gem install mygem-0.0.1.gem

However, when I attempt to require 'mygem' inside irb, I get the following error:

但是,当我尝试在irb中要求'mygem'时,我收到以下错误:

LoadError: cannot load such file -- mygem

I've seen similar errors around Stackoverflow but haven't been able to figure out what's going wrong in my specific situation. I am able to require other gems (not mine) without problems. My gem does show up in the output of gem list but it will not load with require.

我在Stackoverflow上看到了类似的错误,但是在我的具体情况下无法弄清楚出了什么问题。我可以毫无问题地要求其他宝石(不是我的宝石)。我的gem确实显示在gem列表的输出中,但它不会加载require。

FWIW I am using rbenv, which is brand new to me.

FWIW我正在使用rbenv,这对我来说是全新的。

Here is the output of gem env:

这是gem env的输出:

  • RUBYGEMS VERSION: 2.4.5

    RUBYGEMS版本:2.4.5

    • RUBY VERSION: 2.1.5 (2014-11-13 patchlevel 273) [x86_64-darwin14.0]

      RUBY VERSION:2.1.5(2014-11-13 patchlevel 273)[x86_64-darwin14.0]

    • INSTALLATION DIRECTORY: /Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0

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

    • RUBY EXECUTABLE: /Users/speersj/.rbenv/versions/2.1.5/bin/ruby

      RUBY EXECUTABLE:/Users/speersj/.rbenv/versions/2.1.5/bin/ruby

    • EXECUTABLE DIRECTORY: /Users/speersj/.rbenv/versions/2.1.5/bin

      可执行的目录:/Users/speersj/.rbenv/versions/2.1.5/bin

    • SPEC CACHE DIRECTORY: /Users/speersj/.gem/specs

      SPEC CACHE目录:/Users/speersj/.gem/specs

    • SYSTEM CONFIGURATION DIRECTORY: /Users/speersj/.rbenv/versions/2.1.5/etc

      SYSTEM CONFIGURATION目录:/Users/speersj/.rbenv/versions/2.1.5/etc

    • RUBYGEMS PLATFORMS:

      RUBYGEMS PLATFORMS:

    • ruby

      红宝石

    • x86_64-darwin-14

      x86_64的-达尔文-14

    • GEM PATHS:

      创业板路径:

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

        /Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0

      • /Users/speersj/.gem/ruby/2.1.0

        /Users/speersj/.gem/ruby/2.1.0

    • GEM CONFIGURATION:

      创业板配置:

      • :update_sources => true

        :update_sources => true

      • :verbose => true

        :verbose => true

      • :backtrace => false

        :backtrace => false

      • :bulk_threshold => 1000

        :bulk_threshold => 1000

    • REMOTE SOURCES:

      远程来源:

      • https://rubygems.org/
      • https://rubygems.org/
    • SHELL PATH:

      壳路径:

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

        /Users/speersj/.rbenv/versions/2.1.5/bin

      • /Users/speersj/.rbenv/libexec

        /Users/speersj/.rbenv/libexec

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

        /Users/speersj/.rbenv/plugins/ruby-build/bin

      • /Users/speersj/.rbenv/shims

        /Users/speersj/.rbenv/shims

      • /Users/speersj/.rbenv/bin

        /Users/speersj/.rbenv/bin

      • /Library/Frameworks/Python.framework/Versions/3.4/bin

        /Library/Frameworks/Python.framework/Versions/3.4/bin

      • /usr/local/bin

        在/ usr / local / bin目录

      • /usr/local/sbin

        在/ usr / local / sbin中

      • /usr/local/heroku/bin

        在/ usr /本地/ Heroku的/ bin中

      • /usr/local/bin

        在/ usr / local / bin目录

      • /usr/bin

        在/ usr / bin中

      • /bin

        /箱

      • /usr/sbin

        / usr / sbin目录

      • /sbin

        / sbin目录

      • /usr/local/bin

        在/ usr / local / bin目录

      • /usr/local/smlnj/bin

        在/ usr /本地/ smlnj /箱

Gemspec:

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

3 个解决方案

#1


14  

The spec.files entry of your gemspec doesn’t include the mygem.rb file, so that file won‘t be in the gem when it is built. Only files listed in this entry will be included in the final gem.

gemspec的spec.files条目不包含mygem.rb文件,因此该文件在构建时不会出现在gem中。只有此条目中列出的文件才会包含在最终的gem中。

The simplest solution would be to just add mygem.rb to the array:

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

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

This is a fairly simple fix, you might want to do something more flexible like using a Dir glob:

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

spec.files = Dir['lib/**/*.rb']

In fact the Rubygems guide suggests you do something like this (text is from the end of that section):

事实上,Rubygems指南建议你做这样的事情(文本来自该部分的结尾):

If you’ve added more files to your gem, make sure to remember to add them to your gemspec’s files array before publishing a new gem! For this reason (among others), many developers automate this with Hoe, Jeweler, Rake, Bundler, or just a dynamic gemspec.

如果您已经为gem添加了更多文件,请务必记住在发布新gem之前将它们添加到gemspec的files数组中!出于这个原因(其中包括),许多开发人员使用Hoe,Jeweler,Rake,Bundler或仅仅是动态gemspec自动化。


Also, you really do need to fix your permissions problem, you shouldn’t need sudo to install gems into your own home directory.

此外,您确实需要修复权限问题,您不需要sudo将gem安装到您自己的主目录中。

#2


2  

You can't use sudo to install a gem when using rbenv (or RVM), except for the "multi-user" or "system-wide" type installations which are specialized and very seldom what normal/regular users should be using.

使用rbenv(或RVM)时,不能使用sudo来安装gem,除了“多用户”或“系统范围”类型的安装,这些安装是专门的,很少是正常/普通用户应该使用的。

sudo escalates your privileges to root, and root has no knowledge of the Rubies in a user's rbenv environment. As a result, root will use the default system Ruby, which will install the files there.

sudo将您的权限升级为root,root用户不知道用户的rbenv环境中的Rubies。因此,root将使用默认系统Ruby,它将在那里安装文件。

Instead, use a basic gem install, which will do the right thing.

相反,使用基本的gem安装,这将做正确的事情。

#3


0  

Make sure you added all modified files into github repo before build your gem And then install the build gem.

确保在构建gem之前将所有已修改的文件添加到github repo中然后安装build gem。


推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
author-avatar
一起回到我们的那个夏天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有