IRb: как запустить интерактивную рубиновую сессию с предварительно загруженными классами

Поскольку я прохожу свою поездку путем принятия языка Ruby, я провожу много времени в IRb. Это просто фантастически! Но, поскольку я не очень знаю, это - возможности и все еще “nubby” с Ruby, я хотел бы знать следующее:

  • Как я могу “сбросить” сессию, не перезапуская IRb (или разве это не возможно).
  • Как я могу настроить IRb для загрузки набора исходных файлов "hello.rb" и "hello_objects.rb", т.е. при запуске? Я являюсь в большой степени рабочим в них, и было бы хорошо знать, что стенография загружает эти классы, вручную не вводя 'загрузку' для каждого снова.
6
задан JakeGould 25 November 2014 в 01:35
поделиться

5 ответов

Я не уверен, что можно "очистить" сеанс. Однако вы можете загружать свои классы следующим образом:

irb -r 'hello.rb' -r 'hello_objects.rb'
17
ответ дан 8 December 2019 в 03:00
поделиться

Вы можете управлять сеансами в irb. Запустите irb и попробуйте следующее:

x=1
irb     # Opens a new session
puts x  # error
jobs    # lists sessions
quit    # kills current session
puts x  # 1

Также существует команда "fg (number)", которая переключает сеансы. См .: http://tagaholic.me/2009/05/11/demystifying -irb-commands.html

6
ответ дан 8 December 2019 в 03:00
поделиться

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

Для объекта консоли доступно несколько методов irb.

methods.grep(/irb/).sort
=> ["irb", "irb_bindings", "irb_cb", "irb_change_binding", "irb_change_workspace",
"irb_chws", "irb_context", "irb_current_working_binding", "irb_current_working_workspace",
"irb_cwb", "irb_cws", "irb_cwws", "irb_exit", "irb_fg", "irb_jobs", "irb_kill", "irb_load",
"irb_pop_binding", "irb_pop_workspace", "irb_popb", "irb_popws", "irb_print_working_binding",
"irb_print_working_workspace", "irb_push_binding", "irb_push_workspace", "irb_pushb",
"irb_pushws", "irb_pwb", "irb_pwws", "irb_quit", "irb_require", "irb_source", "irb_workspaces"]

Повеселитесь поиграться с ними.

Другой объект - conf, который дает обратную связь о вашей среде irb:

conf
=> conf.ap_name="irb"
conf.auto_indent_mode=false
conf.back_trace_limit=16
conf.debug_level=1
conf.echo=true
conf.ignore_eof=false
conf.ignore_sigint=true
conf.inspect_mode=nil
conf.io=#<IRB::StdioInputMethod:0x79da0>
conf.irb=#<IRB::Irb:0x7c58c>
conf.irb_name="irb"
conf.irb_path="(irb)"
conf.last_value=...
conf.line_no=6
conf.load_modules=[]
conf.prompt_c="%N(%m):%03n:%i* "
conf.prompt_i="%N(%m):%03n:%i> "
conf.prompt_mode=:DEFAULT
conf.prompt_s="%N(%m):%03n:%i%l "
conf.rc=true
conf.return_format="=> %s\n"
conf.thread=#<Thread:0x31790 run>
conf.use_readline=false
conf.verbose=nil
conf.workspace=#<IRB::WorkSpace:0x7aa84 @main=main, @binding=#<Binding:0x7a2a0>>
2
ответ дан 8 December 2019 в 03:00
поделиться

Вы можете поместить любой код Ruby в свой файл ~ / .irbrc, который будет оцениваться при каждом запуске irb. В этом случае ваши операторы require.

2
ответ дан 8 December 2019 в 03:00
поделиться

Я считаю, что вы ищете изменение вашего файла ~ / .irbrc. Об этом упоминалось ранее, но примеров не приводилось. Вот краткий пример использования некоторых общих утилит, которые могут вам понадобиться в сеансе irb:

# Print to yaml format with "y"
require 'yaml'
# Pretty printing
require 'pp'
# Ability to load rubygem modules
require 'rubygems'
# Tab completion
require 'irb/completion'
4
ответ дан 8 December 2019 в 03:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: