Class: Card::ActManager

Inherits:
Object
  • Object
show all
Defined in:
lib/card/act_manager.rb,
lib/card/act_manager/stage.rb,
lib/card/act_manager/stage_director.rb,
lib/card/act_manager/subdirector_array.rb

Overview

available values: dirty attributes yes | yes | yes params yes | yes | yes success yes | yes | yes no session yes | yes | yes no

Explanation: yes! the recommended stage to do that yes ok to do it here no not recommended; chance to mess things up but if something forces you to do it here you can try no! never do it here. it won't work or will break things

if there is only a single entry in a phase column it counts for all stages of that phase

1) 'insecure' means a change of a card attribute that can possibly make the card invalid to save 2) 'secure' means you are sure that the change doesn't affect the validation 3) If you call 'create', 'update_attributes' or 'save' the card will become part of the same act and all stage of the validation and storage phase will be executed immediately for that card. The integration phase will be executed together with the act card and its subcards 4) This means if an exception is raised in the validation or storage phase everything will rollback. If the integration phase fails the db changes of the other two phases will remain persistent.

Defined Under Namespace

Modules: Stage Classes: StageDirector, StageSubdirector, SubdirectorArray

Class Method Summary collapse

Class Method Details

.act_directorObject



77
78
79
80
# File 'lib/card/act_manager.rb', line 77

def act_director
  return unless act_card
  act_card.director
end

.add(director) ⇒ Object



116
117
118
119
# File 'lib/card/act_manager.rb', line 116

def add director
  # Rails.logger.debug "added: #{director.card.name}".green
  directors[director.card] = director
end

.card_changed(old_card) ⇒ Object



121
122
123
124
# File 'lib/card/act_manager.rb', line 121

def card_changed old_card
  return unless (director = @directors.delete old_card)
  add director
end

.clearObject



86
87
88
89
90
91
92
# File 'lib/card/act_manager.rb', line 86

def clear
  ActManager.act_card = nil
  directors.each_pair do |card, _dir|
    card.director = nil
  end
  @directors = nil
end

.deep_delete(director) ⇒ Object



132
133
134
135
136
137
# File 'lib/card/act_manager.rb', line 132

def deep_delete director
  director.subdirectors.each do |subdir|
    deep_delete subdir
  end
  delete director
end

.delete(director) ⇒ Object



126
127
128
129
130
# File 'lib/card/act_manager.rb', line 126

def delete director
  return unless @directors
  @directors.delete director.card
  director.delete
end

.directorsObject



82
83
84
# File 'lib/card/act_manager.rb', line 82

def directors
  @directors ||= {}
end

.fetch(card, opts = {}) ⇒ Object



94
95
96
97
98
99
100
# File 'lib/card/act_manager.rb', line 94

def fetch card, opts={}
  return directors[card] if directors[card]
  directors.each_key do |dir_card|
    return dir_card.director if dir_card.name == card.name
  end
  directors[card] = new_director card, opts
end

.include?(name) ⇒ Boolean

Returns:

  • (Boolean)


102
103
104
# File 'lib/card/act_manager.rb', line 102

def include? name
  directors.keys.any? { |card| card.key == name.to_name.key }
end

.new_director(card, opts = {}) ⇒ Object



106
107
108
109
110
111
112
113
114
# File 'lib/card/act_manager.rb', line 106

def new_director card, opts={}
  if opts[:parent]
    StageSubdirector.new card, opts
  elsif act_card && act_card != card && running_act?
    act_card.director.subdirectors.add card
  else
    StageDirector.new card
  end
end

.running_act?Boolean

Returns:

  • (Boolean)


139
140
141
# File 'lib/card/act_manager.rb', line 139

def running_act?
  (dir = act_director) && dir.running?
end

.to_sObject



143
144
145
146
# File 'lib/card/act_manager.rb', line 143

def to_s
  act_director.to_s
  #directors.values.map(&:to_s).join "\n"
end