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.
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 'rack', github: 'rack/rack'
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 'action_args/params_handler'
3
4
  require 'action_args/abstract_controller'
4
5
  require 'action_args/callbacks'
@@ -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 unless defined?(params)
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
- super method_name, *values
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 `expand` not just to call specified
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 expand(*)
14
- target, block, method, *arguments = super
14
+ def make_lambda
15
+ lambda do |target, value, &block|
16
+ target, block, method, *arguments = expand(target, value, block)
15
17
 
16
- if (ActionController::Base === target) && (method != :instance_exec) && arguments.empty?
17
- target.strengthen_params! method
18
- arguments = target.extract_method_arguments_from_params method
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? key
15
+ missing_required_params << key unless params.key? trimmed_key
14
16
  next
15
17
  when :keyreq
16
- if params.key? key
17
- kwargs[key] = params[key]
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[key] if params.key? key
24
+ kwargs[key] = params[trimmed_key] if params.key? trimmed_key
23
25
  when :opt
24
- break if params.key? 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 << kwargs if kwargs.any?
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
- if (key == target_model_name) && permitted_attributes
53
- params.require(key) if %i[req keyreq].include?(type)
54
- params[key] = params[key].try :permit, *permitted_attributes if params.key? key
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
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module ActionArgs
3
- VERSION = '2.3.0'
4
+ VERSION = '2.6.0'
4
5
  end
@@ -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, :type => :array, :default => [], :banner => "field:type field:type"
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.3.0
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: 2017-09-06 00:00:00.000000000 Z
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
- post_install_message:
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
- rubyforge_project:
114
- rubygems_version: 2.6.13
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: []