action_args 2.3.2 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.github/workflows/main.yml +88 -0
 - data/README.md +71 -46
 - data/Rakefile +1 -19
 - data/action_args.gemspec +6 -3
 - data/gemfiles/rails_41.gemfile +1 -1
 - data/gemfiles/rails_42.gemfile +1 -1
 - data/gemfiles/rails_50.gemfile +1 -3
 - data/gemfiles/rails_51.gemfile +1 -3
 - data/gemfiles/rails_52.gemfile +1 -3
 - data/gemfiles/rails_60.gemfile +16 -0
 - data/gemfiles/rails_61.gemfile +16 -0
 - data/gemfiles/rails_70.gemfile +17 -0
 - data/gemfiles/rails_edge.gemfile +2 -5
 - data/lib/action_args/abstract_controller.rb +6 -2
 - data/lib/action_args/callbacks.rb +66 -50
 - data/lib/action_args/params_handler.rb +12 -11
 - data/lib/action_args/version.rb +1 -1
 - metadata +13 -33
 - data/.travis.yml +0 -64
 - data/test/controllers/action_args_controller_test.rb +0 -45
 - data/test/controllers/hooks_test.rb +0 -31
 - data/test/controllers/kwargs_controller_test.rb +0 -32
 - data/test/controllers/kwargs_keyreq_controller_test.rb +0 -32
 - data/test/controllers/ordinal_controller_test.rb +0 -11
 - data/test/controllers/strong_parameters_test.rb +0 -59
 - data/test/fake_app.rb +0 -193
 - data/test/kwargs_controllers.rb +0 -10
 - data/test/kwargs_keyreq_controllers.rb +0 -10
 - data/test/mailers/action_mailer_test.rb +0 -15
 - data/test/params_handler/params_handler_test.rb +0 -194
 - data/test/test_helper.rb +0 -30
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 6622f79d42d59b8e4ac5da4090a0f135246157e38db10662c20bc17269fa343a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 1e20928a79311c79a5cab6028956519a21477c567ecd0f3b7c41c95919fa7043
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 40ed64f0cacf2a3c787c164967804a00f5644a575231da58274605386ff3cfdf1a00a8866b2f509106940352e90abcd130298c0a654ccaabc6dfef614b6497fc
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8cf743239b588cdf6f4af6175b3218679d78b96ad433993b14c3b4c72b2ff31934d22e9fa16a36b5f2155dd9de7b920cfdf0ffb017666fa32338e81b21152025
         
     | 
| 
         @@ -0,0 +1,88 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            name: build
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            on: [push, pull_request]
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            jobs:
         
     | 
| 
      
 6 
     | 
    
         
            +
              build:
         
     | 
| 
      
 7 
     | 
    
         
            +
                strategy:
         
     | 
| 
      
 8 
     | 
    
         
            +
                  matrix:
         
     | 
| 
      
 9 
     | 
    
         
            +
                    include:
         
     | 
| 
      
 10 
     | 
    
         
            +
                      - ruby_version: ruby-head
         
     | 
| 
      
 11 
     | 
    
         
            +
                        gemfile: gemfiles/rails_edge.gemfile
         
     | 
| 
      
 12 
     | 
    
         
            +
                        allow_failures: 'true'
         
     | 
| 
      
 13 
     | 
    
         
            +
                      - ruby_version: '3.0'
         
     | 
| 
      
 14 
     | 
    
         
            +
                        gemfile: gemfiles/rails_70.gemfile
         
     | 
| 
      
 15 
     | 
    
         
            +
                        allow_failures: 'true'
         
     | 
| 
      
 16 
     | 
    
         
            +
                      - ruby_version: '3.0'
         
     | 
| 
      
 17 
     | 
    
         
            +
                        gemfile: gemfiles/rails_61.gemfile
         
     | 
| 
      
 18 
     | 
    
         
            +
                        allow_failures: 'true'
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                      - ruby_version: '3.0'
         
     | 
| 
      
 21 
     | 
    
         
            +
                        gemfile: gemfiles/rails_edge.gemfile
         
     | 
| 
      
 22 
     | 
    
         
            +
                        allow_failures: 'true'
         
     | 
| 
      
 23 
     | 
    
         
            +
                      - ruby_version: '3.0'
         
     | 
| 
      
 24 
     | 
    
         
            +
                        gemfile: gemfiles/rails_70.gemfile
         
     | 
| 
      
 25 
     | 
    
         
            +
                      - ruby_version: '3.0'
         
     | 
| 
      
 26 
     | 
    
         
            +
                        gemfile: gemfiles/rails_61.gemfile
         
     | 
| 
      
 27 
     | 
    
         
            +
                      - ruby_version: '3.0'
         
     | 
| 
      
 28 
     | 
    
         
            +
                        gemfile: gemfiles/rails_60.gemfile
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                      - ruby_version: jruby
         
     | 
| 
      
 31 
     | 
    
         
            +
                        gemfile: gemfiles/rails_61.gemfile
         
     | 
| 
      
 32 
     | 
    
         
            +
                        allow_failures: 'true'
         
     | 
| 
      
 33 
     | 
    
         
            +
                      - ruby_version: jruby
         
     | 
| 
      
 34 
     | 
    
         
            +
                        gemfile: gemfiles/rails_70.gemfile
         
     | 
