action_args 2.3.0 → 2.6.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 +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: []
|