ruby - 在 RubyGem 中要求文件的正确方法?

标签 ruby rubygems gem

我使用 Bundler 为我生成了一个 Gem 骨架。在 lib/foo.rb 中,我有以下内容:

require 'foo/client'
require 'foo/other'

这两行应该分别需要 lib/foo/client.rblib/foo/other.rb。它构建没有问题,但是当我用 irb 测试它时,我得到了一个找不到文件的错误。

ruby-1.9.2-head :003 > require 'foo'
LoadError: no such file to load -- foo/client
    from /home/ethan/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /home/ethan/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /home/ethan/.rvm/gems/ruby-1.9.2-head/gems/foo-0.1.0/lib/foo.rb:3:in `<top (required)>'
    from /home/ethan/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /home/ethan/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from (irb):3
    from /home/ethan/.rvm/rubies/ruby-1.9.2-head/bin/irb:16:in `<main>'
ruby-1.9.2-head :004 > 

在同一个 Gem 中请求文件的正确方法是什么?必须有一些简单的事情我正在监督...

最佳答案

如果您的 gem 名为“foo”,那么您需要做的就是使用 bundle exec:

bundle exec your-script.rb

没有 bundle exec,加载路径设置不正确。

使用 irb,您可以使用 bundle 命令 bundle console

chris@chris:~/oss/pp-adaptive$ irb
irb(main):001:0> AdaptivePayments
NameError: uninitialized constant Object::AdaptivePayments
    from (irb):1
    from /home/chris/.rbenv/versions/1.9.2-p290/bin/irb:12:in `<main>'
irb(main):002:0> 

chris@chris:~/oss/pp-adaptive$ bundle console
irb(main):001:0> AdaptivePayments
=> AdaptivePayments
irb(main):002:0> 

请注意,一旦 gem 安装到您的系统上,您就可以在没有 bundler 的情况下使用它。

关于ruby - 在 RubyGem 中要求文件的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7775233/

相关文章:

ruby-on-rails - 将 3 个结果包装在一个 div 中

ruby - 使用 Bundler 获取 git 文件时出错

ruby - Perl 和 Ruby 模块在同一个存储库中?

ruby - 如何从 Sinatra 路由末尾删除 '/'

ruby - 为什么在 Ruby 的方法中不能有类?

ruby - 安装我的 gem 时出现奇怪的错误

ruby - bundle exec pod install -> 无法找到 URL 为 "trunk"的已知源

ruby - gem 安装失败,出现 "Could not find a valid gem ' yaml'"

ruby - 当 bundler 包含来自源代码的 gem 时,如何使用 native 扩展测试 gem?

Ruby Pascal 的带内存的三角形生成器