2012-05-20 21 views
0

我正在構建本地寶石,我希望能夠在pry中進行測試和使用。我通過bundle gem blah創建了我的寶石。安裝未發佈的寶石會導致「無需加載這樣的文件」

  • gem list顯示寶石。
  • gem contents blah確認它安裝在我的GEMPATH中的某個位置。
  • gem "blah", :path => "path/to/gem"使它在軌道控制檯中可用。

但是當我簡單地嘗試和需要它,它的內部require "file"代碼似乎並不奏效。我開始了一個例子寶石具有以下結構:

├── 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" 

,當我嘗試加載它在撬,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和其他寶石所建立的做法來做事,但也許我會在某個地方出現問題。

回答

2

請嘗試指定直接運行ruby時的加載路徑。這可以確保您的寶石中所需的所有文件都可以找到。

所以在軌道根目錄調用紅寶石時,它應該是

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

或撬情況下

pry -I lib ...

希望有所幫助。

+0

非常感謝iltempo。這正是我所需要的。 –

相關問題