card 1.99.5 → 1.99.6

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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/db/migrate_core_cards/20140629222005_add_email_cards.rb +1 -1
  4. data/lib/card.rb +13 -23
  5. data/lib/card/act_manager.rb +1 -0
  6. data/lib/card/act_manager/event_delay.rb +10 -5
  7. data/lib/card/act_manager/subdirector_array.rb +2 -0
  8. data/lib/card/auth/current.rb +0 -2
  9. data/lib/card/cache/prepopulate.rb +4 -4
  10. data/lib/card/env.rb +9 -53
  11. data/lib/card/env/location.rb +15 -2
  12. data/lib/card/env/request_assignments.rb +24 -0
  13. data/lib/card/env/serialization.rb +24 -0
  14. data/lib/card/env/slot_options.rb +30 -0
  15. data/lib/card/format/error.rb +6 -1
  16. data/lib/card/mod/loader/set_pattern_loader.rb +5 -1
  17. data/lib/card/model/save_helper.rb +5 -1
  18. data/lib/card/set/event/delayed_event.rb +49 -9
  19. data/lib/card/set/event/options.rb +1 -0
  20. data/lib/card/set/pattern/base.rb +18 -0
  21. data/lib/card/subcards.rb +11 -8
  22. data/lib/card/subcards/add.rb +7 -4
  23. data/lib/card/view/cache/cache_action.rb +1 -1
  24. data/lib/card/view/classy.rb +9 -9
  25. data/lib/card/view/options/voo_api.rb +0 -8
  26. data/mod/account/set/all/account.rb +2 -2
  27. data/mod/account/spec/set/right/account_spec.rb +2 -2
  28. data/mod/account/spec/set/type/signup_spec.rb +1 -1
  29. data/mod/basic_formats/set/all/head.rb +4 -2
  30. data/mod/basic_formats/set/all/rss.rb +1 -1
  31. data/mod/bootstrap/lib/card/lazy_tab.rb +37 -0
  32. data/mod/bootstrap/lib/card/tab.rb +76 -0
  33. data/mod/bootstrap/set/all/bootstrap/dropdown.rb +0 -1
  34. data/mod/bootstrap/set/all/bootstrap/tabs.rb +33 -124
  35. data/mod/bootstrap/set/all/bootstrap/tabs/tab_panel.haml +7 -0
  36. data/mod/carrierwave/set/abstract/attachment.rb +1 -1
  37. data/mod/carrierwave/set/abstract/attachment/upload_cache.rb +1 -1
  38. data/mod/core/lib/card/rule.rb +227 -0
  39. data/mod/core/set/all/actify.rb +16 -2
  40. data/mod/core/set/all/assign_attributes.rb +2 -2
  41. data/mod/core/set/all/cache.rb +4 -0
  42. data/mod/core/set/all/event_conditions.rb +58 -39
  43. data/mod/core/set/all/fetch.rb +1 -1
  44. data/mod/core/set/all/fetch_helper.rb +5 -13
  45. data/mod/core/set/all/initialize.rb +6 -6
  46. data/mod/core/set/all/name_events.rb +2 -3
  47. data/mod/core/set/all/rename.rb +9 -5
  48. data/mod/core/set/all/rules.rb +3 -228
  49. data/mod/core/set/all/tabs.rb +4 -3
  50. data/mod/core/set/all/update_read_rules.rb +1 -1
  51. data/mod/core/set_pattern/08_type_plus_right.rb +1 -2
  52. data/mod/core/spec/set/all/event_conditions_spec.rb +3 -3
  53. data/mod/core/spec/set/all/fetch_helper_spec.rb +6 -0
  54. data/mod/core/spec/set/all/references_spec.rb +9 -0
  55. data/mod/core/spec/set/all/rules_spec.rb +1 -1
  56. data/mod/developer/set/right/debug.rb +13 -14
  57. data/mod/edit/set/all/bridge.rb +7 -7
  58. data/mod/edit/set/all/bridge/tab_visibility.rb +2 -2
  59. data/mod/follow/set/all/follow/followed_by.rb +1 -2
  60. data/mod/follow/set/all/follow/follower_ids.rb +15 -3
  61. data/mod/follow/set/all/notify.rb +1 -5
  62. data/mod/follow/set/type_plus_right/user/follow.rb +4 -7
  63. data/mod/google_analytics/set/all/google_analytics.rb +1 -1
  64. data/mod/history/lib/card/act.rb +1 -1
  65. data/mod/history/set/all/history.rb +23 -17
  66. data/mod/history/set/all/history/acts.rb +0 -4
  67. data/mod/machines/file/all_script_machine_output/file.js +69 -38418
  68. data/mod/machines/file/all_style_machine_output/file.css +1 -1
  69. data/mod/machines/file/script_html5shiv_printshiv_machine_output/file.js +1 -1
  70. data/mod/machines/lib/javascript/decko/filter_items.js.coffee +4 -4
  71. data/mod/machines/lib/javascript/decko/nest_editor_name.js.coffee +1 -1
  72. data/mod/machines/lib/javascript/decko/selectable_filtered_content.js.coffee +12 -0
  73. data/mod/machines/lib/javascript/decko/slotter.js.coffee +1 -1
  74. data/mod/machines/lib/stylesheets/style_cards.scss +1 -1
  75. data/mod/machines/set/abstract/machine/output_update.rb +12 -4
  76. data/mod/machines/set/self/script_decko.rb +1 -1
  77. data/mod/pointer/set/abstract/00_paging_params.rb +1 -3
  78. data/mod/pointer/set/abstract/02_pointer/events.rb +1 -0
  79. data/mod/recaptcha/set/all/recaptcha.rb +1 -1
  80. data/mod/recaptcha/set/self/admin_info.rb +2 -3
  81. data/mod/rules/set/type/set.rb +1 -1
  82. data/mod/search/set/abstract/00_filter_helper.rb +2 -4
  83. data/mod/search/set/abstract/02_search_params.rb +1 -1
  84. data/mod/search/set/abstract/03_filter.rb +2 -0
  85. data/mod/search/set/abstract/03_filter/selectable_filtered_content.haml +2 -0
  86. data/mod/search/template/abstract/search/checkbox_item.haml +2 -3
  87. data/mod/settings/set/right/read.rb +1 -1
  88. data/mod/standard/set/all/rich_html/error.rb +1 -1
  89. data/mod/standard/set/all/rich_html/menu.rb +1 -1
  90. data/mod/standard/set/all/rich_html/show.rb +8 -0
  91. data/mod/tinymce_editor/set/all/reference_editor/nest_editor.rb +6 -8
  92. metadata +13 -5
  93. data/lib/card/tasks/card/seed.rake +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0438dd31f0c6101dffdd517571880742e6ab883b1d571f83fed3659dbd6cd693'
