2012-01-18 5 views
11
def load_lib 
    path = File.join(File.dirname(__FILE__), 'lib') 
    failures = [] 
    Dir.glob("#{path}/**/*.rb").each { |file| 
     puts "loading: #{file} ... " 
    } 
end 

スクリプトがあります。個々の行を個別に入力すると、load_lib関数が利用でき、正常に動作します。私は一つの大きな塊(Ubuntuのターミナル、ShのCtrlキーC)にIRBに貼り付けたときにしかし、それはDir.glob(...ラインでフリークアウトし、これを示していますスクリプトに貼り付けると、irbが時々フリックアウトしますか?

Display all 931 possibilities? (y or n) 
! 
!= 
!~ 
<=> 
.... [dozens of lines in this vein] 

、その後方法は全く作成されません。ここで

は私が一度に一つの行に貼り付けたときに(成功を)何が起こるかです:

>> def load_lib 
>>  path = File.join(File.dirname(__FILE__), 'lib') 
>>  failures = [] 
>> Dir.glob("#{path}/**/*.rb").each { |file| 
?> puts file 
>> } 
>> end 
=> nil 
>> load_lib 
./lib/alpha_processor.rb 
./lib/development_mail_interceptor.rb 
./lib/service_processors/beta_processor.rb 

はそれらがに貼り付けされている場合、IRBが好きではない[]または{}についての何かはありますか?

+0

irbがあなたにエラーを起こす可能性のある別の方法http://stackoverflow.com/questions/39269032/why-rails-can-use-if-as-hash-key-but-not-in-ruby/ 39271791#39271791 – lulalala

答えて

25

ソースファイルにあるTAB文字が原因です。スペースでインデントします。 :-)

+2

もっと正確に言えば、タブ文字はirbのオートコンプリートをトリガーします。あなたが明らかにコードに貼り付けるときには望みません。 Rubyコミュニティは、これまでに2つのスペースのインデントをかなり標準化していますので、それを使用してください。 –

+0

@AlexWayne:ご清聴ありがとうございます。それは自分でしなければならない。 –

+0

タブは 'irb'の自動補完に使用されるので、時々カット&ペーストがこれを引き起こします。私はそれをオフにするためのオプションがあると思うが、私はそれをオンにする方法の参照のみを見つけることができます。 – tadman

関連する問題