2011-12-17 3 views
0

これは奇妙なことです。おそらく、私がルビーを初めて知ったからです。私は宝石を作った、それは動作し、すべての単体テストが動作しますが、私がirbで以下のことをすると、 "原料"メソッドを見つけることができません。irbがメソッドを認識しない

1.9.2-p290 :002 > require "tablecloth" 
=> true 
1.9.2-p290 :003 > tc = TableCloth.new "1 cup of sugar" 
=> #<TableCloth:0x864a728> 
1.9.2-p290 :004 > tc.ingredients 
NoMethodError: undefined method `ingredients' for #<TableCloth:0x864a728> 
from (irb):4 
from /home/mikey/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>' 
1.9.2-p290 :005 > 

全体の宝石はこちらです。

https://github.com/mikeyhogarth/tablecloth

明らかにこれは私がルビーに新しいことによるものです。実際に開発を妨げるわけではありませんが、irbがこのケースでそのメソッドを登録できないように見える理由を知りたいだけです!

答えて

2

私はあなたがあなたのユニットテストにあるよりも、IRBに異なる古いバージョンのgemをロードしていると思います。あなたのユニットテストは開発ディレクトリにある宝石コードをテストするでしょうが、require "tablecloth"をIRBで実行すると、インストールされているgemがシステムのgemのディレクトリにロードされます。 RVMを使用している場合は、$ GEM_HOME環境変数を見て、どのディレクトリかを確認できます。

irbで使用する前に、宝石をインストールするには、rake installなどのレーキタスクを実行する必要があります。

+0

おかげで、これを試してみましょう! –

+0

'gem which tablecloth'でどのバージョンがロードされているのかを確認することができます。' gem install gem-open'を実行すると、 'gem open tablecloth'を実行して' $ EDITOR'にロードされたgemを開きます。実際に読み込まれた宝石を閲覧することができます。 –

+0

私は最初に始めた時、以前は宝石を作りました。再構築は基本的にそれを修正しました。私は、私が "reqiure"が指定したファイルをreqilreと思っていた部分は、宝石を最初にチェックすることを認識していなかった –

関連する問題