`
cookoo
  • 浏览: 648359 次
  • 性别: Icon_minigender_1
  • 来自: Shanghai
社区版块
存档分类
最新评论

加强版irb

    博客分类:
  • Ruby
阅读更多
Ruby的irb和Unix shell一样,通过定制可以提供更多特性与方便。

配置:
1. 安装以下gem: wirble, map_by_method, what_methods
2. 建立一个名叫_irbrc文件,内容如下:
# Compiled by Cookoo
# Reference:
#   http://drnicwilliams.com/2006/10/12/my-irbrc-for-consoleirb
#   http://pablotron.org/software/wirble/ 

require 'rubygems'
require 'map_by_method'
require 'what_methods'
require 'wirble'
require 'irb/completion'

IRB.conf[:AUTO_INDENT]=true

class Regexp
  def show(a)
    a =~ self ? "#{$`}<<#{$&}>>#{$'}" : "no match"
  end
end

Wirble.init
Wirble.colorize unless Config::CONFIG['host_os'] == 'mswin32'

3. 该文件放置位置随意,建议在linux下放到home下。然后在linux和win32下设置环境变量IRBRC,指向该文件的路径(包括文件名本身)。同时win32下还需设置一个HOME环境变量,建议指向c:\Documents and Settings\your_account

----------------------------

搞好了吧?SHOW TIME!
来体验一下多了哪些功能:

(*代表只限linux平台提供)
*1. 输出结果语法着色
2. 自动换行缩进
>>if i = 1
>>  puts i

3. 按两次tab, 自动补全(这个其实win32下本来就有)
>> [].e #tab tab                                           
[].each             [].empty?           [].equal? 
[].each_index       [].entries          [].extend 
[].each_with_index  [].eql? 
                     
*4. 直接使用ri 'something'
5. 直接使用pp
6. 命令行提示符改成>>和输出=>对齐
7. what? 猜api专用:
>> 3.14.what? 3  #什么方法返回3?                                             
3.14.to_int == 3                                              
3.14.floor == 3                                               
3.14.round == 3                                               
3.14.to_i == 3                                                
3.14.prec_i == 3                                              
3.14.truncate == 3                                            
=> ["to_int", "floor", "round", "to_i", "prec_i", "truncate"] 

8. 动态map:
>> [1,2,3].map{|x| x.succ} #常规方式
=> [2, 3, 4]              
>> [1,2,3].map_succ #快捷方式      
=> [2, 3, 4] 
    