4
- data.tar.gz: de993267208ecc3c0fd5b10d8774c6f2b34bc2aa5c30816fcdd05f5fb6beb268
3
+ metadata.gz: c4f675190befef26d884a69d4e4e36901739bd130a68e20a68c430a3cf2ea56c
4
+ data.tar.gz: 54ae4a1da649e984b2c62a7ea430b4861c4b9d64a8f2004efff6f3000fc70349
5
5
  SHA512:
6
- metadata.gz: a4b2ed7e91ff665d2972b557851bf1402d2e0b16e21d709dffbe4b572ed21dca55939e9db76752252f67fda23e213310edfbd1b575704b3a980bb15850189725
7
- data.tar.gz: 48a01c10b26897dc7e4062a0940d18ed10bd9b37ff4cea488d0c54e774e48bb5694c5deac08ee25a4a047dc0b0137a2a1556e9f6059903160122aa61c0f6480b
6
+ metadata.gz: 93b245586c081b199f4a3b5a37a2b7b1265eb2b94bdac410a9cd388a0d66913ce5eced96220c79b4d504058fab1adb0d17cf736a0aa78320cc5af03ce7e4a909
7
+ data.tar.gz: 413929179c4ac6c258b79600dc9a5de24141dcb5b6d6cc7ccaed53d77e066150225dcbdbbf09d50c863b58578ec9613bbee8374db4ba0e6ebf32a4121b75bcfe
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.5
1
+ 0.9.6
@@ -85,7 +85,7 @@ class AddEmailCards < Card::Migration::Core
85
85
  end
86
86
 
87
87
  wagn_bot = Card[:wagn_bot].account.email.present? ? Card[:wagn_bot].name : nil
