0

我正在构建一个本地宝石,我希望能够测试并在撬动中使用它。我正在通过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 或 via 中加载它时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 和其他 gem 建立的做法按顺序做事,但也许我在某个地方出错了。

4

1 回答 1

2

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

因此,当在 rails 根目录中调用 ruby​​ 时,它应该是

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

或在撬的情况下

pry -I lib ...

希望有帮助。

于 2012-05-20T22:01:36.497 回答