2010-04-16 55 views
5

当我通过采用Ruby语言完成我的旅程时,我花了很多时间在IRB中。这太棒了!但是,正如我不是很清楚它的能力,依然是“块状”使用Ruby,我想了解以下内容:IRb:如何通过预先加载的类启动交互式ruby会话

  • 我如何“刷新”会议,而无需重新启动IRB(或这是不可能的)。
  • 如何配置IRB来加载一堆源文件“hello.rb”和“hello_objects.rb”,即在启动时?我在这些方面做了很多工作,很高兴知道一个简短的手来加载这些类,而不需要再手动输入'load'。

回答

16

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

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

不错,非常感谢! – Shyam 2010-04-16 12:02:02

+3

将所有需求放入一个rb文件可能会有帮助,然后只需要那个。 – Beanish 2010-04-16 12:27:50

2

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

2

这些不是直接的答案,但可以适用于你更多地理解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>> 
3

我相信你在找什么正在修改你的〜/ .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' 
相关问题