在Rails console里看查询结果很好用       
9. irb命令行历史记录:下次重开irb依然保留
10. 对象研究快捷方式
>> poc Math #展示常量                                                                  
=> ["E", "PI"]                                                                  
>> po Math #展示非继承自Object的方法                                                                      
=> ["acos", "acosh", "asin", "asinh", "atan", "atan2", "atanh", "cos", "cosh", "
erf", "erfc", "exp", "frexp", "hypot", "ldexp", "log", "log10", "sin", "sinh", "
sqrt", "tan", "tanh"] 
                                                         
11. regexp研究快捷方式
>> /[a-z]+/.show "pi is 3.14"
=> "<<pi>> is 3.14"


分享到:
评论
13 楼 dennis_zane 2007-04-11  
在windows下,只要在ruby安装目录下的irb.bat目录添加一个自定义方法:
require "irb"
require 'irb/completion'
def ri(*names)
  system(%{ri.bat #{names.map{ |name| name.to_s}.join(" ")}})
end

就可以实现tab自动补全和使用ri
12 楼 cookoo 2006-11-05  
ri实在太慢了,查文档要不用gem_server,要不用gotapi.com
11 楼 bd7lx 2006-11-04  
http://t-a-w.blogspot.com/2006/11/magichelp-for-ruby.html

http://zabor.org/taw/magic_help/

Using magic/help requires almost no effort. Simply copy magic_help.rb to some visible place, and add require 'magic_help' to your ~/.irbrc. Works with either 1.8 or 1.9.

剩下一堆看傻眼的猫, 送给

http://ouspec.iteye.com/

10 楼 cookoo 2006-10-24  
Nice shot. Let me digg into the source to see what's wrong...

----------------------

原因:
map_by_method代码里的单数化函数和Rails的有冲突,注释掉那段就好了:
#unless String.instance_methods.include? "singularize"
#  class String
#    def singularize
#      self.gsub(/e?s\Z/,'')
#    end
#  end
#end


发现还有个bug, find出来的array可以用这个map_by_method, 但是1toM关联找出来的结果array就用不了了,估计是因为Array的method_missing被动态覆盖了。这个bug要改得去改ActiveRecord代码了,不知道有没有必要。。。
9 楼 thegiive 2006-10-24  
I found a bug in map_by_methods
Please comment map_by_methods like
require 'rubygems'
#require 'map_by_method'
require 'what_methods'
require 'wirble'
require 'irb/completion'
.....

The bug detail is described in my blog.
http://lightyror.blogspot.com/2006/10/mapbymethod-irb-bug.html
8 楼 cookoo 2006-10-22  
我不用jruby所以不清楚
7 楼 riss 2006-10-21  
Thank you!

随便问一下,JRuby 有没有好的IDE或是插件?
6 楼 cookoo 2006-10-21  
你设一下HOME环境变量,一般win32下就是C:\Documents and Settings\your_account
5 楼 riss 2006-10-21  
to cookoo:
C:\Documents and Settings\Administrator>irb
load error: D:\Program Files\ruby\bin\_irbrc
ArgumentError: couldn't find HOME environment -- expanding `~/.irb_history'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:94
:in `expand_path'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:94
:in `load_history'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:11
2:in `initialize'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:50
5:in `new'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:50
5:in `init'
        D:\Program Files\ruby\bin\_irbrc:26
        D:/Program Files/ruby/lib/ruby/1.8/irb/init.rb:207:in `load'
        D:/Program Files/ruby/lib/ruby/1.8/irb/init.rb:207:in `run_config'
        D:/Program Files/ruby/lib/ruby/1.8/irb/init.rb:20:in `setup'

------------------------------------
是否需要指定一个'~/.irb_history',这个如何指定?
4 楼 cookoo 2006-10-21  
wiki上的tips大部分早以包括在Wirble里了
3 楼 bd7lx 2006-10-20  
http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks

历史功能,用方向键

tab键,代码不全的提示

——下划线,上次的运行结果

copy paste的功能需要,增强后才有

2 楼 cookoo 2006-10-20  
缩进是irb的固有小瑕。结尾刚才手误了。

Linux下的rails console经研究发现还是只认IRBRC环境变量,不认home下的.irbrc或者_irbrc。所以和win32一样设一下就可以了。

另外win32下的irb不知把外部路径改成什么了,造成无法直接调用PATH里的ri,古怪
1 楼 qiezi 2006-10-20  
Cool!!

小缺点:第1个缩近不能回退,其它都不错。

最后一个代码是不是贴少了?

能不能在script/console里用?我试了一下似乎是不行,要修改吗?

相关推荐

    ABB IRB4600 工业机器人产品手册.pdf

    IRB4600还运用了性能优异的IRBP变位机、IRBT轨迹运动系统和电机系列产品,从各方面增强了IRB4600对目标应用的适应能力。同时,ABB也提供了RobotStudio及PowerPac功能组,通过模拟生产工作站来找准机器人的最佳位置,...

    IRB120机器人维护信息

    6. **软件升级**:按照制造商的建议定期对机器人软件进行升级,以获取最新的功能改进和安全性增强。 ### 维护计划 为了确保IRB120机器人的长期稳定运行,制定一个合理的维护计划是非常必要的。这个计划应包括但不...

    ABB IRB6640工业机器人技术样本.pdf

    IRB6640作为IRB6600系列的升级版,不仅延续了前代产品的可靠性和易维护性,还进一步提升了技术性能和荷重能力,特别适合于密集生产环境和重载作业。 ABB IRB6640机器人技术样本中介绍,IRB6640机器人采用了第二代...

    redmine开发者指南

    - **Wirble**:增强版irb,提供帮助显示、颜色输出等功能。 3. **语法特点** - 不使用花括号和分号,也不强制缩进。 - 一切皆为对象:即使是数字和字符串也有自己的方法。 - 数字0和空字符串在条件判断中被认为...

    ABB 紧凑型机器人IRB1200-extenal-2017-presentation-0511.pdf

    - **负载能力增强**:提供5kg和7kg两种负载版本,相较于IRB140有了显著提高。 - **高精度**:其重复定位精度为0.02mm,能够满足高精度作业的需求。 - **多种防护等级**:标准配置为IP40,可选配IP67、Foundry ...

    irbtools:Ruby的IRB控制台的改进:gem_stone:︎

    1. **BetterIRB**:这是一个增强版的IRB界面,提供颜色高亮、代码补全和更好的错误处理。颜色高亮使得代码更易于阅读,而补全功能则减少了输入错误的可能性,提高了编写代码的速度。 2. **IRB::ExtendCommandBundle...

    机器人型号

    IRB140的设计考虑到了多种环境下的应用,提供多种版本,包括标准版、铸造专家型、洁净室版和清洗版,其机械臂防护等级达到IP67,能够适应恶劣的生产环境。IRB140还可以以多种方式安装,如地面上、墙体上或者进行悬挂...

    Juniper数据中心接入层实施第二层局域网设计

    4. 在LAG上行链路上启用冗余链路组(RTG),以增强网络的容错能力。 在核心层设备上配置第二层桥接时,指南指出要在MX系列以太网业务路由器上使用IRB和多个物理接口连接相同的VLAN,这是为了确保VLAN内的流量能够...

    巴塞尔新资本协议III中文版

    《巴塞尔新资本协议III中文版》是全球银行业监管领域的一项重大改革,旨在加强银行体系的稳健性和抵御风险的能力。该协议由巴塞尔委员会制定,中国银行业监督管理委员会进行了翻译,内容涉及银行资本充足率的计算、...

    巴塞尔协议III中文版

    ### 巴塞尔协议III中文版知识点解析 #### 概述 《巴塞尔协议III》是国际银行监管领域的一项重要改革措施,旨在加强全球金融体系的稳定性。该协议由巴塞尔银行监管委员会制定,并在全球范围内得到采纳。其核心目标...

    Ruby 学习指南.rar

    - Pry:增强版的IRB,提供更强大的调试功能。 - RSpec:行为驱动开发的测试框架,用于编写可读性强的测试用例。 - Test::Unit:内置的单元测试框架。 7. **社区与资源** - Ruby China:国内最大的Ruby中文社区...

    ruby programming

    - **Linux**:大多数Linux发行版都提供了Ruby包,可以通过包管理器(如apt、yum等)安装。 #### 构建源码 对于高级用户,可以从Ruby的官方Git仓库下载源码并自行编译。这通常涉及以下步骤: 1. 下载源码:`git ...

    ruby2.6.1.zip

    3. **线程并行性增强**:Ruby 2.6加强了线程管理,允许在多核处理器上实现更好的并发性能,通过改进GVL(全局解释器锁)的实现,减少了线程之间的同步开销。 4. **安全的数组和哈希迭代**:为了防止某些类型的安全...

    (完整word版)基于STM32的机械臂运动控制与结构设计开题报告 (2).docx

    ### 基于STM32的机械臂运动控制与结构设计开题报告 #### 一、研究背景与意义 ...未来的研究方向可能包括进一步提高机械臂的精度和灵活性,探索更多应用场景下的优化策略,以及加强与其他智能设备的集成与协作等。

    citi关于basel2协议的风险管理

    巴塞尔II协议,全称为《巴塞尔资本协议第二版》(Basel II Accord),是由巴塞尔委员会于2004年发布的国际银行业监管标准,旨在加强全球银行业的资本充足率监管,确保金融机构具有足够的财务缓冲以抵御风险。...

    ABB机械手中文培训课程

    - **版本更新:**定期发布新版本以增强性能并添加新特性。 #### 三、机器人示教 **1.2.1 操作面板** - **界面介绍:**操作面板是用户与机器人交互的主要方式,包含触摸屏或物理按钮等元素。 - **功能特性:** - ...

    jdk-11.0.7_solaris-sparcv9_bin.tar.gz

    它是Java编程语言和Java平台标准版(Java SE)的核心组成部分,包含了编译器、调试器、文档以及Java运行时环境。JDK 11.0.7是Oracle公司发布的一个稳定版本,它带来了诸多改进和修复,旨在提升性能、安全性和稳定性...

Global site tag (gtag.js) - Google Analytics