2

В irb метод gets работает, но в Sublime Text 3 нет никакой реакции(можно билдить Ctrl + B). chomp же вообще не определен. Вот пример кода:

name = gets.chomp
print name

Если убрать chomp, то в консоли снизу ошибка возникать не будет, но и возможности ввода данных так же не появится. В общем как вводить данные в Ruby, используя Sublime Text 3? Может нужно подключать какую-то библиотеку или еще что-нибудь?

Nick Volynkin
  • 34,094

1 Answers1

4

По умолчанию в Sublime Text нет терминала, поэтому когда вы запускаете билд, он выполняет весь скрипт и просто выводит результат всего выполнения в окно билда. Интерактивный ввод данных оттуда не поддерживается.

Однако есть SublimeREPL - плагин для Sublime Text, который добавляет возможность выполнения кода не покидая редактора. Ставится как и любой другой Sublime Text плагин (не забудьте перезапустить ST после установки плагина):

Ctrl + Shift + P ⇒ Install Package ⇒ SublimeREPL

Плагин должен подхватить и использовать текущую активную версию ruby, с учетом rvm и rbenv. Для ruby требуется установленный гем pry (с последним pry могуть быть проблемы, в этом случае советуют ставить версию pry 0.9.12.6):

$ gem install pry
# или
$ gem install pry -v 0.9.12.6

REPL запускается через меню команд ST, откроется в новой вкладке:

Ctrl + Shift + P ⇒ SublimeREPL: Ruby

После того, как REPL запущен, с ним можно работать как с irb в терминале, а также передавать на выполнение файлы, строки, выделенные фрагменты кода (см. клавиатурные сокращения)


Есть проблема, которая касается конкретно gets - изначально это метод Kernel#gets, который будет работать по-разному, в зависимости от того, переданы аргументы (ARGV) скрипту или нет. Чтобы читать из стрима терминала, рекоммендуется указывать это явно:

name = STDIN.gets.chomp
# или
name = $stdin.gets.chomp

Источники:

  • Не удается установить Install Package. Возникает ошибка urllib.error.URLError: <urlopen error [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера> – ToshiDono Jan 02 '16 at 10:53
  • Удалось установить SublimeREPL, но он не запускается. То есть, скачал с git архив, распаковал в Папку ...Sublime Text Build 3083 x64\Data\Packages. Командами Ctrl + Shift + P ⇒ SublimeREPL: Ruby - видит его в списке, но ничего не происходит, когда запускаю и когда билдю. Что я делаю не так? – ToshiDono Jan 02 '16 at 12:28
  • @ToshiDono, а видно ли какие-то ошибки в консоли, когда запускается билд? `Ctrl + `` - чтобы открыть консоль. – Michael Radionov Jan 03 '16 at 18:47
  • @MichaelRadionov, всё же разработка SublimeREPL прекратилась ещё на момент Вашего ответа, а баги остались. Полагаю его использование — не оптимальное решение. Об альтернативах расписал здесь. Спасибо. – Саша Черных Nov 17 '16 at 08:07