IRb:如何使用预加载的类启动交互式ruby会话

当我通过采用Ruby语言进行旅程时,我花了很多时间在IRb中。 真是太棒了! 但是,由于我不太了解它的function,并且仍然是Ruby的“小块”,我想知道以下内容:

  • 如何在不重启IRb的情况下“刷新”会话(或者这是不可能的)。
  • 如何配置IRb来加载一堆源文件“hello.rb”和“hello_objects.rb”,即在启动时? 我在这些方面工作很重要,知道一个简短的手来加载这些类会很好,而不必为每个类手动输入’load’。

我不确定是否可以“刷新”一个会话。 但是,您可以像这样加载类:

irb -r 'hello.rb' -r 'hello_objects.rb' 

您可以在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

我相信您正在寻找的是修改〜/ .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' 

您可以将任何ruby代码放入〜/ .irbrc文件中,只要运行irb,就会对其进行评估。 在这种情况下,您的需要声明。

这些不是直接的答案,但可以适用于您更多地了解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=# conf.irb=# 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=# conf.use_readline=false conf.verbose=nil conf.workspace=#>