88
- token_emails_from = Card.global_setting("*invite+*from") || wagn_bot || "_user"
88
+ token_emails_from = Card::Rule.global_setting("*invite+*from") || wagn_bot || "_user"
89
89
  ["verification email", "password reset email"].each do |token_email_template_name|
90
90
  Card.create! name: "#{token_email_template_name}+#{Card[:from].name}", content: token_emails_from
91
91
  end
@@ -104,41 +104,31 @@ class Card < ApplicationRecord
104
104
  has_many :actions, -> { where(draft: [nil, false]).order :id }
105
105
  has_many :drafts, -> { where(draft: true).order :id }, class_name: :Action
106
106
 
107
- cattr_accessor :set_patterns, :serializable_attributes, :set_specific_attributes
108
- self.set_patterns = []
109
-
110
- # attributes that ActiveJob can handle
111
- def self.serializable_attr_accessor *args
112
- self.serializable_attributes = args
113
- attr_accessor(*args)
114
- end
107
+ cattr_accessor :set_patterns, :action_specific_attributes, :set_specific_attributes
115
108
 
116
- serializable_attr_accessor(
109
+ self.set_patterns = []
110
+ self.action_specific_attributes = [
117
111
  :action, :supercard, :superleft,
118
112
  :current_action,
119
- :comment, # obviated soon
120
- :update_referers, # wrong mechanism for this
121
- :update_all_users, # if the above is wrong then this one too
122
- :silent_change, # and this probably too
123
- # :remove_rule_stash,
113
+
124
114
  :last_action_id_before_edit,
125
115
  :only_storage_phase, # used to save subcards
126
116
  :changed_attributes,
117
+
127
118
  :skip, # skip event(s) for all cards in act
128
119
  :skip_in_action, # skip event for just this card
129
120
  :trigger, # trigger event(s) for all cards in act
130
- :trigger_in_action # trigger event for just this card
131
- )
121
+ :trigger_in_action, # trigger event for just this card
132
122
 
133
- alias_method :skip_event, :skip
134
- alias_method :skip_event_in_action, :skip_in_action
135
- alias_method :trigger_event, :trigger
136
- alias_method :trigger_event_in_action, :trigger_in_action
123
+ :comment, # obviated soon
137
124
 
138
- def serializable_attributes
139
- self.class.serializable_attributes + set_specific.keys
140
- end
125
+ # TODO: refactor following to use skip/trigger
126
+ :update_referers, # wrong mechanism for this
127
+ :update_all_users, # if the above is wrong then this one too
128
+ :silent_change # and this probably too
129
+ ]
141
130
 
131
+ attr_accessor(*action_specific_attributes)
142
132
  attr_accessor :follower_stash
143
133
 
