在Rails应用程序中,我需要识别以这种形式表示的某些URL路径:
paths = ['/a/*/b/c', '/f/*']
我是中间件,我可以访问路径,我应该写什么样的条件来检查当前的URL路径是否与提供的数组中的条目匹配?
path = Rack::Request.new(env).path
included = paths.any? { |s| path.include?(s) }
这只检查包含,但现在已经到了通配符。
答案 0 :(得分:2)
您可以将路径转换为正则表达式模式:
paths = ['/a/*/b/c', '/f/*']
path = Rack::Request.new(env).path
patterns = paths.map { |path| Regexp.new path.gsub(/\*/, '[^/]+') }
# Convert `*` to `[^/]+` to match any non-`/` characters.
included = patterns.any? { |s| path =~ s }