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

C'è la sceneggiatura. Quando inserisco ciascuna linea singolarmente, la funzione load_lib è disponibile e funziona correttamente. Ma quando mi si incolla in irb in una grossa fetta (terminale Ubuntu, Sh Ctrl C) si spaventa alla linea Dir.glob(... e mostra questa:perché a volte quando esco in una sceneggiatura mi viene fuori di testa?

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

e quindi il metodo non viene creata affatto.

Ecco cosa succede (di successo), quando mi si incolla in una sola riga alla volta:

>> 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 

C'è qualcosa circa la [] o {} che IRB non piace quando vengono incollati in?

+0

Un altro modo in cui irb può errare su di te http://stackoverflow.com/questions/39269032/why-rails-can-use-if-as-hash-key-but-not-in-ruby/ 39271791 # 39271791 – lulalala

risposta

25

Questo a causa di caratteri TAB presenti nel file di origine. Rientro con spazi. :-)

+2

Più precisamente, i caratteri di tabulazione attivano il completamento automatico di irb. Che ovviamente non vuoi incollare nel codice. La community di Ruby è ormai standardizzata in 2 indentazioni spaziali, quindi per favore basta usarla. –

+0

@AlexWayne: grazie per il chiarimento. Avrei dovuto farlo da solo. La scheda –

+0

viene utilizzata per il completamento automatico in "irb", quindi a volte il taglia e incolla lo farà scattare. Penso che ci sia un'opzione per spegnerlo, ma posso solo trovare riferimenti su come accenderlo. – tadman

Problemi correlati