可能重复:
Path parsing in rails
我正在尝试用ruby解析一些日志文件。我有很多关于正则表达式的经验但是前几天我使用rails路由并且认为这可能是解析这些日志文件的一种非常简洁的方法,因为它将难以理解易于理解解析器。另一方面,正则表达式需要花费几分钟才能让大多数人消化成可以理解的逻辑。
Rails的“黑魔法”似乎做了这样的事情:
#some sort of route (the format string):
map.awesome_route 'awesome/:id/:slug.:format'
#
#presumably behind the scenes:
url = 'stackoverflow.com/awesome/3/all_my_questions.xml
hash = url.parse_by_route map.awesome_route, url
#now, again presumably:
#
#hash[:id] => '3'
#hash[:slug] => 'all_my_questions'
#hash[:format] => 'xml'
也许这不是Rails实际做事的方式。但它应该。有没有办法解析我的日志文件?它确实真的让我的一天。
谢谢!
答案 0 :(得分:2)
也许ActionController::Routing::Routes.recognize_path
正是您要找的?
ActionController::Routing::Routes.recognize_path '/users/6'
# => { :controller => 'users', :action => 'show', :id => 6 }
如果要在脚本中解析日志文件,在启动之前解析routes.rb应该不会有问题,这样就可以设置路由映射。