http://thedaneshproject.com/posts/how-to-reload-your-bashrc-file/
We could create a file called .rdebugrc, and put these lines in
set autoeval <= 不用再打 p 印 value
set autolist <= 自動列出所在行數
set autoreload <= 可以隨時加debugger, 他會自己reload
set autoeval <= 不用再打 p 印 value
set autolist <= 自動列出所在行數
set autoreload <= 可以隨時加debugger, 他會自己reload
[Here document]
print <<-EOB
abc
cde
#{1+1}
EOB
require 'rubygems'require 'hpricot'
require 'open-uri'
url = "http://www.iwakela.com"
doc = Hpricot(open(url))
doc.search('table tr').each do |item|
(item/'a').each do |nav|
p nav.attributes['href']
p nav.inner_html
end
end妳想parse的是xml 時妳有更好的選擇libxml
require 'pp'
require 'benchmark'
require 'rubygems'
require 'xml/libxml'
require 'hpricot'
require 'rexml/document'
include Benchmark
signal_keys = [:signal_type, :create_datetime, :realized_or_unrealized,
:close_datetime, :open_price, :close_price, :performance,
:annualized_performance]
$rsp1 = {}
$rsp2 = {}
bm(12) do |test|
str = File.read('test.xml')
test.report('libxml') do
#xml_doc = XML::Document.file('test.xml')
xml_doc = XML::Parser.string(str).parse
root = xml_doc.root
root.find('target').each do |t|
$rsp2[t.find_first('target_id').content] = rsp_target = {}
rsp_target[:target_performance_average] = t.find_first('performance_average').content
rsp_target[:target_annualized_performance_average] = t.find_first('annualized_performance_average').content
t.find('signal').each do |signal|
rsp_target[signal.find_first('signal_id').content.to_sym] = signal_keys.inject({}) do |h,k|
h[k] = signal.find_first(k.to_s).content ; h
end
end
end
end
test.report('hpricot') do
xml_doc = Hpricot(File.open('test.xml'))
(xml_doc/:target).each do |t|
$rsp1[t.at(:target_id).innerHTML] = rsp_target = {}
rsp_target[:target_performance_average] = t.at("performance_average").innerHTML
rsp_target[:target_annualized_performance_average] = t.at("annualized_performance_average").innerHTML
(t/:signal).each do |signal|
rsp_target[signal.at(:signal_id).innerHTML.to_sym] = signal_keys.inject({}) do |h,k|
h[k]=signal.at(k).innerHTML ; h
end
end
end
end
end
http://www.ruby-doc.org/core/classes/Kernel.html#M001057
http://www.ruby-doc.org/core/classes/Binding.html
http://onestepback.org/index.cgi/Tech/Ruby/RubyBindings.rdoc/style/print
def getBinding(str)
return binding
end
str = "hello"
eval "str + ' Fred'" #=> "hello Fred"
eval "str + ' Fred'", getBinding("bye") #=> "bye Fred"
class Demo
def initialize(n)
@secret = n
end
def getBinding
return binding()
end
end
k1 = Demo.new(99)
b1 = k1.getBinding
k2 = Demo.new(-3)
b2 = k2.getBinding
p eval("@secret", b1) #=> 99
p eval("@secret", b2) #=> -3
p eval("@secret") #=> nil
def getBinding(param)
return binding()
end
b = getBinding("hello")
p eval("param", b) #=> "hello"
例:
retry
語法:
retry
在迭代、塊或for語句中使用retry,意味著重啟迭代器。同時迭代器的參數也將被重新計算。
for i in 1..5
retry if some_condition # 從 i == 1 開始重新執行
end