| 
      
 35 
     | 
    
         
            +
                        allow_failures: 'true'
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                      - ruby_version: '2.7'
         
     | 
| 
      
 38 
     | 
    
         
            +
                        gemfile: gemfiles/rails_edge.gemfile
         
     | 
| 
      
 39 
     | 
    
         
            +
                        allow_failures: 'true'
         
     | 
| 
      
 40 
     | 
    
         
            +
                      - ruby_version: '2.7'
         
     | 
| 
      
 41 
     | 
    
         
            +
                        gemfile: gemfiles/rails_70.gemfile
         
     | 
| 
      
 42 
     | 
    
         
            +
                      - ruby_version: '2.7'
         
     | 
| 
      
 43 
     | 
    
         
            +
                        gemfile: gemfiles/rails_61.gemfile
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                      - ruby_version: '2.6'
         
     | 
| 
      
 46 
     | 
    
         
            +
                        gemfile: gemfiles/rails_61.gemfile
         
     | 
| 
      
 47 
     | 
    
         
            +
                      - ruby_version: '2.6'
         
     | 
| 
      
 48 
     | 
    
         
            +
                        gemfile: gemfiles/rails_52.gemfile
         
     | 
| 
      
 49 
     | 
    
         
            +
                      - ruby_version: '2.6'
         
     | 
| 
      
 50 
     | 
    
         
            +
                        gemfile: gemfiles/rails_51.gemfile
         
     | 
| 
      
 51 
     | 
    
         
            +
                      - ruby_version: '2.6'
         
     | 
| 
      
 52 
     | 
    
         
            +
                        gemfile: gemfiles/rails_50.gemfile
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                      - ruby_version: '2.5'
         
     | 
| 
      
 55 
     | 
    
         
            +
                        gemfile: gemfiles/rails_61.gemfile
         
     | 
| 
      
 56 
     | 
    
         
            +
                      - ruby_version: '2.5'
         
     | 
| 
      
 57 
     | 
    
         
            +
                        gemfile: gemfiles/rails_52.gemfile
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                      - ruby_version: '2.4'
         
     | 
| 
      
 60 
     | 
    
         
            +
                        gemfile: gemfiles/rails_52.gemfile
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                      - ruby_version: '2.3'
         
     | 
| 
      
 63 
     | 
    
         
            +
                        gemfile: gemfiles/rails_52.gemfile
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                      - ruby_version: '2.2'
         
     | 
| 
      
 66 
     | 
    
         
            +
                        gemfile: gemfiles/rails_42.gemfile
         
     | 
| 
      
 67 
     | 
    
         
            +
                      - ruby_version: '2.2'
         
     | 
| 
      
 68 
     | 
    
         
            +
                        gemfile: gemfiles/rails_41.gemfile
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                      - ruby_version: '2.1'
         
     | 
| 
      
 71 
     | 
    
         
            +
                        gemfile: gemfiles/rails_42.gemfile
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                runs-on: ubuntu-latest
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                env:
         
     | 
| 
      
 76 
     | 
    
         
            +
                  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                steps:
         
     | 
| 
      
 79 
     | 
    
         
            +
                  - uses: actions/checkout@v2
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                  - uses: ruby/setup-ruby@v1
         
     | 
| 
      
 82 
     | 
    
         
            +
                    with:
         
     | 
| 
      
 83 
     | 
    
         
            +
                      ruby-version: ${{ matrix.ruby_version }}
         
     | 
| 
      
 84 
     | 
    
         
            +
                      bundler-cache: true
         
     | 
| 
      
 85 
     | 
    
         
            +
                    continue-on-error: ${{ matrix.allow_failures == 'true' }}
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                  - run: bundle exec rake
         
     | 
| 
      
 88 
     | 
    
         
            +
                    continue-on-error: ${{ matrix.allow_failures == 'true' }}
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,12 +1,12 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #  
     | 
