安装未发布的gem导致“没有这样的文件加载”

时间:2012-05-20 21:13:31

标签: ruby rubygems bundler irb

我正在构建一个本地宝石,我希望能够在pry中测试和使用它。我正在通过bundle gem blah创建我的宝石。

  • gem list显示了宝石。
  • gem contents blah确认它已安装在我的GEMPATH中的位置。
  • gem "blah", :path => "path/to/gem"使其在rails控制台中可用。

但是当我只是尝试并要求它时,它的内部require "file"代码似乎不起作用。我开始使用以下结构的示例gem:

├── Gemfile
├── LICENSE
├── README.md
├── Rakefile
├── blah.gemspec
├── lib
│   ├── blah
│   │   ├── ugh.rb
│   │   └── version.rb
│   └── blah.rb
└── pkg
    └── blah-0.0.1.gem

/lib/blah.rb以:

开头
require "blah/version"
require "blah/ugh"

当我尝试将其加载到pry,IRB或ruby -rubygems -e 'require "blah"'时,我得到:

~/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require': cannot load such file -- blah/ugh (LoadError)

任何想法可能导致这种差异?我觉得我正在按照Bundler和其他宝石建立的做法来做事,但也许我在某个地方出错了。

1 个答案:

答案 0 :(得分:2)

请在直接运行ruby时尝试指定加载路径。这样可以确保您的gem中相对所需的所有文件也可以找到。

所以当在rails根目录中调用ruby时,它应该是

ruby -rubygems -Ilib -e 'require "blah"'

或在撬案中

pry -I lib ...

希望有所帮助。