Skip to content

Commit bd0c70e

Browse files
committed
[CHEF-1802] backport new behavior for Regexp.union to fix rack bug
imported code from: https://github.com/marcandre/backports/blob/master/lib/backports/1.8.7/regexp.rb which adds support for passing an array to Regexp.union, which works around this bug in rack: rack/rack#29
1 parent f6565c2 commit bd0c70e

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

‎chef-server-api/config/init.rb‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
require 'chef/cookbook_version'
3939
require 'chef/sandbox'
4040
require 'chef/checksum'
41+
require 'chef/monkey_patches/regexp'
4142

4243
require 'mixlib/authentication'
4344

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Copyright (c) 2009 Marc-Andre Lafortune
2+
#
3+
# Permission is hereby granted, free of charge, to any person obtaining
4+
# a copy of this software and associated documentation files (the
5+
# "Software"), to deal in the Software without restriction, including
6+
# without limitation the rights to use, copy, modify, merge, publish,
7+
# distribute, sublicense, and/or sell copies of the Software, and to
8+
# permit persons to whom the Software is furnished to do so, subject to
9+
# the following conditions:
10+
#
11+
# The above copyright notice and this permission notice shall be
12+
# included in all copies or substantial portions of the Software.
13+
#
14+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+
class Regexp
23+
# Standard in Ruby 1.8.7+. See official documentation[http://www.ruby-doc.org/core-1.8.7/classes/Regexp.html]
24+
class << self
25+
unless (union(%w(a b)) rescue false)
26+
alias :union_without_array_argument :union
27+
28+
def union(*arg)
29+
return union_without_array_argument(*arg) unless arg.size == 1
30+
union_without_array_argument(*arg.first)
31+
end
32+
end
33+
end
34+
end

0 commit comments

Comments
 (0)