| 
       2 
     | 
    
         
            -
            [](https://github.com/asakusarb/action_args/actions/actions)
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            Controller action arguments parameterizer for Rails 
     | 
| 
      
 4 
     | 
    
         
            +
            Controller action arguments parameterizer for Rails
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            ## What  
     | 
| 
      
 7 
     | 
    
         
            +
            ## What Is This?
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
            action_args is a Rails plugin that extends your controller action methods to allow you to specify arguments of interest in the method definition for any action. - in short, this makes your Rails controller Merb-ish.
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
            ## The Controllers
         
     | 
| 
         @@ -14,24 +14,24 @@ ActionArgs is a Rails plugin that extends your controller action methods to allo 
     | 
|
| 
       14 
14 
     | 
    
         
             
            Having the following controller code:
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
            ```ruby
         
     | 
| 
       17 
     | 
    
         
            -
            class  
     | 
| 
       18 
     | 
    
         
            -
              def  
     | 
| 
       19 
     | 
    
         
            -
                 
     | 
| 
      
 17 
     | 
    
         
            +
            class UsersController < ApplicationController
         
     | 
| 
      
 18 
     | 
    
         
            +
              def show(id)
         
     | 
| 
      
 19 
     | 
    
         
            +
                @user = User.find id
         
     | 
| 
       20 
20 
     | 
    
         
             
              end
         
     | 
| 
       21 
21 
     | 
    
         
             
            end
         
     | 
| 
       22 
22 
     | 
    
         
             
            ```
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
            This allows you to explicitly state which members of the `params` Hash are used in your controller actions 
     | 
| 
      
 24 
     | 
    
         
            +
            When a request visits "/users/777", it calls `UsersController#show` passing 777 as the method parameter.
         
     | 
| 
      
 25 
     | 
    
         
            +
            This allows you to explicitly state the most important API for the action -- which members of the `params` Hash are used in your controller actions -- in a perfectly natural Ruby way!
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
            ## Method  
     | 
| 
      
 28 
     | 
    
         
            +
            ## Method Parameter Types in Ruby, and How action_args Handles Parameters
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
            ### Required Parameters (:req)
         
     | 
| 
       31 
     | 
    
         
            -
            Method parameters that you specify are required. If a key of the same name does not exist in the params Hash,
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
            Method parameters that you specify are required. If a key of the same name does not exist in the params Hash, ActionContrller::BadRequest is raised.
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            In this `show` action, action_args will require that `id` parameter is provided.
         
     | 
| 
       33 
34 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
            In this `show` action, ActionArgs will require that `id` parameter is provided.
         
     | 
| 
       35 
35 
     | 
    
         
             
            ```ruby
         
     | 
| 
       36 
36 
     | 
    
         
             
            class UsersController < ApplicationController
         
     | 
| 
       37 
37 
     | 
    
         
             
              # the `id` parameter is mandatory
         
     | 
| 
         @@ -55,7 +55,7 @@ end 
     | 
|
| 
       55 
55 
     | 
    
         | 
| 
       56 
56 
     | 
    
         
             
            ### Keyword Argument (:key)
         
     | 
| 
       57 
57 
     | 
    
         
             
            If you think this Ruby 2.0 syntax reads better, you can choose this style for defining your action methods.
         
     | 
| 
       58 
     | 
    
         
            -
            This just works in the same way as  
     | 
| 
      
 58 
     | 
    
         
            +
            This just works in the same way as `:opt` here.
         
     | 
| 
       59 
59 
     | 
    
         | 
| 
       60 
60 
     | 
    
         
             
            ```ruby
         
     | 
| 
       61 
61 
     | 
    
         
             
            class UsersController < ApplicationController
         
     | 
| 
         @@ -67,8 +67,8 @@ end 
     | 
|
| 
       67 
67 
     | 
    
         
             
            ```
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
69 
     | 
    
         
             
            ### Required Keyword Argument (:keyreq)
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
            You can use this syntax instead of  
     | 
| 
      
 70 
     | 
    
         
            +
            `:keyreq` is the required version of `:key`, which was introduced in Ruby 2.1.
         
     | 
| 
      
 71 
     | 
    
         
            +
            You can use this syntax instead of `:req`.
         
     | 
| 
       72 
72 
     | 
    
         | 
| 
       73 
73 
     | 
    
         
             
            ```ruby
         
     | 
| 
       74 
74 
     | 
    
         
             
            class CommentsController < ApplicationController
         
     | 
| 
         @@ -80,9 +80,9 @@ class CommentsController < ApplicationController 
     | 
|
| 
       80 
80 
     | 
    
         
             
            end
         
     | 
| 
       81 
81 
     | 
    
         
             
            ```
         
     | 
| 
       82 
82 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
      
 83 
     | 
    
         
            +
            ## StrongParameters - permit
         
     | 
| 
       84 
84 
     | 
    
         | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
      
 85 
     | 
    
         
            +
            action_args plays very nice with Rails 4 StrongParameters.
         
     | 
| 
       86 
86 
     | 
    
         | 
| 
       87 
87 
     | 
    
         
             
            1. Inline declaration
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
         @@ -97,17 +97,17 @@ class UsersController < ApplicationController 
     | 
|
| 
       97 
97 
     | 
    
         
             
            end
         
     | 
| 
       98 
98 
     | 
    
         
             
            ```
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
       100 
     | 
    
         
            -
            2. Declarative  
     | 
| 
      
 100 
     | 
    
         
            +
            2. Declarative allow-listing
         
     | 
| 
       101 
101 
     | 
    
         | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
      
 102 
     | 
    
         
            +
            action_args also provides a declarative `permits` method for controller classes.
         
     | 
| 
       103 
103 
     | 
    
         
             
            Use this to keep your `permit` calls DRY in a comprehensible way.
         
     | 
| 
       104 
104 
     | 
    
         | 
| 
       105 
105 
     | 
    
         
             
            ```ruby
         
     | 
| 
       106 
106 
     | 
    
         
             
            class UsersController < ApplicationController
         
     | 
| 
       107 
     | 
    
         
            -
              #  
     | 
| 
      
 107 
     | 
    
         
            +
              # allow-lists User model's attributes
         
     | 
| 
       108 
108 
     | 
    
         
             
              permits :name, :age
         
     | 
| 
       109 
109 
     | 
    
         | 
| 
       110 
     | 
    
         
            -
              # the given `user` parameter would be automatically permitted by  
     | 
| 
      
 110 
     | 
    
         
            +
              # the given `user` parameter would be automatically permitted by action_args
         
     | 
| 
       111 
111 
     | 
    
         
             
              def create(user)
         
     | 
| 
       112 
112 
     | 
    
         
             
                @user = User.new(user)
         
     | 
| 
       113 
113 
     | 
    
         
             
              end
         
     | 
| 
         @@ -116,18 +116,19 @@ end 
     | 
|
| 
       116 
116 
     | 
    
         | 
| 
       117 
117 
     | 
    
         
             
            By default, action_args deduces the target model name from the controller name.
         
     | 
| 
       118 
118 
     | 
    
         
             
            For example, the `permits` call in `UsersController` expects the model name to be `User`.
         
     | 
| 
       119 
     | 
    
         
            -
            If this is not the case, you can specify the  
     | 
| 
      
 119 
     | 
    
         
            +
            If this is not the case, you can specify the `:model_name` option:
         
     | 
| 
       120 
120 
     | 
    
         | 
| 
       121 
121 
     | 
    
         
             
            ```ruby
         
     | 
| 
       122 
122 
     | 
    
         
             
            class MembersController < ApplicationController
         
     | 
| 
       123 
     | 
    
         
            -
              #  
     | 
| 
      
 123 
     | 
    
         
            +
              # allow-lists User model's attributes
         
     | 
| 
       124 
124 
     | 
    
         
             
              permits :name, :age, model_name: 'User'
         
     | 
| 
       125 
125 
     | 
    
         
             
            end
         
     | 
| 
       126 
126 
     | 
    
         
             
            ```
         
     | 
| 
       127 
127 
     | 
    
         | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
       128 
129 
     | 
    
         
             
            ## Filters
         
     | 
| 
       129 
130 
     | 
    
         | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
      
 131 
     | 
    
         
            +
            action_args works in filters, in the same way as it works in controller actions.
         
     | 
| 
       131 
132 
     | 
    
         | 
| 
       132 
133 
     | 
    
         
             
            ```ruby
         
     | 
| 
       133 
134 
     | 
    
         
             
            class UsersController < ApplicationController
         
     | 
| 
         @@ -136,17 +137,44 @@ class UsersController < ApplicationController 
     | 
|
| 
       136 
137 
     | 
    
         
             
              def show
         
     | 
| 
       137 
138 
     | 
    
         
             
              end
         
     | 
| 
       138 
139 
     | 
    
         | 
| 
       139 
     | 
    
         
            -
               
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
       141 
     | 
    
         
            -
                 
     | 
| 
       142 
     | 
    
         
            -
             
     | 
| 
       143 
     | 
    
         
            -
                end
         
     | 
| 
      
 140 
     | 
    
         
            +
              # `params[:id]` will be dynamically assigned to the method parameter `id` here
         
     | 
| 
      
 141 
     | 
    
         
            +
              private def set_user(id)
         
     | 
| 
      
 142 
     | 
    
         
            +
                @user = User.find(id)
         
     | 
| 
      
 143 
     | 
    
         
            +
              end
         
     | 
| 
       144 
144 
     | 
    
         
             
            end
         
     | 
| 
       145 
145 
     | 
    
         
             
            ```
         
     | 
| 
       146 
146 
     | 
    
         | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            ## The *_params Convention
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
            For those who are familiar with the Rails scaffold's default naming style, you can add `_params` suffix to any of the parameter names in the method signatures.
         
     | 
| 
      
 151 
     | 
    
         
            +
            It just matches with the params name without `_params`.
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
            For instance, these two actions both pass `params[:user]` as the method parameter.
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 156 
     | 
    
         
            +
            # without _params
         
     | 
| 
      
 157 
     | 
    
         
            +
            def create(user)
         
     | 
| 
      
 158 
     | 
    
         
            +
              @user = User.new(user)
         
     | 
| 
      
 159 
     | 
    
         
            +
              ...
         
     | 
| 
      
 160 
     | 
    
         
            +
            end
         
     | 
| 
      
 161 
     | 
    
         
            +
            ```
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 164 
     | 
    
         
            +
            # with _params
         
     | 
| 
      
 165 
     | 
    
         
            +
            def create(user_params)
         
     | 
| 
      
 166 
     | 
    
         
            +
              @user = User.new(user_params)
         
     | 
| 
      
 167 
     | 
    
         
            +
              ...
         
     | 
| 
      
 168 
     | 
    
         
            +
            end
         
     | 
| 
      
 169 
     | 
    
         
            +
            ```
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
            This naming convention makes your controller code look much more compatible with the Rails' default scaffolded code,
         
     | 
| 
      
 172 
     | 
    
         
            +
            and so it may be actually super easy for you to manually migrate from the legacy scaffold controller to the action_args style.
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
             
     | 
| 
       147 
175 
     | 
    
         
             
            ## The Scaffold Generator
         
     | 
| 
       148 
176 
     | 
    
         | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
      
 177 
     | 
    
         
            +
            action_args provides a custom scaffold controller generator that overwrites the default scaffold generator.
         
     | 
| 
       150 
178 
     | 
    
         
             
            Thus, by hitting the scaffold generator command like this:
         
     | 
| 
       151 
179 
     | 
    
         | 
| 
       152 
180 
     | 
    
         
             
            ```sh
         
     | 
| 
         @@ -212,37 +240,33 @@ end 
     | 
|
| 
       212 
240 
     | 
    
         
             
            ```
         
     | 
| 
       213 
241 
     | 
    
         | 
| 
       214 
242 
     | 
    
         
             
            You may notice that
         
     | 
| 
       215 
     | 
    
         
            -
            * There are no  
     | 
| 
      
 243 
     | 
    
         
            +
            * There are no global-ish `params` reference
         
     | 
| 
       216 
244 
     | 
    
         
             
            * It's quite easy to comprehend what's the actual input value for each action
         
     | 
| 
       217 
     | 
    
         
            -
            * You may write the unit test code as if the actions are just normal Ruby methods
         
     | 
| 
      
 245 
     | 
    
         
            +
            * You may be able to write the unit test code without mocking `params` as if the actions are just normal Ruby methods
         
     | 
| 
       218 
246 
     | 
    
         | 
| 
       219 
247 
     | 
    
         | 
| 
       220 
     | 
    
         
            -
            ## Supported  
     | 
| 
      
 248 
     | 
    
         
            +
            ## Supported Versions
         
     | 
| 
       221 
249 
     | 
    
         | 
| 
       222 
     | 
    
         
            -
            * Ruby 2.0.0, 2.1.x, 2.2.x, 2.3.x, 2.4.x, 2.5.x, 2.6.x, 2.7.0 (trunk), JRuby, & Rubinius with 2.0+ mode
         
     | 
| 
      
 250 
     | 
    
         
            +
            * Ruby 2.0.0, 2.1.x, 2.2.x, 2.3.x, 2.4.x, 2.5.x, 2.6.x, 2.7.x, 3.0.x, 3.1 (trunk), JRuby, & Rubinius with 2.0+ mode
         
     | 
| 
       223 
251 
     | 
    
         | 
| 
       224 
     | 
    
         
            -
            * Rails 4.1.x, 4.2.x, 5.0, 5.1, 5.2, 6.0 (edge)
         
     | 
| 
      
 252 
     | 
    
         
            +
            * Rails 4.1.x, 4.2.x, 5.0, 5.1, 5.2, 6.0, 6.1, 7.0 (edge)
         
     | 
| 
       225 
253 
     | 
    
         | 
| 
       226 
     | 
    
         
            -
             
     | 
| 
      
 254 
     | 
    
         
            +
            For Rails 4.0.x, please use Version 1.5.4.
         
     | 
| 
       227 
255 
     | 
    
         | 
| 
       228 
256 
     | 
    
         | 
| 
       229 
257 
     | 
    
         
             
            ## Installation
         
     | 
| 
       230 
258 
     | 
    
         | 
| 
       231 
     | 
    
         
            -
             
     | 
| 
      
 259 
     | 
    
         
            +
            Bundle the gem to your Rails app by putting this line in your Gemfile:
         
     | 
| 
      
 260 
     | 
    
         
            +
             
     | 
| 
       232 
261 
     | 
    
         
             
            ```ruby
         
     | 
| 
       233 
262 
     | 
    
         
             
            gem 'action_args'
         
     | 
| 
       234 
263 
     | 
    
         
             
            ```
         
     | 
| 
       235 
264 
     | 
    
         | 
| 
       236 
     | 
    
         
            -
            Then bundle:
         
     | 
| 
       237 
     | 
    
         
            -
            ```sh
         
     | 
| 
       238 
     | 
    
         
            -
            % bundle
         
     | 
| 
       239 
     | 
    
         
            -
            ```
         
     | 
| 
       240 
     | 
    
         
            -
             
     | 
| 
       241 
265 
     | 
    
         
             
            ## Notes
         
     | 
| 
       242 
266 
     | 
    
         | 
| 
       243 
267 
     | 
    
         
             
            ### Plain Old Action Methods
         
     | 
| 
       244 
268 
     | 
    
         | 
| 
       245 
     | 
    
         
            -
            Of course you still can use both  
     | 
| 
      
 269 
     | 
    
         
            +
            Of course you still can use both Merb-like style and plain old Rails style action methods even if this plugin is loaded. `params` parameter is still alive as well. That means, this plugin won't break any existing controller API.
         
     | 
| 
       246 
270 
     | 
    
         | 
| 
       247 
271 
     | 
    
         
             
            ### Argument Naming Convention
         
     | 
| 
       248 
272 
     | 
    
         | 
| 
         @@ -264,7 +288,7 @@ class BooksController < ApplicationController 
     | 
|
| 
       264 
288 
     | 
    
         
             
            end
         
     | 
| 
       265 
289 
     | 
    
         
             
            ```
         
     | 
| 
       266 
290 
     | 
    
         | 
| 
       267 
     | 
    
         
            -
            ### Default  
     | 
| 
      
 291 
     | 
    
         
            +
            ### Default Parameter Values
         
     | 
| 
       268 
292 
     | 
    
         | 
| 
       269 
293 
     | 
    
         
             
            You are of course able to specify default values for action parameters such as:
         
     | 
| 
       270 
294 
     | 
    
         | 
| 
         @@ -290,6 +314,7 @@ end 
     | 
|
| 
       290 
314 
     | 
    
         | 
| 
       291 
315 
     | 
    
         
             
            This way, the `page` parameter will be defaulted to 1 as everyone might expect.
         
     | 
| 
       292 
316 
     | 
    
         | 
| 
      
 317 
     | 
    
         
            +
             
     | 
| 
       293 
318 
     | 
    
         
             
            ## Copyright
         
     | 
| 
       294 
319 
     | 
    
         | 
| 
       295 
320 
     | 
    
         
             
            Copyright (c) 2011- Asakusa.rb. See MIT-LICENSE for further details.
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -10,22 +10,4 @@ Rake::TestTask.new do |t| 
     | 
|
| 
       10 
10 
     | 
    
         
             
              t.verbose = true
         
     | 
| 
       11 
11 
     | 
    
         
             
            end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            task : 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            namespace :test do
         
     | 
| 
       16 
     | 
    
         
            -
              %w(rails_41 rails_42 rails_edge).each do |gemfile|
         
     | 
| 
       17 
     | 
    
         
            -
                desc "Run Tests against #{gemfile}"
         
     | 
| 
       18 
     | 
    
         
            -
                task gemfile do
         
     | 
| 
       19 
     | 
    
         
            -
                  sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle --quiet"
         
     | 
| 
       20 
     | 
    
         
            -
                  sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle exec rake -t test"
         
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
       22 
     | 
    
         
            -
              end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
              desc 'Run Tests against all Rails versions'
         
     | 
| 
       25 
     | 
    
         
            -
              task :all do
         
     | 
| 
       26 
     | 
    
         
            -
                %w(rails_41 rails_42 rails_edge).each do |gemfile|
         
     | 
| 
       27 
     | 
    
         
            -
                  sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle --quiet"
         
     | 
| 
       28 
     | 
    
         
            -
                  sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle exec rake -t test"
         
     | 
| 
       29 
     | 
    
         
            -
                end
         
     | 
| 
       30 
     | 
    
         
            -
              end
         
     | 
| 
       31 
     | 
    
         
            -
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
            task default: :test
         
     | 
    
        data/action_args.gemspec
    CHANGED
    
    | 
         @@ -12,12 +12,15 @@ Gem::Specification.new do |s| 
     | 
|
| 
       12 
12 
     | 
    
         
             
              s.email       = ['ronnie@dio.jp']
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.homepage    = 'http://asakusa.rubyist.net/'
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.license     = 'MIT'
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.metadata = {
         
     | 
| 
      
 16 
     | 
    
         
            +
                'source_code_uri' => 'https://github.com/asakusarb/action_args'
         
     | 
| 
      
 17 
     | 
    
         
            +
              }
         
     | 
| 
       15 
18 
     | 
    
         
             
              s.summary     = 'Controller action arguments parameterizer for Rails 4+ & Ruby 2.0+'
         
     | 
| 
       16 
19 
     | 
    
         
             
              s.description = 'Rails plugin gem that supports Merbish style controller action arguments.'
         
     | 
| 
       17 
20 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
              s.files         =  
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
               
     | 
| 
      
 21 
     | 
    
         
            +
              s.files         = Dir.chdir(File.expand_path('..', __FILE__)) do
         
     | 
| 
      
 22 
     | 
    
         
            +
                `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
       21 
24 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       22 
25 
     | 
    
         | 
| 
       23 
26 
     | 
    
         
             
              s.add_development_dependency 'bundler'
         
     | 
    
        data/gemfiles/rails_41.gemfile
    CHANGED
    
    
    
        data/gemfiles/rails_42.gemfile
    CHANGED
    
    
    
        data/gemfiles/rails_50.gemfile
    CHANGED
    
    
    
        data/gemfiles/rails_51.gemfile
    CHANGED
    
    
    
        data/gemfiles/rails_52.gemfile
    CHANGED
    
    
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            source 'https://rubygems.org'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            gem 'rails', '~> 6.0.0'
         
     | 
| 
      
 6 
     | 
    
         
            +
            gem 'selenium-webdriver'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            gemspec path: '../'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            platforms :ruby do
         
     | 
| 
      
 11 
     | 
    
         
            +
              gem 'sqlite3'
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            platforms :jruby do
         
     | 
| 
      
 15 
     | 
    
         
            +
              gem 'activerecord-jdbcsqlite3-adapter'
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            source 'https://rubygems.org'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            gem 'rails', '~> 6.1.0'
         
     | 
| 
      
 6 
     | 
    
         
            +
            gem 'selenium-webdriver'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            gemspec path: '../'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            platforms :ruby do
         
     | 
| 
      
 11 
     | 
    
         
            +
              gem 'sqlite3'
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            platforms :jruby do
         
     | 
| 
      
 15 
     | 
    
         
            +
              gem 'activerecord-jdbcsqlite3-adapter'
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            source 'https://rubygems.org'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            gem 'rails', '~> 7.0.0'
         
     | 
| 
      
 6 
     | 
    
         
            +
            gem 'net-smtp'
         
     | 
| 
      
 7 
     | 
    
         
            +
            gem 'selenium-webdriver'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            gemspec path: '../'
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            platforms :ruby do
         
     | 
| 
      
 12 
     | 
    
         
            +
              gem 'sqlite3'
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            platforms :jruby do
         
     | 
| 
      
 16 
     | 
    
         
            +
              gem 'activerecord-jdbcsqlite3-adapter'
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
    
        data/gemfiles/rails_edge.gemfile
    CHANGED
    
    | 
         @@ -7,11 +7,8 @@ git_source(:github) do |repo_name| 
     | 
|
| 
       7 
7 
     | 
    
         
             
            end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            gem 'rails', github: 'rails/rails'
         
     | 
| 
       10 
     | 
    
         
            -
            gem ' 
     | 
| 
       11 
     | 
    
         
            -
            gem ' 
     | 
| 
       12 
     | 
    
         
            -
            gem 'sprockets', github: 'rails/sprockets'
         
     | 
| 
       13 
     | 
    
         
            -
            gem 'sprockets-rails', github: 'rails/sprockets-rails'
         
     | 
| 
       14 
     | 
    
         
            -
            gem 'rails-controller-testing'
         
     | 
| 
      
 10 
     | 
    
         
            +
            gem 'net-smtp'
         
     | 
| 
      
 11 
     | 
    
         
            +
            gem 'selenium-webdriver'
         
     | 
| 
       15 
12 
     | 
    
         | 
| 
       16 
13 
     | 
    
         
             
            gemspec :path => '../'
         
     | 
| 
       17 
14 
     | 
    
         | 
| 
         @@ -10,8 +10,12 @@ module ActionArgs 
     | 
|
| 
       10 
10 
     | 
    
         
             
                  return super if !defined?(params) || params.nil?
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                  strengthen_params! method_name
         
     | 
| 
       13 
     | 
    
         
            -
                  values = extract_method_arguments_from_params method_name
         
     | 
| 
       14 
     | 
    
         
            -
                   
     | 
| 
      
 13 
     | 
    
         
            +
                  values, kwargs_values = extract_method_arguments_from_params method_name
         
     | 
| 
      
 14 
     | 
    
         
            +
                  if kwargs_values.any?
         
     | 
| 
      
 15 
     | 
    
         
            +
                    super method_name, *values, **kwargs_values
         
     | 
| 
      
 16 
     | 
    
         
            +
                  else
         
     | 
| 
      
 17 
     | 
    
         
            +
                    super method_name, *values
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
       15 
19 
     | 
    
         
             
                end
         
     | 
| 
       16 
20 
     | 
    
         
             
              end
         
     | 
| 
       17 
21 
     | 
    
         | 
| 
         @@ -4,65 +4,81 @@ using ActionArgs::ParamsHandler 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            module ActionArgs
         
     | 
| 
       6 
6 
     | 
    
         
             
              module ActiveSupport
         
     | 
| 
       7 
     | 
    
         
            -
                 
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                if Rails::VERSION::MAJOR >= 7
         
     | 
| 
      
 8 
     | 
    
         
            +
                  module CallTemplate
         
     | 
| 
      
 9 
     | 
    
         
            +
                    module MethodCallParameterizer
         
     | 
| 
      
 10 
     | 
    
         
            +
                      def make_lambda
         
     | 
| 
      
 11 
     | 
    
         
            +
                        lambda do |target, value, &block|
         
     | 
| 
      
 12 
     | 
    
         
            +
                          if ActionController::Base === target
         
     | 
| 
      
 13 
     | 
    
         
            +
                            target.strengthen_params! @method_name
         
     | 
| 
      
 14 
     | 
    
         
            +
                            arguments, keyword_arguments = target.extract_method_arguments_from_params @method_name
         
     | 
| 
      
 15 
     | 
    
         
            +
                            if keyword_arguments.any?
         
     | 
| 
      
 16 
     | 
    
         
            +
                              target.send(@method_name, *arguments, **keyword_arguments, &block)
         
     | 
| 
      
 17 
     | 
    
         
            +
                            else
         
     | 
| 
      
 18 
     | 
    
         
            +
                              target.send(@method_name, *arguments, &block)
         
     | 
| 
      
 19 
     | 
    
         
            +
                            end
         
     | 
| 
      
 20 
     | 
    
         
            +
                          else
         
     | 
| 
      
 21 
     | 
    
         
            +
                            lambda do |target, value, &block|
         
     | 
| 
      
 22 
     | 
    
         
            +
                              target.send(@method_name, &block)
         
     | 
| 
      
 23 
     | 
    
         
            +
                            end
         
     | 
| 
      
 24 
     | 
    
         
            +
                          end
         
     | 
| 
      
 25 
     | 
    
         
            +
                        end
         
     | 
| 
      
 26 
     | 
    
         
            +
                      end
         
     | 
| 
       20 
27 
     | 
    
         
             
                    end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                    [target, block, method, *arguments]
         
     | 
| 
       23 
28 
     | 
    
         
             
                  end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
                  ::ActiveSupport::Callbacks::CallTemplate::MethodCall.prepend ActionArgs::ActiveSupport::CallTemplate::MethodCallParameterizer
         
     | 
| 
      
 30 
     | 
    
         
            +
                elsif Rails.version >= '5.1'
         
     | 
| 
      
 31 
     | 
    
         
            +
                  module CallbackParameterizer
         
     | 
| 
      
 32 
     | 
    
         
            +
                    # Extending AS::Callbacks::Callback's `make_lambda` not just to call specified
         
     | 
| 
      
 33 
     | 
    
         
            +
                    # method but to call the method with method parameters taken from `params`.
         
     | 
| 
      
 34 
     | 
    
         
            +
                    # This would happen only when
         
     | 
| 
      
 35 
     | 
    
         
            +
                    # * the target object is_a ActionController object
         
     | 
| 
      
 36 
     | 
    
         
            +
                    # * the filter was not defined via lambda
         
     | 
| 
      
 37 
     | 
    
         
            +
                    def make_lambda
         
     | 
| 
      
 38 
     | 
    
         
            +
                      lambda do |target, value, &block|
         
     | 
| 
      
 39 
     | 
    
         
            +
                        target, block, method, *arguments = expand(target, value, block)
         
     | 
| 
       25 
40 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                    if Symbol === filter
         
     | 
| 
       35 
     | 
    
         
            -
                      lambda do |target, _, &blk|
         
     | 
| 
       36 
     | 
    
         
            -
                        if ActionController::Base === target
         
     | 
| 
       37 
     | 
    
         
            -
                          target.strengthen_params! filter
         
     | 
| 
       38 
     | 
    
         
            -
                          values = target.extract_method_arguments_from_params filter
         
     | 
| 
       39 
     | 
    
         
            -
                          target.send filter, *values, &blk
         
     | 
| 
      
 41 
     | 
    
         
            +
                        if (ActionController::Base === target) && (method != :instance_exec) && arguments.empty?
         
     | 
| 
      
 42 
     | 
    
         
            +
                          target.strengthen_params! method
         
     | 
| 
      
 43 
     | 
    
         
            +
                          arguments, keyword_arguments = target.extract_method_arguments_from_params method
         
     | 
| 
      
 44 
     | 
    
         
            +
                          if keyword_arguments.any?
         
     | 
| 
      
 45 
     | 
    
         
            +
                            target.send(method, *arguments, **keyword_arguments, &block)
         
     | 
| 
      
 46 
     | 
    
         
            +
                          else
         
     | 
| 
      
 47 
     | 
    
         
            +
                            target.send(method, *arguments, &block)
         
     | 
| 
      
 48 
     | 
    
         
            +
                          end
         
     | 
| 
       40 
49 
     | 
    
         
             
                        else
         
     | 
| 
       41 
     | 
    
         
            -
                          target.send  
     | 
| 
      
 50 
     | 
    
         
            +
                          target.send(method, *arguments, &block)
         
     | 
| 
       42 
51 
     | 
    
         
             
                        end
         
     | 
| 
       43 
52 
     | 
    
         
             
                      end
         
     | 
| 
       44 
     | 
    
         
            -
                    else
         
     | 
| 
       45 
     | 
    
         
            -
                      super
         
     | 
| 
       46 
53 
     | 
    
         
             
                    end
         
     | 
| 
       47 
54 
     | 
    
         
             
                  end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                     
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
                  ::ActiveSupport::Callbacks::CallTemplate.prepend ActionArgs::ActiveSupport::CallbackParameterizer
         
     | 
| 
      
 56 
     | 
    
         
            +
                else
         
     | 
| 
      
 57 
     | 
    
         
            +
                  # For Rails 4 & 5.0
         
     | 
| 
      
 58 
     | 
    
         
            +
                  module CallbackParameterizerLegacy
         
     | 
| 
      
 59 
     | 
    
         
            +
                    # Extending AS::Callbacks::Callback's `make_lambda` not just to call specified
         
     | 
| 
      
 60 
     | 
    
         
            +
                    # method but to call the method with method parameters taken from `params`.
         
     | 
| 
      
 61 
     | 
    
         
            +
                    # This would happen only when
         
     | 
| 
      
 62 
     | 
    
         
            +
                    # * the filter was defined in Symbol form
         
     | 
| 
      
 63 
     | 
    
         
            +
                    # * the target object is_a ActionController object
         
     | 
| 
      
 64 
     | 
    
         
            +
                    def make_lambda(filter)
         
     | 
| 
      
 65 
     | 
    
         
            +
                      if Symbol === filter
         
     | 
| 
      
 66 
     | 
    
         
            +
                        lambda do |target, _, &blk|
         
     | 
| 
      
 67 
     | 
    
         
            +
                          if ActionController::Base === target
         
     | 
| 
      
 68 
     | 
    
         
            +
                            target.strengthen_params! filter
         
     | 
| 
      
 69 
     | 
    
         
            +
                            values, kwargs_values = target.extract_method_arguments_from_params filter
         
     | 
| 
      
 70 
     | 
    
         
            +
                            values << kwargs_values if kwargs_values.any?
         
     | 
| 
      
 71 
     | 
    
         
            +
                            target.send filter, *values, &blk
         
     | 
| 
      
 72 
     | 
    
         
            +
                          else
         
     | 
| 
      
 73 
     | 
    
         
            +
                            target.send filter, &blk
         
     | 
| 
      
 74 
     | 
    
         
            +
                          end
         
     | 
| 
      
 75 
     | 
    
         
            +
                        end
         
     | 
| 
      
 76 
     | 
    
         
            +
                      else
         
     | 
| 
      
 77 
     | 
    
         
            +
                        super
         
     | 
| 
      
 78 
     | 
    
         
            +
                      end
         
     | 
| 
      
 79 
     | 
    
         
            +
                    end
         
     | 
| 
       65 
80 
     | 
    
         
             
                  end
         
     | 
| 
      
 81 
     | 
    
         
            +
                  ::ActiveSupport::Callbacks::Callback.prepend ActionArgs::ActiveSupport::CallbackParameterizerLegacy
         
     | 
| 
       66 
82 
     | 
    
         
             
                end
         
     | 
| 
       67 
83 
     | 
    
         
             
              end
         
     | 
| 
       68 
84 
     | 
    
         
             
            end
         
     |