Mark24
记录灵感、技术、思考
Ruby标准库有趣部分摘要
- etc 用来获得
/etc
下面信息。比如系统登录用户,可以做一个系统粘合性较高的程序来使用。 - enumerable 把你的class变成迭代器
- objectspace 可以返回class实例统计信息,size等,可以作为扫描、performance、统计使用。
- observable 把你的class变成发布订阅模式
- marshal 把程序对象字节持久化,或者还原。适合做在内存中缓存对象。比如 命令模式栈里撤销的对象。
- pathname 有野心的module封装了路径的操作,方便目录文件操作
- IO#eof?
eof?
是一个外部迭代器可以用的方法,外部迭代器更方便控制。其他eof?
同理。 - mutex 多线程中提供锁同步
- drb 让Ruby支持分布式程序,通过TCP/IP将程序各部分合并在一起。
- forwardable 自动生成代理方法。
这个要介绍下比如
require 'forwardable'
class WriterDecorator
extend Forwardable
def_delegators :@real_writer, :write_line #, :other_method .... 方法不限制
def initialize(real_writer)
@real_writer = real_writer
end
end
就会生成类似如下的部分。
def_delegators
接受两个或者更多参数,第一个是实例属性的名字,后面是一个或者多个方法的名字,每个方法都会被传递到代理对象上去。
forwardable
是比 method_missing
更精确的武器。
class WriterDecorator
def initialize(real_writer)
@real_writer = real_writer
end
# 传递代理方法
def write_line(line)
@real_writer.write_line(line)
end
end
- tracer 跟踪执行过程
ruby -r tracer sample.rb
github wiki
#0:<internal:lib/rubygems/custom_require>:38:Kernel:<: -
#0:example.rb:3::-: class A
#0:example.rb:3::C: class A
#0:example.rb:4::-: def square(a)
#0:example.rb:7::E: end
#0:example.rb:9::-: a = A.new
#0:example.rb:10::-: a.square(5)
#0:example.rb:4:A:>: def square(a)
#0:example.rb:5:A:-: return a*a
#0:example.rb:6:A:<: end
| | | | |
| | | | ---------------------+ event
| | | ------------------------+ class
| | --------------------------+ line
| ------------------------------------+ filename
---------------------------------------+ thread
Symbol table used for displaying incoming events:
+}+:: call a C-language routine
+{+:: return from a C-language routine
+>+:: call a Ruby method
+C+:: start a class or module definition
+E+:: finish a class or module definition
+-+:: execute code on a new line
+^+:: raise an exception
+<+:: return from a Ruby method
- singleton 把你的class变成单例模式
- find 查找文件所用
- Racc 参照UNIX YACC的分析器。分析器生成工具
-
yaml 处理yaml
-
String#scan 可以用正则进行分词
- benchmark 性能分析的性能基准库。
- profile 性能分析。这个以前在标准库,现在独立成 gem
gem install profile
安装
未完待续