制作 Ruby Gem - 无法加载此类文件

2024-01-21

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

gem build mygem.gemspec

以下内容似乎也成功(仅当以sudo):

sudo gem install mygem-0.0.1.gem

然而,当我尝试require 'mygem'在 irb 内,我收到以下错误:

LoadError: cannot load such file -- mygem

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

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

这是输出gem env:

  • 红宝石版本:2.4.5

    • Ruby 版本:2.1.5(2014-11-13 补丁级别 273)[x86_64-darwin14.0]

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

    • Ruby 可执行文件:/Users/speersj/.rbenv/versions/2.1.5/bin/ruby

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

    • 规格缓存目录:/Users/speersj/.gem/specs

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

    • 红宝石平台:

    • ruby

    • x86_64-达尔文-14

    • 宝石路径:

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

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

    • 宝石配置:

      • :update_sources => true

      • :详细 => 正确

      • :回溯=>假

      • :bulk_threshold => 1000

    • 远程来源:

      • https://rubygems.org/ https://rubygems.org/
    • 外壳路径:

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

      • /用户/speersj/.rbenv/libexec

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

      • /用户/speersj/.rbenv/shims

      • /用户/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

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

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

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

这是一个相当简单的修复,您可能想做一些更灵活的事情,例如使用Dir glob http://ruby-doc.org/core-2.2.0/Dir.html#method-c-5B-5D:

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

事实上Rubygems 指南建议你这样做 http://guides.rubygems.org/make-your-own-gem/#requiring-more-files/(文本来自该部分的末尾):

如果您向 gem 添加了更多文件,请务必记住在发布新 gem 之前将它们添加到 gemspec 的文件数组中!由于这个原因(除其他外),许多开发人员使用以下方法自动执行此操作Hoe https://github.com/seattlerb/hoe, Jeweler https://github.com/technicalpickles/jeweler, Rake https://github.com/jimweirich/rake, Bundler http://railscasts.com/episodes/245-new-gem-with-bundler, or 只是一个动态 gemspec https://github.com/wycats/newgem-template/blob/master/newgem.gemspec.


另外,你确实需要修复你的权限问题 https://stackoverflow.com/a/27793163/214790,你不应该需要sudo将 gems 安装到您自己的主目录中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

制作 Ruby Gem - 无法加载此类文件 的相关文章

  • Rails 4 ExecJS::Listings#index 中的程序错误

    将 JavaScript 添加到我的网络应用程序后 我现在收到以下错误 ExecJS ProgramError in Listings index stdin 16 5 error unexpected else else in Users
  • Riod-iOS 错误:您没有写入权限“Gem::FilePermissionError”

    我已经下载了一个Riot iOS https github com vector im riot ios并遵循构建说明 当我跑步时 捆绑安装 回溯 最近一次调用 2 来自 usr bin bundle 23 in
  • 在 Ruby 中创建带有静态页面的博客的最佳方法

    我刚刚访问了静态网站生成 http www ruby toolbox com categories static website generation html on 红宝石工具箱 http www ruby toolbox com 我不知
  • Groovy 中的显式输入:有时还是从不?

    后来 仍然无法弄清楚 Groovy 是否具有静态类型 似乎没有 或者使用显式类型生成的字节码是否不同 似乎是 无论如何 回答这个问题 One of the main differences between Groovy and other
  • 强制 DataMapper 断开与 postgresql 的连接

    我有一个测试 正在 postgresql 中创建和销毁多个数据库 为了能够删除数据库 我需要告诉 DataMapper 断开连接 我似乎找不到任何有关如何执行此操作的文档 DataMapper Adapters PostgresAdapte
  • Rails Partial (Rails 3, HAML) 任意慢

    我使用的是 Rails 3 0 1 HAML 0 3 22 和 Mongrel 1 1 5 MongoMapper 不是 AR 我正在渲染一个列表 每个列表项都是它自己的部分 每次页面渲染其中一个列表项部分时 渲染时间都会延长近 100 倍
  • ActiveRecord oracle_enhanced 适配器无法加载 ruby​​-oci8 库

    rails g scaffold失败 但 oci 脚本和 irb 数据查询有效 无法弄清楚出了什么问题 rails g scaffold table field1 integer field2 string invoke active re
  • Ruby 在带有偏移量的数组中查找

    我正在寻找一种以更简洁的方式在 Ruby 中执行以下操作的方法 class Array def find index with offset offset block offset 1 find block end end offset a
  • 在 Rails 4 中渲染部分/rake 任务/后台作业/模型中的视图

    我读过很多关于在 rake 任务 后台作业 模型中渲染 Rails 部分和视图的内容 我在 Stackoverflow 和网络上找到的绝大多数内容都描述了在 Rails 3 中工作的方法 但它们似乎已经过时了 而且我没有让它们工作 即使花了
  • 将对象数组中的属性映射到另一个数组的更有效的 Ruby 方法?

    我不会在这里重复我的问题 但是有没有更有效的方法来写这个 def recruits names names for r in self referrals do names lt lt r display name end return n
  • ruby on Rails,会话过期通知

    我正在使用 ruby 1 9 3 和 Rails 3 2 我的实际会话处理如下所示 会话助手 def sign in user cookies remember token value user remember token expires
  • (在 Ruby 中)允许混合类方法访问类常量

    我有一个为其定义常量的类 然后我定义了一个类方法来访问该类常量 这很好用 一个例子 usr bin env ruby class NonInstantiableClass Const hello world class lt lt self
  • 无需别名的 Ruby YAML 编写

    我正在从 ruby 将数据写入 yaml 文件 并且经常在该文件上添加别名 像 id001 somekey somevalue id001 就我而言 我使用 yaml 文件来aid可读性并将名称添加到文件中的值 因为现有数据只是 没有键的分
  • 使用 YAML.load 解析 json 安全吗?

    我使用的是红宝石2 1 0 我有一个 json 文件 例如 测试 json item apple 1 banana 2 使用 YAML load 加载此文件是否安全 YAML load File read test json 我正在尝试加载
  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • 为什么 rand() 总是返回相同的数字?

    我在用 兰特 200 在我的 Rails 应用程序中 当我在控制台中运行它时 它总是返回随机数 但如果我在应用程序行中使用它 index rand 200 索引总是相同的号码 为什么会这样以及如何克服这个问题 简单的伪随机数生成器实际上生成
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除
  • 将 Rack::Deflater 插入机架中的哪个位置?

    我目前有以下内容 use Rack Rewrite use Rack Cache verbose gt true metastore gt memcached localhost 11211 rack cache meta entityst
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该

随机推荐