Skip to content

Commit d70a51e

Browse files
authored
Merge pull request #2132 from eregon/ruby2_keywords
Use #ruby2_keywords for correct delegation on Ruby <= 2.6, 2.7 and 3
2 parents e86339a + 8cd284b commit d70a51e

File tree

3 files changed

+14
-20
lines changed

3 files changed

+14
-20
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
* Your contribution here.
1010
* [#2131](https://github.com/ruby-grape/grape/pull/2131): Fix Ruby 2.7 keyword deprecation warning in validators/coerce - [@K0H205](https://github.com/K0H205).
11+
* [#2132](https://github.com/ruby-grape/grape/pull/2132): Use #ruby2_keywords for correct delegation on Ruby <= 2.6, 2.7 and 3 - [@eregon](https://github.com/eregon).
1112

1213
### 1.5.1 (2020/11/15)
1314

lib/grape/middleware/stack.rb

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ module Middleware
66
# It allows to insert and insert after
77
class Stack
88
class Middleware
9-
attr_reader :args, :opts, :block, :klass
9+
attr_reader :args, :block, :klass
1010

11-
def initialize(klass, *args, **opts, &block)
11+
def initialize(klass, *args, &block)
1212
@klass = klass
13-
@args = args
14-
@opts = opts
13+
@args = args
1514
@block = block
1615
end
1716

@@ -32,16 +31,8 @@ def inspect
3231
klass.to_s
3332
end
3433

35-
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7')
36-
def use_in(builder)
37-
block ? builder.use(klass, *args, **opts, &block) : builder.use(klass, *args, **opts)
38-
end
39-
else
40-
def use_in(builder)
41-
args = self.args
42-
args += [opts] unless opts.empty?
43-
block ? builder.use(klass, *args, &block) : builder.use(klass, *args)
44-
end
34+
def use_in(builder)
35+
builder.use(@klass, *@args, &@block)
4536
end
4637
end
4738

@@ -70,23 +61,26 @@ def [](i)
7061
middlewares[i]
7162
end
7263

73-
def insert(index, *args, **kwargs, &block)
64+
def insert(index, *args, &block)
7465
index = assert_index(index, :before)
75-
middleware = self.class::Middleware.new(*args, **kwargs, &block)
66+
middleware = self.class::Middleware.new(*args, &block)
7667
middlewares.insert(index, middleware)
7768
end
69+
ruby2_keywords :insert if respond_to?(:ruby2_keywords, true)
7870

7971
alias insert_before insert
8072

8173
def insert_after(index, *args, &block)
8274
index = assert_index(index, :after)
8375
insert(index + 1, *args, &block)
8476
end
77+
ruby2_keywords :insert_after if respond_to?(:ruby2_keywords, true)
8578

86-
def use(*args, **kwargs, &block)
87-
middleware = self.class::Middleware.new(*args, **kwargs, &block)
79+
def use(*args, &block)
80+
middleware = self.class::Middleware.new(*args, &block)
8881
middlewares.push(middleware)
8982
end
83+
ruby2_keywords :use if respond_to?(:ruby2_keywords, true)
9084

9185
def merge_with(middleware_specs)
9286
middleware_specs.each do |operation, *args|

spec/grape/middleware/stack_spec.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ def initialize(&block)
3535
expect { subject.use StackSpec::BarMiddleware, false, my_arg: 42 }
3636
.to change { subject.size }.by(1)
3737
expect(subject.last).to eq(StackSpec::BarMiddleware)
38-
expect(subject.last.args).to eq([false])
39-
expect(subject.last.opts).to eq(my_arg: 42)
38+
expect(subject.last.args).to eq([false, { my_arg: 42 }])
4039
end
4140

4241
it 'pushes a middleware class with block arguments onto the stack' do

0 commit comments

Comments
 (0)