mime_actor 0.7.2 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a87bfedb97fbef298d6111d7696369ace182dcbd578c5ee21a80954c4836053
4
- data.tar.gz: c66f2b2178559fe63c2c62c49ab9586ef2202317c6e60a9697b769c86debe726
3
+ metadata.gz: 45acf30e67a036d73b11bc6f79600212ebf2c69127e2727198e7f0c4a01e8530
4
+ data.tar.gz: 43d12c88f6eaf61bc02a34bce84249dd91581d2688f6e05d453f0e532bf1bf5e
5
5
  SHA512:
6
- metadata.gz: e1d916d1c16d64d2d47f2e61b98ce00064c5987f6c923e82ff679eadc1d22553a5b29e965e2ce6183762d4a430ee4495b76e522ddc0c735de5d64d0d6c723e6a
7
- data.tar.gz: 3506c2349080d7bc149f3490b33690ca2686ae0d37b3bde00c391a143d05ffdac3007b6575703a4e8c04935430dedfffc42704849cde4b8091c91cce11034e8c
6
+ metadata.gz: 2798078282a7aca6e3af70cd448f7f37a0bf75450429cd3566f0c8f399c9c768805f7dc84de00be386454db9851a182974cd80904c40e875760453682cd4bbe5
7
+ data.tar.gz: 359066bc2b07af9d6c5f42ca21762c5b57496aea7f28a0dd28384ec1d5889bc50500a422f8c97db70cbf97a7d727e899ee2ec84b1966bb8ca43882ca33dc135a
data/README.md CHANGED
@@ -190,9 +190,9 @@ You can find the documentation on [RubyDoc][doc_mime_actor].
190
190
 
191
191
  ## Requirements
192
192
 
193
- - Ruby: MRI 3.1+
194
- - ActiveSupport: 7.0+
195
- - ActionPack: 7.0+
193
+ - Ruby: MRI 2.5+
194
+ - ActiveSupport: 6.1+
195
+ - ActionPack: 6.1+
196
196
 
197
197
  ## Installation
198
198
 
