ruby – 为gem定制IRB控制台
我想通过应用一些IRB配置选项来扩展作为bundle gem标准构建的默认控制台应用程序.
Looking at the documentation,我可以看到应该可以更改提示,这在交互式会话中工作正常.例如,我可以像这样播放显示的提示: 2.1.4 :001 > conf.prompt_mode=:SIMPLE => :SIMPLE >> ?> conf.prompt_mode=:DEFAULT => :DEFAULT irb(main):004:0> 但是,我找不到如何将其转换为语法以在控制台应用程序中使用.例如这个脚本: require 'irb' IRB.conf[:PROMPT_MODE] = :SIMPLE IRB.start 刚开始使用通用配置提示: 2.1.4 :001 > 我花了一些时间试图找到一个示例使用IRB的自定义repl而不加载全局默认值,但没有找到我可以复制的任何东西. 我可以看到未记录的方法IRB.setup与此有关,它以某种方式设置所有配置.我唯一的选择是编写我自己的IRB.start版本,该版本在调用IRB.setup后应用我想要的配置,或者是否支持我想要内置但未在标准位置记录的内容? 例如.下面的工作,但我觉得这种方式有点沉重的扩展IRB模块(如果IRB内部更改,也容易失败). require 'irb' def IRB.custom_start custom_conf = {} STDOUT.sync = true IRB.setup(nil) custom_conf.each do |k,v| IRB.conf[k] = v end if @CONF[:SCRIPT] irb = IRB::Irb.new(nil,@CONF[:SCRIPT]) else irb = IRB::Irb.new end @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC] @CONF[:MAIN_CONTEXT] = irb.context trap("SIGINT") do irb.signal_handle end begin catch(:IRB_EXIT) do irb.eval_input end ensure irb_at_exit end end IRB.custom_start :PROMPT_MODE => :SIMPLE 解决方法
您可以通过两种方式应用自定义配置.
第一个是使用irbrc file.构建控制台应用程序可能很棘手(从ruby文件调用IRB.start而不是从控制台调用irb). 第二个是你在帖子中描述的方法.您可以根据the original one编写自己的IRB :: start方法.与使用未记录的API完全相同的潜在问题 – 将来可能会破坏更新版本的irb. 您应该考虑是否真的需要在irb的顶部构建一个控制台应用程序.例如,您可以使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |