action_args 2.3.0 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +66 -32
- data/Gemfile +1 -0
- data/README.md +83 -60
- data/action_args.gemspec +7 -3
- data/gemfiles/rails_41.gemfile +2 -1
- data/gemfiles/rails_42.gemfile +2 -1
- data/gemfiles/rails_50.gemfile +2 -7
- data/gemfiles/rails_51.gemfile +2 -7
- data/gemfiles/rails_52.gemfile +15 -0
- data/gemfiles/rails_60.gemfile +16 -0
- data/gemfiles/rails_61.gemfile +16 -0
- data/gemfiles/rails_edge.gemfile +2 -5
- data/lib/action_args.rb +1 -0
- data/lib/action_args/abstract_controller.rb +8 -3
- data/lib/action_args/callbacks.rb +18 -9
- data/lib/action_args/params_handler.rb +13 -11
- data/lib/action_args/version.rb +2 -1
- data/lib/generators/rails/action_args_scaffold_controller_generator.rb +2 -1
- data/lib/generators/rails/templates/controller.rb +9 -11
- metadata +12 -33
- data/test/controllers/action_args_controller_test.rb +0 -44
- data/test/controllers/hooks_test.rb +0 -30
- data/test/controllers/kwargs_controller_test.rb +0 -31
- data/test/controllers/kwargs_keyreq_controller_test.rb +0 -31
- data/test/controllers/ordinal_controller_test.rb +0 -10
- data/test/controllers/strong_parameters_test.rb +0 -58
- data/test/fake_app.rb +0 -184
- data/test/kwargs_controllers.rb +0 -9
- data/test/kwargs_keyreq_controllers.rb +0 -9
- data/test/mailers/action_mailer_test.rb +0 -9
- data/test/params_handler/params_handler_test.rb +0 -193
- data/test/test_helper.rb +0 -29
data/gemfiles/rails_41.gemfile
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
source 'https://rubygems.org'
|
3
4
|
|
4
5
|
gem 'rails', '~> 4.1.0'
|
@@ -7,7 +8,7 @@ gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7'
|
|
7
8
|
gemspec :path => '../'
|
8
9
|
|
9
10
|
platforms :ruby do
|
10
|
-
gem 'sqlite3'
|
11
|
+
gem 'sqlite3', '~> 1.3.6'
|
11
12
|
end
|
12
13
|
|
13
14
|
platforms :jruby do
|
data/gemfiles/rails_42.gemfile
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
source 'https://rubygems.org'
|
3
4
|
|
4
5
|
gem 'rails', '~> 4.2.0'
|
@@ -7,7 +8,7 @@ gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7'
|
|
7
8
|
gemspec :path => '../'
|
8
9
|
|
9
10
|
platforms :ruby do
|
10
|
-
gem 'sqlite3'
|
11
|
+
gem 'sqlite3', '~> 1.3.6'
|
11
12
|
end
|
12
13
|
|
13
14
|
platforms :jruby do
|
data/gemfiles/rails_50.gemfile
CHANGED
@@ -1,18 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
source 'https://rubygems.org'
|
3
|
-
git_source(:github) do |repo_name|
|
4
|
-
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
|
5
|
-
"https://github.com/#{repo_name}.git"
|
6
|
-
end
|
7
4
|
|
8
5
|
gem 'rails', '~> 5.0.1'
|
9
6
|
|
10
|
-
gem 'rails-controller-testing'
|
11
|
-
|
12
7
|
gemspec :path => '../'
|
13
8
|
|
14
9
|
platforms :ruby do
|
15
|
-
gem 'sqlite3'
|
10
|
+
gem 'sqlite3', '~> 1.3.6'
|
16
11
|
end
|
17
12
|
|
18
13
|
platforms :jruby do
|
data/gemfiles/rails_51.gemfile
CHANGED
@@ -1,18 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
source 'https://rubygems.org'
|
3
|
-
git_source(:github) do |repo_name|
|
4
|
-
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
|
5
|
-
"https://github.com/#{repo_name}.git"
|
6
|
-
end
|
7
4
|
|
8
5
|
gem 'rails', '~> 5.1.0'
|
9
6
|
|
10
|
-
gem 'rails-controller-testing'
|
11
|
-
|
12
7
|
gemspec :path => '../'
|
13
8
|
|
14
9
|
platforms :ruby do
|
15
|
-
gem 'sqlite3'
|
10
|
+
gem 'sqlite3', '~> 1.3.6'
|
16
11
|
end
|
17
12
|
|
18
13
|
platforms :jruby do
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
gem 'rails', '~> 5.2.0'
|
6
|
+
|
7
|
+
gemspec :path => '../'
|
8
|
+
|
9
|
+
platforms :ruby do
|
10
|
+
gem 'sqlite3', '~> 1.3.6'
|
11
|
+
end
|
12
|
+
|
13
|
+
platforms :jruby do
|
14
|
+
gem 'activerecord-jdbcsqlite3-adapter'
|
15
|
+
end
|
@@ -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
|
data/gemfiles/rails_edge.gemfile
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
source 'https://rubygems.org'
|
3
4
|
git_source(:github) do |repo_name|
|
4
5
|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
|
@@ -6,11 +7,7 @@ git_source(:github) do |repo_name|
|
|
6
7
|
end
|
7
8
|
|
8
9
|
gem 'rails', github: 'rails/rails'
|
9
|
-
gem '
|
10
|
-
gem 'arel', github: 'rails/arel'
|
11
|
-
gem 'sprockets', github: 'rails/sprockets'
|
12
|
-
gem 'sprockets-rails', github: 'rails/sprockets-rails'
|
13
|
-
gem 'rails-controller-testing'
|
10
|
+
gem 'selenium-webdriver'
|
14
11
|
|
15
12
|
gemspec :path => '../'
|
16
13
|
|
data/lib/action_args.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require_relative 'params_handler'
|
3
4
|
using ActionArgs::ParamsHandler
|
4
5
|
|
@@ -6,11 +7,15 @@ module ActionArgs
|
|
6
7
|
module AbstractControllerMethods
|
7
8
|
def send_action(method_name, *args)
|
8
9
|
return super unless args.empty?
|
9
|
-
return super
|
10
|
+
return super if !defined?(params) || params.nil?
|
10
11
|
|
11
12
|
strengthen_params! method_name
|
12
|
-
values = extract_method_arguments_from_params method_name
|
13
|
-
|
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
|
14
19
|
end
|
15
20
|
end
|
16
21
|
|
@@ -1,24 +1,32 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
using ActionArgs::ParamsHandler
|
3
4
|
|
4
5
|
module ActionArgs
|
5
6
|
module ActiveSupport
|
6
7
|
# For Rails >= 5.1
|
7
8
|
module CallbackParameterizer
|
8
|
-
# Extending AS::Callbacks::Callback's `
|
9
|
+
# Extending AS::Callbacks::Callback's `make_lambda` not just to call specified
|
9
10
|
# method but to call the method with method parameters taken from `params`.
|
10
11
|
# This would happen only when
|
11
12
|
# * the target object is_a ActionController object
|
12
13
|
# * the filter was not defined via lambda
|
13
|
-
def
|
14
|
-
target,
|
14
|
+
def make_lambda
|
15
|
+
lambda do |target, value, &block|
|
16
|
+
target, block, method, *arguments = expand(target, value, block)
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
if (ActionController::Base === target) && (method != :instance_exec) && arguments.empty?
|
19
|
+
target.strengthen_params! method
|
20
|
+
arguments, keyword_arguments = target.extract_method_arguments_from_params method
|
21
|
+
if keyword_arguments.any?
|
22
|
+
target.send(method, *arguments, **keyword_arguments, &block)
|
23
|
+
else
|
24
|
+
target.send(method, *arguments, &block)
|
25
|
+
end
|
26
|
+
else
|
27
|
+
target.send(method, *arguments, &block)
|
28
|
+
end
|
19
29
|
end
|
20
|
-
|
21
|
-
[target, block, method, *arguments]
|
22
30
|
end
|
23
31
|
end
|
24
32
|
|
@@ -34,7 +42,8 @@ module ActionArgs
|
|
34
42
|
lambda do |target, _, &blk|
|
35
43
|
if ActionController::Base === target
|
36
44
|
target.strengthen_params! filter
|
37
|
-
values = target.extract_method_arguments_from_params filter
|
45
|
+
values, kwargs_values = target.extract_method_arguments_from_params filter
|
46
|
+
values << kwargs_values if kwargs_values.any?
|
38
47
|
target.send filter, *values, &blk
|
39
48
|
else
|
40
49
|
target.send filter, &blk
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module ActionArgs
|
3
4
|
module ParamsHandler
|
4
5
|
refine AbstractController::Base do
|
@@ -8,20 +9,21 @@ module ActionArgs
|
|
8
9
|
kwargs, missing_required_params = {}, []
|
9
10
|
parameter_names = method_parameters.map(&:last)
|
10
11
|
method_parameters.reverse_each do |type, key|
|
12
|
+
trimmed_key = key.to_s.sub(/_params\z/, '').to_sym
|
11
13
|
case type
|
12
14
|
when :req
|
13
|
-
missing_required_params << key unless params.key?
|
15
|
+
missing_required_params << key unless params.key? trimmed_key
|
14
16
|
next
|
15
17
|
when :keyreq
|
16
|
-
if params.key?
|
17
|
-
kwargs[key] = params[
|
18
|
+
if params.key? trimmed_key
|
19
|
+
kwargs[key] = params[trimmed_key]
|
18
20
|
else
|
19
21
|
missing_required_params << key
|
20
22
|
end
|
21
23
|
when :key
|
22
|
-
kwargs[key] = params[
|
24
|
+
kwargs[key] = params[trimmed_key] if params.key? trimmed_key
|
23
25
|
when :opt
|
24
|
-
break if params.key?
|
26
|
+
break if params.key? trimmed_key
|
25
27
|
end
|
26
28
|
# omitting parameters that are :block, :rest, :opt without a param, and :key without a param
|
27
29
|
parameter_names.delete key
|
@@ -35,9 +37,8 @@ module ActionArgs
|
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
|
-
values = parameter_names.map {|k| params[k]}
|
39
|
-
values
|
40
|
-
values
|
40
|
+
values = parameter_names.map {|k| params[k.to_s.sub(/_params\z/, '').to_sym]}
|
41
|
+
[values, kwargs]
|
41
42
|
end
|
42
43
|
|
43
44
|
# permits declared model attributes in the params Hash
|
@@ -49,9 +50,10 @@ module ActionArgs
|
|
49
50
|
|
50
51
|
method_parameters = method(method_name).parameters
|
51
52
|
method_parameters.each do |type, key|
|
52
|
-
|
53
|
-
|
54
|
-
params
|
53
|
+
trimmed_key = key.to_s.sub(/_params\z/, '').to_sym
|
54
|
+
if (trimmed_key == target_model_name) && permitted_attributes
|
55
|
+
params.require(trimmed_key) if %i[req keyreq].include?(type)
|
56
|
+
params[trimmed_key] = params[trimmed_key].try :permit, *permitted_attributes if params.key? trimmed_key
|
55
57
|
end
|
56
58
|
end
|
57
59
|
end
|
data/lib/action_args/version.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
# load original rails scaffold_controller generator
|
3
4
|
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
|
4
5
|
|
@@ -6,7 +7,7 @@ require 'rails/generators/rails/scaffold_controller/scaffold_controller_generato
|
|
6
7
|
module Rails
|
7
8
|
module Generators
|
8
9
|
class ActionArgsScaffoldControllerGenerator < ::Rails::Generators::ScaffoldControllerGenerator
|
9
|
-
argument :attributes, :
|
10
|
+
argument :attributes, type: :array, default: [], banner: 'field:type field:type'
|
10
11
|
source_root File.expand_path('../templates', __FILE__)
|
11
12
|
end
|
12
13
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
class <%= controller_class_name %>Controller < ApplicationController
|
2
|
-
before_action :set_<%= singular_table_name %>, only: [:show, :edit, :update, :destroy]
|
3
2
|
<% if defined? ActionController::StrongParameters -%>
|
4
3
|
permits <%= attributes.map {|a| ":#{a.name}" }.join(', ') %>
|
5
4
|
|
@@ -10,7 +9,8 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
10
9
|
end
|
11
10
|
|
12
11
|
# GET <%= route_url %>/1
|
13
|
-
def show
|
12
|
+
def show(id)
|
13
|
+
@<%= singular_table_name %> = <%= orm_class.find(class_name, 'id') %>
|
14
14
|
end
|
15
15
|
|
16
16
|
# GET <%= route_url %>/new
|
@@ -19,7 +19,8 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
19
19
|
end
|
20
20
|
|
21
21
|
# GET <%= route_url %>/1/edit
|
22
|
-
def edit
|
22
|
+
def edit(id)
|
23
|
+
@<%= singular_table_name %> = <%= orm_class.find(class_name, 'id') %>
|
23
24
|
end
|
24
25
|
|
25
26
|
# POST <%= route_url %>
|
@@ -34,7 +35,9 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
34
35
|
end
|
35
36
|
|
36
37
|
# PUT <%= route_url %>/1
|
37
|
-
def update(<%= singular_table_name %>)
|
38
|
+
def update(id, <%= singular_table_name %>)
|
39
|
+
@<%= singular_table_name %> = <%= orm_class.find(class_name, 'id') %>
|
40
|
+
|
38
41
|
<% if orm_instance.respond_to? :update -%>
|
39
42
|
if @<%= orm_instance.update(singular_table_name) %>
|
40
43
|
<% else -%>
|
@@ -47,15 +50,10 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
47
50
|
end
|
48
51
|
|
49
52
|
# DELETE <%= route_url %>/1
|
50
|
-
def destroy
|
53
|
+
def destroy(id)
|
54
|
+
@<%= singular_table_name %> = <%= orm_class.find(class_name, 'id') %>
|
51
55
|
@<%= orm_instance.destroy %>
|
52
56
|
|
53
57
|
redirect_to <%= index_helper %>_url, notice: <%= "'#{human_name} was successfully destroyed.'" %>
|
54
58
|
end
|
55
|
-
|
56
|
-
private
|
57
|
-
# Use callbacks to share common setup or constraints between actions.
|
58
|
-
def set_<%= singular_table_name %>(id)
|
59
|
-
@<%= singular_table_name %> = <%= orm_class.find(class_name, 'id') %>
|
60
|
-
end
|
61
59
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: action_args
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akira Matsuda
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -71,6 +71,9 @@ files:
|
|
71
71
|
- gemfiles/rails_42.gemfile
|
72
72
|
- gemfiles/rails_50.gemfile
|
73
73
|
- gemfiles/rails_51.gemfile
|
74
|
+
- gemfiles/rails_52.gemfile
|
75
|
+
- gemfiles/rails_60.gemfile
|
76
|
+
- gemfiles/rails_61.gemfile
|
74
77
|
- gemfiles/rails_edge.gemfile
|
75
78
|
- lib/action_args.rb
|
76
79
|
- lib/action_args/abstract_controller.rb
|
@@ -79,23 +82,12 @@ files:
|
|
79
82
|
- lib/action_args/version.rb
|
80
83
|
- lib/generators/rails/action_args_scaffold_controller_generator.rb
|
81
84
|
- lib/generators/rails/templates/controller.rb
|
82
|
-
- test/controllers/action_args_controller_test.rb
|
83
|
-
- test/controllers/hooks_test.rb
|
84
|
-
- test/controllers/kwargs_controller_test.rb
|
85
|
-
- test/controllers/kwargs_keyreq_controller_test.rb
|
86
|
-
- test/controllers/ordinal_controller_test.rb
|
87
|
-
- test/controllers/strong_parameters_test.rb
|
88
|
-
- test/fake_app.rb
|
89
|
-
- test/kwargs_controllers.rb
|
90
|
-
- test/kwargs_keyreq_controllers.rb
|
91
|
-
- test/mailers/action_mailer_test.rb
|
92
|
-
- test/params_handler/params_handler_test.rb
|
93
|
-
- test/test_helper.rb
|
94
85
|
homepage: http://asakusa.rubyist.net/
|
95
86
|
licenses:
|
96
87
|
- MIT
|
97
|
-
metadata:
|
98
|
-
|
88
|
+
metadata:
|
89
|
+
source_code_uri: https://github.com/asakusarb/action_args
|
90
|
+
post_install_message:
|
99
91
|
rdoc_options: []
|
100
92
|
require_paths:
|
101
93
|
- lib
|
@@ -110,21 +102,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
102
|
- !ruby/object:Gem::Version
|
111
103
|
version: '0'
|
112
104
|
requirements: []
|
113
|
-
|
114
|
-
|
115
|
-
signing_key:
|
105
|
+
rubygems_version: 3.2.15
|
106
|
+
signing_key:
|
116
107
|
specification_version: 4
|
117
108
|
summary: Controller action arguments parameterizer for Rails 4+ & Ruby 2.0+
|
118
|
-
test_files:
|
119
|
-
- test/controllers/action_args_controller_test.rb
|
120
|
-
- test/controllers/hooks_test.rb
|
121
|
-
- test/controllers/kwargs_controller_test.rb
|
122
|
-
- test/controllers/kwargs_keyreq_controller_test.rb
|
123
|
-
- test/controllers/ordinal_controller_test.rb
|
124
|
-
- test/controllers/strong_parameters_test.rb
|
125
|
-
- test/fake_app.rb
|
126
|
-
- test/kwargs_controllers.rb
|
127
|
-
- test/kwargs_keyreq_controllers.rb
|
128
|
-
- test/mailers/action_mailer_test.rb
|
129
|
-
- test/params_handler/params_handler_test.rb
|
130
|
-
- test/test_helper.rb
|
109
|
+
test_files: []
|