Posted on 2007-04-05 20:21
dennis 閱讀(969)
評論(0) 編輯 收藏 所屬分類:
動態語言
今天在javaeye論壇上看到有人有這個需求,順手寫了下。原理就是通過遍歷Controllers目錄,并用正則表達式取出Controller名和它所有的action。
@controllers=Hash.new
path="#{RAILS_ROOT}/app/controllers/"
Dir.new(path).entries.each do |f|
if !f.index('.rb').nil? and f.index('.rb')>0
controller=File.open(path+f.to_s)
s=controller.read
/class\s(.*)\s\</.match(s)
controller_name=$1.to_s
actions=[]
s.scan(/def\s(.*)\s/).each{ |action| actions<<(action[0]) }
@controllers[controller_name]=actions
controller.close
end
end
@controllers.each_pair do |name, actions|
actions.each do |action|
puts |name<<" "<<action
end
end