我正在构建一个本地宝石,我希望能够在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和其他宝石建立的做法来做事,但也许我在某个地方出错了。
答案 0 :(得分:2)
请在直接运行ruby时尝试指定加载路径。这样可以确保您的gem中相对所需的所有文件也可以找到。
所以当在rails根目录中调用ruby时,它应该是
ruby -rubygems -Ilib -e 'require "blah"'
或在撬案中
pry -I lib ...
希望有所帮助。