IRB: Como iniciar uma sessão interativa de rubi com classes pré-carregadas
-
27-09-2019 - |
Pergunta
Enquanto estou passando pela minha jornada adotando a língua rubi, passo muito tempo dentro do IRB. É simplesmente fantástico! Mas, como não estou muito ciente de suas capacidades, e ainda é um "nubby" com Ruby, gostaria de saber o seguinte:
- Como posso "liberar" a sessão, sem reiniciar o IRB (ou isso não é possível).
- Como posso configurar o IRB para carregar vários arquivos de origem "hello.rb" e "hello_objects.rb", ou seja, na startup? Estou trabalhando muito neles e seria bom saber uma mão curta para carregar essas classes, sem digitar manualmente 'carga' para cada um.
Solução
Não tenho certeza se é possível 'liberar' uma sessão. No entanto, você pode carregar suas aulas como esta:
irb -r 'hello.rb' -r 'hello_objects.rb'
Outras dicas
Você pode gerenciar sessões no IRB. Comece o IRB e tente o seguinte:
x=1
irb # Opens a new session
puts x # error
jobs # lists sessions
quit # kills current session
puts x # 1
Há também o comando "FG (número)", que alterna entre as sessões. Ver: http://tagaholic.me/2009/05/11/demystifiing-irb-commands.html
Eu acredito que o que você está procurando é modificar seu arquivo ~/.irbrc. Foi mencionado anteriormente, mas nenhum exemplo dado. Aqui está um breve exemplo de exigir alguns utilitários comuns que você pode querer em sua sessão do 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'
Você pode colocar qualquer código Ruby no seu arquivo ~/.irbrc, que será avaliado sempre que você executar o IRB. Nesse caso, suas declarações exigem.
Essas não são respostas diretas, mas podem se aplicar ao seu desejo de entender mais o IRB.
Vários métodos "IRB" estão disponíveis para o objeto do console.
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"]
Divirta -se brincando com eles.
Outra é o objeto "conf" que fornece feedback sobre o seu ambiente 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>>