144
134
  STAGE_CALLBACKS = [
@@ -107,6 +107,7 @@ class Card
107
107
  directors.each_pair do |card, _dir|
108
108
  card.expire
109
109
  card.director = nil
110
+ card.clear_action_specific_attributes
110
111
  end
111
112
  expire
112
113
  @directors = nil
@@ -26,16 +26,21 @@ class Card
26
26
  # event processed by ActiveJob.
27
27
  # This is the improvised resetup to get subcards working.
28
28
  def contextualize_for_delay act_id, card, env, auth, &block
29
- self.act = Act.find act_id if act_id
30
29
  with_env_and_auth env, auth do
31
- return yield unless act
32
-
33
- run_act(act.card || card) do
34
- act_card.director.run_delayed_event act, &block
30
+ if act_id && (self.act = Act.find act_id)
31
+ run_job_with_act act, card, &block
32
+ else
33
+ yield
35
34
  end
36
35
  end
37
36
  end
38
37
 
38
+ def run_job_with_act act, card, &block
39
+ run_act(act.card || card) do
40
+ act_card.director.run_delayed_event act, &block
41
+ end
42
+ end
43
+
39
44
  def with_env_and_auth env, auth
40
45
  Card::Auth.with auth do
41
46
  Card::Env.with env do
@@ -19,6 +19,8 @@ class Card
19
19
  card = card.card if card.is_a? StageDirector
20
20
  each { |dir| return dir if dir.card == card }
21
21
  dir = ActManager.fetch card, parent: @parent
22
+ return dir if dir.main
23
+
22
24
  dir.replace_card card if dir.card != card
23
25
  dir.main = false
24
26
  dir.parent = @parent
@@ -147,8 +147,6 @@ class Card
147
147
  Rails.configuration.database_configuration.dig Rails.env, "database"
148
148
  end
149
149
 
150
- private
151
-
152
150
  # set the id of the current user.
153
151
  def current_id= card_id
154
152
  @current = @as_id = @as_card = @current_roles = nil
@@ -27,10 +27,10 @@ class Card
27
27
  end
28
28
 
29
29
  def prepopulate_rule_caches
30
- prepopulate_cache("RULES") { Card.rule_cache }
31
- prepopulate_cache("READRULES") { Card.read_rule_cache }
32
- prepopulate_cache("USER_IDS") { Card.user_ids_cache }
33
- prepopulate_cache("RULES") { Card.rule_keys_cache }
30
+ prepopulate_cache("RULES") { Card::Rule.rule_cache }
31
+ prepopulate_cache("READRULES") { Card::Rule.read_rule_cache }
32
+ prepopulate_cache("USER_IDS") { Card::Rule.user_ids_cache }
33
+ prepopulate_cache("RULE_KEYS") { Card::Rule.rule_keys_cache }
34
34
  end
35
35
 
36
36
  # def prepopulate_card_cache
@@ -5,10 +5,9 @@ class Card
5
5
  # Env can differ for each request; Card.config should not.
6
6
  module Env
7
7
  extend LocationHistory
8
-
9
- SERIALIZABLE_ATTRIBUTES = ::Set.new %i[
10
- main_name params ip ajax html host protocol salt
11
- ]
8
+ extend RequestAssignments
9
+ extend SlotOptions
10
+ extend Serialization
12
11
 
13
12
  class << self
14
13
  def reset args={}
@@ -38,13 +37,11 @@ class Card
38
37
  self[:params] ||= {}
39
38
  end
40
39
 
41
- def slot_opts
42
- # FIXME: upgrade to safe parameters
43
- self[:slot_opts] ||= begin
44
- opts = params[:slot]&.clone || {}
45
- opts = opts.to_unsafe_h if opts.is_a? ActionController::Parameters
46
- opts.merge! shortcut_slot_opts
47
- opts.deep_symbolize_keys.slice(*Card::View::Options.slot_keys)
40
+ def hash hashish
41
+ case hashish
42
+ when Hash then hashish.clone
43
+ when ActionController::Parameters then hashish.to_unsafe_h
44
+ else {}
48
45
  end
49
46
  end
50
47
 
@@ -65,7 +62,7 @@ class Card
65
62
  end
66
63
 
67
64
  def localhost?
68
- self[:host] && self[:host] =~ /^localhost/
65
+ self[:host]&.match?(/^localhost/)
69
66
  end
70
67
 
71
68
  def ajax?
@@ -76,38 +73,8 @@ class Card
76
73
  !self[:controller] || self[:html]
77
74
  end
78
75
 
79
- def serialize
80
- @env.select { |k, _v| SERIALIZABLE_ATTRIBUTES.include?(k) }
81
- end
82
-
83
- # @param serialized_env [Hash]
84
- def with serialized_env
85
- tmp_env = serialize if @env
86
- @env ||= {}
87
- @env.update serialized_env
88
- yield
89
- ensure
90
- @env.update tmp_env if tmp_env
91
- end
92
-
93
76
  private
94
77
 
95
- def assign_ajax c
96
- c.request.xhr? || c.request.params[:simulate_xhr]
97
- end
98
-
99
- def assign_html c
100
- [nil, "html"].member?(c.params[:format])
101
- end
102
-
103
- def assign_host c
104
- Card.config.override_host || c.request.env["HTTP_HOST"]
105
- end
106
-
107
- def assign_protocol c
108
- Card.config.override_protocol || c.request.protocol
109
- end
110
-
111
78
  def method_missing method_id, *args
112
79
  case args.length
113
80
  when 0 then self[method_id]
@@ -115,17 +82,6 @@ class Card
115
82
  else super
116
83
  end
117
84
  end
118
-
119
- def shortcut_slot_opts
120
- opts = {}
121
- opts[:size] = params[:size].to_sym if params[:size]
122
- opts[:items] = { view: params[:item].to_sym } if slot_items_shortcut?
123
- opts
124
- end
125
-
126
- def slot_items_shortcut?
127
- params[:item].present? && !params.dig(:slot, :items, :view).present?
128
- end
129
85
  end
130
86
  end
131
87
  end
@@ -21,10 +21,23 @@ class Card
21
21
  end
22
22
 
23
23
  def protocol_and_host
24
- Card.config.protocol_and_host || "#{Card::Env[:protocol]}#{Card::Env[:host]}"
24
+ Card.config.protocol_and_host || "#{Env[:protocol]}#{Env[:host]}"
25
25
  end
26
26
 
27
- extend Location # ??
27
+ def cardname_from_url url
28
+ m = url.match cardname_from_url_regexp
29
+ m ? Card::Name[m[:mark]] : nil
30
+ end
31
+
32
+ private
33
+
34
+ def cardname_from_url_regexp
35
+ return unless Env[:host]
36
+
37
+ %r{#{Regexp.escape Env[:host]}/(?<mark>[^\?]+)}
38
+ end
39
+
40
+ extend Location # allows calls on Location constant, eg Location.card_url
28
41
  end
29
42
  end
30
43
  end
@@ -0,0 +1,24 @@
1
+ class Card
2
+ module Env
3
+ # environmental variables assigned based on request
4
+ module RequestAssignments
5
+ private
6
+
7
+ def assign_ajax c
8
+ c.request.xhr? || c.request.params[:simulate_xhr]
9
+ end
10
+
11
+ def assign_html c
12
+ [nil, "html"].member?(c.params[:format])
13
+ end
14
+
15
+ def assign_host c
16
+ Card.config.override_host || c.request.env["HTTP_HOST"]
17
+ end
18
+
19
+ def assign_protocol c
20
+ Card.config.override_protocol || c.request.protocol
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ class Card
2
+ module Env
3
+ # serializing environment (eg for delayed jobs)
4
+ module Serialization
5
+ SERIALIZABLE_ATTRIBUTES = ::Set.new %i[
6
+ main_name params ip ajax html host protocol salt
7
+ ]
8
+
9
+ # @param serialized_env [Hash]
10
+ def with serialized_env
11
+ tmp_env = serialize if @env
12
+ @env ||= {}
13
+ @env.update serialized_env
14
+ yield
15
+ ensure
16
+ @env.update tmp_env if tmp_env
17
+ end
18
+
19
+ def serialize
20
+ @env.select { |k, _v| SERIALIZABLE_ATTRIBUTES.include?(k) }
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ class Card
2
+ module Env
3
+ # slot-related environmental variable handling
4
+ module SlotOptions
5
+ def slot_opts
6
+ # FIXME: upgrade to safe parameters
7
+ self[:slot_opts] ||= interpret_slot_options
8
+ end
9
+
10
+ private
11
+
12
+ def interpret_slot_options
13
+ opts = hash params[:slot]
14
+ opts.merge! shortcut_slot_opts
15
+ opts.deep_symbolize_keys.slice(*Card::View::Options.slot_keys)
16
+ end
17
+
18
+ def shortcut_slot_opts
19
+ opts = {}
20
+ opts[:size] = params[:size].to_sym if params[:size]
21
+ opts[:items] = { view: params[:item].to_sym } if slot_items_shortcut?
22
+ opts
23
+ end
24
+
25
+ def slot_items_shortcut?
26
+ params[:item].present? && !params.dig(:slot, :items, :view).present?
27
+ end
28
+ end
29
+ end
30
+ end
@@ -53,15 +53,20 @@ class Card
53
53
  end
54
54
 
55
55
  def loud_error e, view
56
+ log_error e if focal? && voo.root?
56
57
  card.errors.add "#{view} view", rendering_error(e, view) if card.errors.empty?
57
58
  raise e
58
59
  end
59
60
 
60
61
  def quiet_error e, view
61
62
  # TODO: unify with Card::Error#report
63
+ log_error e
64
+ rendering_error e, view
65
+ end
66
+
67
+ def log_error e
62
68
  Rails.logger.info e.message
63
69
  Rails.logger.debug e.backtrace.join("\n")
64
- rendering_error e, view
65
70
  end
66
71
 
67
72
  def rendering_error exception, view
@@ -38,7 +38,11 @@ class Card
38
38
  end
39
39
 
40
40
  def preamble_bits
41
- [module_comment, module_chain, "cattr_accessor :options", "class << self"]
41
+ [module_comment,
42
+ module_chain,
43
+ "extend Card::Set::Pattern::Helper",
44
+ "cattr_accessor :options",
45
+ "class << self"]
42
46
  end
43
47
 
44
48
  def postamble
@@ -70,10 +70,14 @@ class Card
70
70
  # The derived codename is all lower case with underscores; "*" and ":" are removed
71
71
  def ensure_code_card name_or_args, content_or_args=nil
72
72
  name, args = standardize_ensure_args name_or_args, content_or_args
73
- args[:codename] = name.downcase.tr(" ", "_").tr(":*", "") unless args[:codename]
73
+ args[:codename] = codename_from_name(name) unless args[:codename]
74
74
  ensure_card_simplified name, args
75
75
  end
76
76
 
77
+ def codename_from_name name
78
+ name.downcase.tr(" ", "_").tr(":*", "")
79
+ end
80
+
77
81
  # create if card doesn't exist
78
82
  # updates existing card only if given attributes are different including
79
83
  # the name
@@ -1,14 +1,27 @@
1
1
  require "application_job"
2
2
 
3
3
  class Card
4
+ # attributes that ActiveJob can handle
5
+ def serializable_attributes
6
+ self.class.action_specific_attributes + set_specific.keys
7
+ end
8
+
4
9
  module Set
5
10
  class Event
6
11
  module DelayedEvent
7
12
  DELAY_STAGES = ::Set.new(%i[integrate_with_delay_stage
8
13
  integrate_with_delay_final_stage]).freeze
9
14
 
15
+ def priority
16
+ @priority || 10
17
+ end
18
+
10
19
  private
11
20
 
21
+ def process_delayed_job_opts opts
22
+ @priority = opts.delete :priority
23
+ end
24
+
12
25
  def with_delay? opts
13
26
  DELAY_STAGES.include?(opts[:after]) || DELAY_STAGES.include?(opts[:before])
14
27
  end
@@ -27,25 +40,37 @@ class Card
27
40
  def define_event_delaying_method
28
41
  @set_module.class_exec(self) do |event|
29
42
  define_method(event.delaying_method_name, proc do
30
- IntegrateWithDelayJob.set(queue: event.name).perform_later(
31
- Card::ActManager.act&.id, self, serialize_for_active_job,
32
- Card::Env.serialize, Card::Auth.serialize,
33
- event.simple_method_name
34
- )
43
+ IntegrateWithDelayJob
44
+ .set(set_delayed_job_args(event))
45
+ .perform_later(*perform_delayed_job_args(event))
35
46
  end)
36
47
  end
37
48
  end
38
49
 
39
50
  class IntegrateWithDelayJob < ApplicationJob
40
51
  def perform act_id, card, card_attribs, env, auth, method_name
41
- Card::Cache.renew
42
- card.deserialize_for_active_job! card_attribs
43
- ActManager.contextualize_delayed_event act_id, card, env, auth do
44
- card.send method_name
52
+ handle_perform do
53
+ load_card card, card_attribs
54
+ ActManager.contextualize_delayed_event act_id, card, env, auth do
55
+ card.send method_name
56
+ end
45
57
  end
58
+ end
59
+
60
+ def handle_perform
61
+ yield
62
+ rescue StandardError => error
63
+ Card::Error.report error, @card
64
+ raise error
46
65
  ensure
47
66
  ActManager.expire
48
67
  end
68
+
69
+ def load_card card, card_attribs
70
+ @card = card
71
+ Card::Cache.renew
72
+ card.deserialize_for_active_job! card_attribs
73
+ end
49
74
  end
50
75
  end
51
76
  end
@@ -58,6 +83,21 @@ class Card
58
83
  include_set_modules
59
84
  end
60
85
 
86
+ private
87
+
88
+ def set_delayed_job_args event
89
+ { queue: event.name, priority: event.priority }
90
+ end
91
+
92
+ def perform_delayed_job_args event
93
+ [Card::ActManager.act&.id,
94
+ self,
95
+ serialize_for_active_job,
96
+ Card::Env.serialize,
97
+ Card::Auth.serialize,
98
+ event.simple_method_name]
99
+ end
100
+
61
101
  def serialize_for_active_job
62
102
  serializable_attributes.each_with_object({}) do |name, hash|
63
103
  hash[name] = instance_variable_get("@#{name}")