NameError: неопределенная локальная переменная или метод в irb

Я использую ruby ​​1.9.2 с irb и продолжаю получать следующее сообщение об ошибке:

NameError: undefined local variable or method `ex1' for main:Object
from (irb):4
from /Users/flexmaster411/.rvm/rubies/ruby-1.9.2-p320/bin/irb:16:in `<main>' 

Я также пытался перетаскивать в irb, после чего получаю еще одну ошибку аргумента в коде.

Rodas-MacBook-Air:~ flexmaster411$ pwd /Users/flexmaster411
Rodas-MacBook-Air:~ flexmaster411$ cd Desktop
Rodas-MacBook-Air:Desktop flexmaster411$ cd my
Rodas-MacBook-Air:my flexmaster411$ ls
ex1.rb ex2.rb   test.html   test.rb  wacky.rb
Rodas-MacBook-Air:my flexmaster411$ irb
1.9.2-p320 :001 > ruby ex1.rb
NameError: undefined local variable or method ex1' for main:Object from (irb):1 from /Users/flexmaster411/.rvm/rubies/ruby-1.9.2-p320/bin/irb:16:in <main>' 

person cyclopse87    schedule 12.05.2013    source источник
comment
Пожалуйста, добавьте фактический код, который вы пытались выполнить, иначе мы не сможем дать полезный ответ.   -  person Patrick Oscity    schedule 12.05.2013
comment
Я получаю одно и то же сообщение об ошибке, независимо от того, какой код я ввожу, но в этом случае он помещает Hello World!   -  person cyclopse87    schedule 12.05.2013
comment
Хорошо, не могли бы вы тогда обновить свой ответ полным сеансом irb? Включая строку, в которой вы запускаете irb, и включая полное сообщение об ошибке. Спасибо   -  person Patrick Oscity    schedule 12.05.2013
comment
Вот начало сеанса irb 1.9.2p320 :001 › ruby ​​ex1.rb NameError: undefined local variable or method ex1' for main:Object from (irb):1 from /Users/flexmaster411/.rvm/rubies/ruby-1.9.2-p320/bin/irb:16:in ‹main›' 1.9.2p320 :002 › Спасибо за помощь.   -  person cyclopse87    schedule 12.05.2013
comment
Нет, он имеет в виду добавить весь код с момента, когда вы набрали irb, до ошибки на ваш вопрос.   -  person mind.blank    schedule 12.05.2013
comment
Rodas-MacBook-Air:~ flexmaster411$ pwd /Users/flexmaster411 Rodas-MacBook-Air:~ flexmaster411$ cd Desktop Rodas-MacBook-Air:Desktop flexmaster411$ cd my Rodas-MacBook-Air:my flexmaster411$ ls ex1.rb ex2 .rb test.html test.rb wacky.rb Rodas-MacBook-Air:my flexmaster411$ irb 1.9.2-p320 :001 › ruby ​​ex1.rb NameError: неопределенная локальная переменная или метод ex1' for main:Object from (irb):1 from /Users/flexmaster411/.rvm/rubies/ruby-1.9.2-p320/bin/irb:16:in ‹main›' 1.9.2-p320 :002 ›   -  person cyclopse87    schedule 12.05.2013
comment
Я вижу, спасибо, что сообщили мне об этом mind.blank   -  person cyclopse87    schedule 12.05.2013
comment
Вы также можете отредактировать свой вопрос и поместить туда содержимое в правильном формате.   -  person Patrick Oscity    schedule 12.05.2013
comment
Неважно, у меня проблема, позвольте мне просто написать ответ очень быстро   -  person Patrick Oscity    schedule 12.05.2013
comment
Я добавил ваш код к вашему вопросу (и, надеюсь, отформатировал его правильно), в будущем, пожалуйста, делайте то же самое.   -  person mind.blank    schedule 12.05.2013


Ответы (1)


Итак, что вы пытались сделать, это:

$ irb
001 > ruby ex1.rb

Команда ruby — это отдельная программа, поэтому вы должны использовать ruby непосредственно из командной строки следующим образом:

$ ruby ex1.rb

Это означает «Ruby, пожалуйста, запустите этот файл», тогда как irb — это REPL, ожидая операторов Ruby напрямую. Это означает, что вы можете ввести код Ruby непосредственно в irb следующим образом:

$ irb
001 > puts "Hello, world!"
Hello, world!

Или вы можете зайти в irb и загрузить содержимое файла, а затем поэкспериментировать с кодом:

$ irb
001 > require './ex1'
person Patrick Oscity    schedule 12.05.2013
comment
Совершенно не уловил этого, еще раз большое спасибо, Падде, за то, что прояснил это. - person cyclopse87; 12.05.2013