我使用 Bundler 为我生成了一个 Gem 骨架。在 lib/foo.rb
中,我有以下内容:
require 'foo/client'
require 'foo/other'
这两行应该分别需要 lib/foo/client.rb
和 lib/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/