@@ -221,8 +221,8 @@ Bug reports and pull requests are welcome on GitHub at [https://github.com/ryanc
221
221
 
222
222
  [rubygems_badge]: https://img.shields.io/gem/v/mime_actor.svg
223
223
  [rubygems]: https://rubygems.org/gems/mime_actor
224
- [ci_badge]: https://github.com/ryancyq/mime_actor/actions/workflows/build.yml/badge.svg
225
- [ci_workflows]: https://github.com/ryancyq/mime_actor/actions/workflows/build.yml
224
+ [ci_badge]: https://github.com/ryancyq/mime_actor/actions/workflows/ci.yml/badge.svg
225
+ [ci_workflows]: https://github.com/ryancyq/mime_actor/actions/workflows/ci.yml
226
226
  [coverage_badge]: https://codecov.io/gh/ryancyq/mime_actor/graph/badge.svg?token=4C091RHXC3
227
227
  [coverage]: https://codecov.io/gh/ryancyq/mime_actor
228
228
  [maintainability_badge]: https://api.codeclimate.com/v1/badges/06689606dc3f3945dc1b/maintainability
@@ -231,4 +231,4 @@ Bug reports and pull requests are welcome on GitHub at [https://github.com/ryanc
231
231
  [doc_mime_actor]: https://rubydoc.info/gems/mime_actor
232
232
  [doc_action_controller]: https://rubydoc.info/gems/actionpack/ActionController/Metal
233
233
  [doc_action_controller_mime_responds]: https://rubydoc.info/gems/actionpack/ActionController/MimeResponds
234
- [doc_comparison]: https://github.com/ryancyq/mime_actor/blob/main/COMPARE.md
234
+ [doc_comparison]: https://github.com/ryancyq/mime_actor/blob/main/COMPARE.md
@@ -68,7 +68,7 @@ module MimeActor
68
68
  end
69
69
 
70
70
  collector.public_send(format) do
71
- fill_run_sheet(action, format) { cue_actor(callable, action, format, action:, format:) }
71
+ fill_run_sheet(action, format) { cue_actor(callable, action, format, action: action, format: format) }
72
72
  end
73
73
  end
74
74
  end
@@ -5,9 +5,9 @@
5
5
  require "mime_actor/validator"
6
6
 
7
7
  require "active_support/callbacks"
8
- require "active_support/code_generator"
9
8
  require "active_support/concern"
10
9
  require "active_support/core_ext/module/attr_internal"
10
+ require "active_support/version"
11
11
 
12
12
  module MimeActor
13
13
  # # MimeActor Callbacks
@@ -32,10 +32,13 @@ module MimeActor
32
32
  include ActiveSupport::Callbacks
33
33
  include MimeActor::Validator
34
34
 
35
+ LIFECYCLES = %i[before after around].freeze
36
+
35
37
  included do
36
38
  attr_internal_reader :act_action, :act_format
37
39
  define_callbacks :act, skip_after_callbacks_if_terminated: true
38
- generate_act_callback_methods
40
+
41
+ ActiveSupport.version >= "7.2" ? generate_act_callback_methods : eval_act_callback_methods
39
42
  end
40
43
 
41
44
  module ClassMethods
@@ -43,8 +46,13 @@ module MimeActor
43
46
  attr_reader :actions, :formats
44
47
 
45
48
  def initialize(actions, formats)
46
- @actions = actions&.then { |a| Array(a).to_set(&:to_sym) }
47
- @formats = formats&.then { |f| Array(f).to_set(&:to_sym) }
49
+ if RUBY_VERSION < "2.6"
50
+ @actions = actions ? Array(actions).to_set(&:to_sym) : nil
51
+ @formats = formats ? Array(formats).to_set(&:to_sym) : nil
52
+ else
53
+ @actions = actions&.then { |a| Array(a).to_set(&:to_sym) }
54
+ @formats = formats&.then { |f| Array(f).to_set(&:to_sym) }
55
+ end
48
56
  end
49
57
 
50
58
  def match?(controller)
@@ -76,9 +84,27 @@ module MimeActor
76
84
  validate!(:format_or_formats, format) unless format.nil?
77
85
  end
78
86
 
87
+ def eval_act_callback_methods
88
+ singleton_class.module_eval(<<-RUBY, __FILE__, __LINE__ + 1)
89
+ # def append_act_before(*callbacks, action: nil, format: nil, &block)
90
+ # validate_callback_options!(action, format)
91
+ # configure_callbacks(callbacks, action, format, block) do |callback, options|
92
+ # set_callback(:act, :before, callback, options.merge!(prepend: false))
93
+ # end
94
+ # end
95
+ #
96
+ # alias_method :act_before, :append_act_before
97
+ #
98
+ #{LIFECYCLES.map { |kind| act_callback_kind_template(kind, append: true) }.join(";")}
99
+ #{LIFECYCLES.map { |kind| act_callback_kind_template(kind, append: false) }.join(";")}
100
+ #{LIFECYCLES.map { |kind| "alias_method :act_#{kind}, :append_act_#{kind}" }.join(";")}
101
+ RUBY
102
+ end
103
+
79
104
  def generate_act_callback_methods
105
+ require "active_support/code_generator"
80
106
  ActiveSupport::CodeGenerator.batch(singleton_class, __FILE__, __LINE__) do |owner|
81
- %i[before after around].each do |kind|
107
+ LIFECYCLES.each do |kind|
82
108
  owner.define_cached_method(:"append_act_#{kind}", as: :"act_#{kind}", namespace: :mime_callbacks) do |batch|
83
109
  batch << act_callback_kind_template(kind, append: true)
84
110
  end
@@ -26,7 +26,9 @@ module MimeActor
26
26
  private
27
27
 
28
28
  def validate!
29
- raise ArgumentError, "invalid method name: #{method_name.inspect}" unless method_name in String | Symbol
29
+ return if method_name.is_a?(String) || method_name.is_a?(Symbol)
30
+
31
+ raise ArgumentError, "invalid method name: #{method_name.inspect}"
30
32
  end
31
33
  end
32
34
 
@@ -47,7 +49,7 @@ module MimeActor
47
49
  private
48
50
 
49
51
  def validate!
50
- raise ArgumentError, "invalid block: #{block.inspect}" unless block in Proc
52
+ raise ArgumentError, "invalid block: #{block.inspect}" unless block.is_a?(Proc)
51
53
  end
52
54
  end
53
55
 
@@ -2,9 +2,11 @@
2
2
 
3
3
  # :markup: markdown
4
4
 
5
- # required by active_support/tagged_logging
6
5
  require "active_support/version"
7
- require "active_support/isolated_execution_state" if ActiveSupport::VERSION::MAJOR >= 7
6
+ # required by active_support/logger
7
+ require "logger" if ActiveSupport.version < "7.1"
8
+ # required by active_support/tagged_logging
9
+ require "active_support/isolated_execution_state" if ActiveSupport.version >= "7.0"
8
10
 
9
11
  require "active_support/concern"
10
12
  require "active_support/configurable"
@@ -22,7 +24,7 @@ module MimeActor
22
24
 
23
25
  included do
24
26
  default_logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new($stdout))
25
- if ActiveSupport::VERSION::MAJOR >= 7
27
+ if ActiveSupport.version >= "7.0"
26
28
  config_accessor :logger, default: default_logger
27
29
  else
28
30
  config_accessor :logger do
@@ -33,12 +35,12 @@ module MimeActor
33
35
 
34
36
  private
35
37
 
36
- def fill_run_sheet(*scenes, &)
38
+ def fill_run_sheet(*scenes, &block)
37
39
  return yield unless logger.respond_to?(:tagged)
38
40
 
39
41
  scenes.unshift "MimeActor" unless logger.formatter.current_tags.include?("MimeActor")
40
42
 
41
- logger.tagged(*scenes, &)
43
+ logger.tagged(*scenes, &block)
42
44
  end
43
45
  end
44
46
  end
@@ -5,7 +5,7 @@
5
5
  module MimeActor
6
6
  class Railtie < Rails::Railtie
7
7
  initializer "mime_actor.deprecator", before: :load_environment_config do |app|
8
- app.deprecators[:mime_actor] = MimeActor.deprecator if Rails::VERSION::MAJOR >= 7
8
+ app.deprecators[:mime_actor] = MimeActor.deprecator if ActiveSupport.version >= "7.1"
9
9
  end
10
10
  end
11
11
  end
@@ -76,12 +76,12 @@ module MimeActor
76
76
  return if visited.include?(error)
77
77
 
78
78
  visited << error
79
- rescuer = find_rescuer(error, format:, action:)
79
+ rescuer = find_rescuer(error, format: format, action: action)
80
80
  if (dispatch = MimeActor::Dispatcher.build(rescuer, error, format, action))
81
81
  dispatch.call(self)
82
82
  error
83
83
  elsif error&.cause
84
- rescue_actor(error.cause, format:, action:, visited:)
84
+ rescue_actor(error.cause, format: format, action: action, visited: visited)
85
85
  end
86
86
  end
87
87
 
@@ -5,9 +5,9 @@
5
5
  require "mime_actor/errors"
6
6
  require "mime_actor/validator"
7
7
 
8
- require "active_support/code_generator"
9
8
  require "active_support/concern"
10
9
  require "active_support/core_ext/module/attribute_accessors"
10
+ require "active_support/version"
11
11
 
12
12
  module MimeActor
13
13
  # # MimeActor Scene
@@ -100,7 +100,7 @@ module MimeActor
100
100
  end
101
101
  end
102
102
 
103
- generate_action_methods(actions)
103
+ ActiveSupport.version >= "7.2" ? generate_action_methods(actions) : eval_action_methods(actions)
104
104
  end
105
105
 
106
106
  private
@@ -109,7 +109,26 @@ module MimeActor
109
109
  @generated_action_methods ||= Module.new.tap { |mod| prepend mod }
110
110
  end
111
111
 
112
+ def eval_action_methods(actions)
113
+ generated_action_methods.module_eval(<<-RUBY, __FILE__, __LINE__ + 1)
114
+ # def index
115
+ # if respond_to?(:start_scene)
116
+ # start_scene do
117
+ # raise MimeActor::ActionNotImplemented, :index unless defined?(super)
118
+ # super
119
+ # end
120
+ # else
121
+ # raise MimeActor::ActionNotImplemented}, :index unless defined?(super)
122
+ # super
123
+ # end
124
+ # end
125
+ #
126
+ #{actions.map { |action| action_method_template(action) }.join(";")}
127
+ RUBY
128
+ end
129
+
112
130
  def generate_action_methods(actions)
131
+ require "active_support/code_generator"
113
132
  ActiveSupport::CodeGenerator.batch(generated_action_methods, __FILE__, __LINE__) do |owner|
114
133
  actions.each do |action|
115
134
  owner.define_cached_method(action, namespace: :mime_scene) do |batch|
@@ -40,7 +40,7 @@ module MimeActor
40
40
 
41
41
  self.class.validate!(:format, format)
42
42
 
43
- run_act_callbacks(action:, format:) do
43
+ run_act_callbacks(action: action, format: format) do
44
44
  result = dispatcher.call(self)
45
45
  block_given? ? yield(result) : result
46
46
  end
@@ -48,7 +48,7 @@ module MimeActor
48
48
  logger.error { "actor error, cause: #{e.inspect}" } unless raise_on_actor_error
49
49
  raise e if raise_on_actor_error
50
50
  rescue StandardError => e
51
- rescued = rescue_actor(e, action:, format:)
51
+ rescued = rescue_actor(e, action: action, format: format)
52
52
  rescued || raise
53
53
  end
54
54
  end
@@ -12,9 +12,9 @@ module MimeActor
12
12
  end
13
13
 
14
14
  module VERSION
15
- MAJOR = 0
16
- MINOR = 7
17
- BUILD = 2
15
+ MAJOR = 1
16
+ MINOR = 0
17
+ BUILD = 1
18
18
  PRE = nil
19
19
 
20
20
  STRING = [MAJOR, MINOR, BUILD, PRE].compact.join(".")
metadata CHANGED
@@ -1,43 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mime_actor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Chang
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-08-18 00:00:00.000000000 Z
10
+ date: 2025-03-21 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: actionpack
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '7.0'
18
+ version: '6.1'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '7.0'
25
+ version: '6.1'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: activesupport
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '7.0'
32
+ version: '6.1'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '7.0'
39
+ version: '6.1'
41
40
  description: ''
42
41
  email:
43
42
  - ryancyq@gmail.com
@@ -71,23 +70,21 @@ metadata:
71
70
  homepage_uri: https://github.com/ryancyq/mime_actor
72
71
  source_code_uri: https://github.com/ryancyq/mime_actor
73
72
  changelog_uri: https://github.com/ryancyq/mime_actor/blob/main/CHANGELOG.md
74
- post_install_message:
75
73
  rdoc_options: []
76
74
  require_paths:
77
75
  - lib
78
76
  required_ruby_version: !ruby/object:Gem::Requirement
79
77
  requirements:
80
- - - "~>"
78
+ - - ">="
81
79
  - !ruby/object:Gem::Version
82
- version: '3.1'
80
+ version: '2.5'
83
81
  required_rubygems_version: !ruby/object:Gem::Requirement
84
82
  requirements:
85
83
  - - ">="
86
84
  - !ruby/object:Gem::Version
87
85
  version: '0'
88
86
  requirements: []
89
- rubygems_version: 3.5.9
90
- signing_key:
87
+ rubygems_version: 3.6.2
91
88
  specification_version: 4
92
89
  summary: Action processing with Callback + Rescue handlers for different MIME types
93
90
  in Rails