Class: Card

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
CarrierWave::Mount
Defined in:
lib/card.rb,
lib/card/env.rb,
lib/card/set.rb,
lib/card/auth.rb,
lib/card/name.rb,
lib/card/view.rb,
lib/card/cache.rb,
lib/card/error.rb,
lib/card/query.rb,
lib/card/format.rb,
lib/card/mailer.rb,
lib/card/content.rb,
lib/card/codename.rb,
lib/card/mod/dirs.rb,
lib/card/subcards.rb,
lib/card/reference.rb,
lib/card/set/event.rb,
lib/card/set/trait.rb,
lib/card/view/stub.rb,
lib/card/auth/proxy.rb,
lib/card/auth/setup.rb,
lib/card/mod/loader.rb,
lib/card/query/join.rb,
lib/card/set/basket.rb,
lib/card/set/format.rb,
lib/card/set/loader.rb,
lib/card/view/cache.rb,
lib/card/view/fetch.rb,
lib/generators/card.rb,
lib/card/act_manager.rb,
lib/card/env/success.rb,
lib/card/format/nest.rb,
lib/card/query/value.rb,
lib/card/set/helpers.rb,
lib/card/set_pattern.rb,
lib/card/auth/current.rb,
lib/card/content/diff.rb,
lib/card/env/location.rb,
lib/card/format/error.rb,
lib/card/format/names.rb,
lib/card/view/options.rb,
lib/card/content/chunk.rb,
lib/card/content/clean.rb,
lib/card/format/render.rb,
lib/card/name/variants.rb,
lib/card/query/helpers.rb,
lib/card/query/sorting.rb,
lib/card/content/parser.rb,
lib/card/format/content.rb,
lib/card/migration/core.rb,
lib/card/name/view_name.rb,
lib/card/set/i18n_scope.rb,
lib/card/cache/temporary.rb,
lib/card/set/inheritance.rb,
lib/card/view/visibility.rb,
lib/card/auth/permissions.rb,
lib/card/cache/persistent.rb,
lib/card/content/diff/lcs.rb,
lib/card/content/truncate.rb,
lib/card/format/nest/main.rb,
lib/card/format/nest/view.rb,
lib/card/migration/import.rb,
lib/card/query/attributes.rb,
lib/card/set/advanced_api.rb,
lib/card/act_manager/stage.rb,
lib/card/cache/prepopulate.rb,
lib/card/format/nest/fetch.rb,
lib/card/format/permission.rb,
lib/card/model/save_helper.rb,
lib/card/query/conjunctions.rb,
lib/card/content/diff/result.rb,
lib/card/format/registration.rb,
lib/card/query/sql_statement.rb,
lib/card/env/location_history.rb,
lib/card/query/interpretation.rb,
lib/card/format/nest/subformat.rb,
lib/card/content/diff/processor.rb,
lib/card/name/fields_and_traits.rb,
lib/card/migration/import/merger.rb,
lib/card/act_manager/stage_director.rb,
lib/card/query/relational_attributes.rb,
lib/card/migration/import/import_data.rb,
lib/generators/card/set/set_generator.rb,
lib/card/act_manager/subdirector_array.rb,
lib/generators/card/format/format_generator.rb,
lib/generators/card/migration/migration_generator.rb,
lib/card/migration/import/import_data/card_content.rb,
lib/card/migration/import/import_data/card_attributes.rb,
mod/core/format/data_format.rb,
mod/core/format/html_format.rb,
mod/core/format/text_format.rb,
mod/basic_formats/format/js_format.rb,
mod/email/format/email_html_format.rb,
mod/email/format/email_text_format.rb,
mod/basic_formats/format/css_format.rb,
mod/basic_formats/format/csv_format.rb,
mod/basic_formats/format/rss_format.rb,
mod/basic_formats/format/xml_format.rb,
mod/basic_formats/format/file_format.rb,
mod/basic_formats/format/json_format.rb,
mod/core/chunk/nest.rb,
mod/core/chunk/literal.rb,
mod/core/chunk/reference.rb,
mod/core/chunk/view_stub.rb,
mod/history/lib/card/act.rb,
mod/history/lib/card/action.rb,
mod/history/lib/card/change.rb,
mod/settings/lib/card/setting.rb,
mod/email/lib/card/follow_option.rb,
mod/history/lib/card/action/admin.rb,
mod/history/lib/card/action/differ.rb,
mod/history/lib/card/act/act_renderer.rb,
mod/history/lib/card/action/action_renderer.rb,
mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb,
mod/history/lib/card/act/act_renderer/relative_act_renderer.rb,
tmpsets/set/mod001-core/all/erb.rb,
tmpsets/set/mod001-core/all/haml.rb,
tmpsets/set/mod001-core/all/name.rb,
tmpsets/set/mod001-core/all/type.rb,
tmpsets/set/mod001-core/all/event.rb,
tmpsets/set/mod001-core/all/fetch.rb,
tmpsets/set/mod001-core/all/rules.rb,
tmpsets/set/mod001-core/all/trash.rb,
tmpsets/set/mod001-core/all/utils.rb,
tmpsets/set/mod012-email/right/cc.rb,
tmpsets/set/mod012-email/right/to.rb,
tmpsets/set/mod001-core/all/actify.rb,
tmpsets/set/mod001-core/all/export.rb,
tmpsets/set/mod001-core/all/phases.rb,
tmpsets/set/mod001-core/all/stages.rb,
tmpsets/set/mod001-core/all/states.rb,
tmpsets/set/mod012-email/right/bcc.rb,
tmpsets/set/mod001-core/all/content.rb,
tmpsets/set/mod001-core/all/pattern.rb,
tmpsets/set/mod012-email/all/follow.rb,
tmpsets/set/mod012-email/all/notify.rb,
tmpsets/set/mod012-email/right/from.rb,
tmpsets/set/mod012-email/self/never.rb,
tmpsets/set/mod014-admin/self/admin.rb,
tmpsets/set/mod001-core/all/subcards.rb,
tmpsets/set/mod010-machines/type/css.rb,
tmpsets/set/mod012-email/self/always.rb,
tmpsets/set/mod012-email/self/edited.rb,
tmpsets/set/mod012-email/self/follow.rb,
tmpsets/set/mod016-standard/self/now.rb,
tmpsets/set/mod016-standard/type/set.rb,
tmpsets/set/mod016-standard/type/uri.rb,
tmpsets/set/mod017-account/type/user.rb,
tmpsets/set/mod010-machines/type/scss.rb,
tmpsets/set/mod010-machines/type/skin.rb,
tmpsets/set/mod011-settings/self/help.rb,
tmpsets/set/mod011-settings/self/read.rb,
tmpsets/set/mod012-email/all/observer.rb,
tmpsets/set/mod012-email/right/follow.rb,
tmpsets/set/mod012-email/self/created.rb,
tmpsets/set/mod014-admin/self/version.rb,
tmpsets/set/mod016-standard/all/error.rb,
tmpsets/set/mod016-standard/all/links.rb,
tmpsets/set/mod016-standard/self/foot.rb,
tmpsets/set/mod016-standard/type/date.rb,
tmpsets/set/mod016-standard/type/list.rb,
tmpsets/set/mod017-account/right/salt.rb,
tmpsets/set/mod001-core/all/collection.rb,
tmpsets/set/mod001-core/all/initialize.rb,
tmpsets/set/mod001-core/all/references.rb,
tmpsets/set/mod001-core/all/templating.rb,
tmpsets/set/mod001-core/all/view_cache.rb,
tmpsets/set/mod002-history/all/actions.rb,
tmpsets/set/mod002-history/all/history.rb,
tmpsets/set/mod011-settings/right/help.rb,
tmpsets/set/mod011-settings/right/read.rb,
tmpsets/set/mod011-settings/self/input.rb,
tmpsets/set/mod011-settings/self/style.rb,
tmpsets/set/mod016-standard/type/basic.rb,
tmpsets/set/mod017-account/all/account.rb,
tmpsets/set/mod017-account/right/email.rb,
tmpsets/set/mod017-account/right/token.rb,
tmpsets/set/mod017-account/self/signin.rb,
tmpsets/set/mod017-account/type/signup.rb,
tmpsets/set/mod001-core/all/active_card.rb,
tmpsets/set/mod001-core/all/permissions.rb,
tmpsets/set/mod004-pointer/type/pointer.rb,
tmpsets/set/mod011-settings/right/style.rb,
tmpsets/set/mod011-settings/self/create.rb,
tmpsets/set/mod011-settings/self/delete.rb,
tmpsets/set/mod011-settings/self/layout.rb,
tmpsets/set/mod011-settings/self/script.rb,
tmpsets/set/mod011-settings/self/thanks.rb,
tmpsets/set/mod011-settings/self/update.rb,
tmpsets/set/mod012-email/all/email_html.rb,
tmpsets/set/mod012-email/all/email_text.rb,
tmpsets/set/mod016-standard/all/comment.rb,
tmpsets/set/mod016-standard/rstar/rules.rb,
tmpsets/set/mod016-standard/self/alerts.rb,
tmpsets/set/mod016-standard/self/navbox.rb,
tmpsets/set/mod016-standard/self/recent.rb,
tmpsets/set/mod016-standard/self/search.rb,
tmpsets/set/mod016-standard/type/number.rb,
tmpsets/set/mod016-standard/type/phrase.rb,
tmpsets/set/mod016-standard/type/toggle.rb,
tmpsets/set/mod017-account/right/status.rb,
tmpsets/set/mod003-basic_formats/all/rss.rb,
tmpsets/set/mod009-basic_types/type/html.rb,
tmpsets/set/mod011-settings/right/create.rb,
tmpsets/set/mod011-settings/right/delete.rb,
tmpsets/set/mod011-settings/right/script.rb,
tmpsets/set/mod011-settings/right/update.rb,
tmpsets/set/mod011-settings/self/captcha.rb,
tmpsets/set/mod011-settings/self/default.rb,
tmpsets/set/mod011-settings/self/options.rb,
tmpsets/set/mod011-settings/type/setting.rb,
tmpsets/set/mod012-email/right/followers.rb,
tmpsets/set/mod012-email/right/following.rb,
tmpsets/set/mod013-carrierwave/type/file.rb,
tmpsets/set/mod014-admin/self/admin_info.rb,
tmpsets/set/mod015-developer/right/debug.rb,
tmpsets/set/mod016-standard/type/session.rb,
tmpsets/set/mod017-account/right/account.rb,
tmpsets/set/mod003-basic_formats/all/base.rb,
tmpsets/set/mod003-basic_formats/all/file.rb,
tmpsets/set/mod003-basic_formats/all/json.rb,
tmpsets/set/mod003-basic_formats/all/text.rb,
tmpsets/set/mod011-settings/right/comment.rb,
tmpsets/set/mod011-settings/right/default.rb,
tmpsets/set/mod011-settings/self/add_help.rb,
tmpsets/set/mod011-settings/self/autoname.rb,
tmpsets/set/mod013-carrierwave/type/image.rb,
tmpsets/set/mod015-developer/all/view_viz.rb,
tmpsets/set/mod016-standard/type/cardtype.rb,
tmpsets/set/mod017-account/right/password.rb,
tmpsets/set/mod001-core/abstract/code_file.rb,
tmpsets/set/mod003-basic_formats/self/head.rb,
tmpsets/set/mod011-settings/right/add_help.rb,
tmpsets/set/mod011-settings/self/on_create.rb,
tmpsets/set/mod011-settings/self/on_delete.rb,
tmpsets/set/mod011-settings/self/on_update.rb,
tmpsets/set/mod011-settings/self/structure.rb,
tmpsets/set/mod015-developer/all/event_viz.rb,
tmpsets/set/mod016-standard/self/codenames.rb,
tmpsets/set/mod016-standard/type/listed_by.rb,
tmpsets/set/mod003-basic_formats/all/all_js.rb,
tmpsets/set/mod004-pointer/self/script_mods.rb,
tmpsets/set/mod010-machines/abstract/script.rb,
tmpsets/set/mod011-settings/right/structure.rb,
tmpsets/set/mod012-email/right/html_message.rb,
tmpsets/set/mod001-core/all/location_history.rb,
tmpsets/set/mod001-core/all/name_validations.rb,
tmpsets/set/mod003-basic_formats/all/all_css.rb,
tmpsets/set/mod003-basic_formats/all/all_csv.rb,
tmpsets/set/mod010-machines/self/script_slot.rb,
tmpsets/set/mod010-machines/self/style_cards.rb,
tmpsets/set/mod010-machines/type/java_script.rb,
tmpsets/set/mod011-settings/self/accountable.rb,
tmpsets/set/mod012-email/right/follow_fields.rb,
tmpsets/set/mod012-email/type/email_template.rb,
tmpsets/set/mod016-standard/all/list_changes.rb,
tmpsets/set/mod016-standard/right/discussion.rb,
tmpsets/set/mod016-standard/type/layout_type.rb,
tmpsets/set/mod016-standard/type/search_type.rb,
tmpsets/set/mod005-ace_editor/self/script_ace.rb,
tmpsets/set/mod012-email/self/follow_defaults.rb,
tmpsets/set/mod017-account/self/account_links.rb,
tmpsets/set/mod018-bootstrap/self/script_mods.rb,
tmpsets/set/mod001-core/all/tracked_attributes.rb,
tmpsets/set/mod002-history/all/content_history.rb,
tmpsets/set/mod004-pointer/abstract/01_pointer.rb,
tmpsets/set/mod004-pointer/self/script_editors.rb,
tmpsets/set/mod008-solid_cache/all/solid_cache.rb,
tmpsets/set/mod009-basic_types/type/plain_text.rb,
tmpsets/set/mod010-machines/all/reset_machines.rb,
tmpsets/set/mod010-machines/self/script_jquery.rb,
tmpsets/set/mod010-machines/type/coffee_script.rb,
tmpsets/set/mod011-settings/self/follow_fields.rb,
tmpsets/set/mod011-settings/self/options_label.rb,
tmpsets/set/mod016-standard/all/rich_html/form.rb,
tmpsets/set/mod016-standard/all/rich_html/menu.rb,
tmpsets/set/mod016-standard/right/when_created.rb,
tmpsets/set/mod016-standard/rstar/rules_editor.rb,
tmpsets/set/mod018-bootstrap/self/bootstrap_js.rb,
tmpsets/set/mod018-bootstrap/self/smartmenu_js.rb,
tmpsets/set/mod010-machines/right/machine_cache.rb,
tmpsets/set/mod010-machines/right/machine_input.rb,
tmpsets/set/mod011-settings/abstract/permission.rb,
tmpsets/set/mod016-standard/all/rich_html/modal.rb,
tmpsets/set/mod018-bootstrap/all/bootstrap/form.rb,
tmpsets/set/mod018-bootstrap/all/bootstrap/tabs.rb,
tmpsets/set/mod018-bootstrap/all/rich_bootstrap.rb,
tmpsets/set/mod018-bootstrap/self/smartmenu_css.rb,
tmpsets/set/mod004-pointer/abstract/code_pointer.rb,
tmpsets/set/mod008-solid_cache/right/solid_cache.rb,
tmpsets/set/mod010-machines/right/machine_output.rb,
tmpsets/set/mod011-settings/self/recent_settings.rb,
tmpsets/set/mod016-standard/all/rich_html/header.rb,
tmpsets/set/mod018-bootstrap/all/bootstrap/table.rb,
tmpsets/set/mod005-ace_editor/abstract/ace_editor.rb,
tmpsets/set/mod010-machines/self/script_card_menu.rb,
tmpsets/set/mod016-standard/all/rich_html/content.rb,
tmpsets/set/mod016-standard/all/rich_html/editing.rb,
tmpsets/set/mod016-standard/all/rich_html/toolbar.rb,
tmpsets/set/mod016-standard/all/rich_html/wrapper.rb,
tmpsets/set/mod018-bootstrap/all/bootstrap/helper.rb,
tmpsets/set/mod018-bootstrap/self/bootstrap_cards.rb,
tmpsets/set/mod011-settings/self/default_html_view.rb,
tmpsets/set/mod011-settings/self/table_of_contents.rb,
tmpsets/set/mod013-carrierwave/abstract/attachment.rb,
tmpsets/set/mod016-standard/right/when_last_edited.rb,
tmpsets/set/mod018-bootstrap/all/bootstrap/wrapper.rb,
tmpsets/set/mod004-pointer/abstract/01_pointer/edit.rb,
tmpsets/set/mod008-solid_cache/abstract/solid_cache.rb,
tmpsets/set/mod018-bootstrap/self/bootswatch_shared.rb,
tmpsets/set/mod005-ace_editor/self/script_ace_config.rb,
tmpsets/set/mod012-email/type_plus_right/user/follow.rb,
tmpsets/set/mod004-pointer/self/script_pointer_config.rb,
tmpsets/set/mod010-machines/self/script_jquery_helper.rb,
tmpsets/set/mod003-basic_formats/self/01_head/javascript.rb,
tmpsets/set/mod010-machines/self/script_html5shiv_printshiv.rb,
tmpsets/set/mod010-machines/self/style_bootstrap_compatible.rb,
tmpsets/set/mod010-machines/self/style_jquery_ui_smoothness.rb,
tmpsets/set/mod006-prosemirror_editor/self/script_prosemirror.rb,
tmpsets/set/mod006-prosemirror_editor/abstract/prosemirror_editor.rb,
tmpsets/set/mod006-prosemirror_editor/self/script_prosemirror_config.rb

Overview

require_dependency File.expand_path("../../action/action_renderer", FILE)

Defined Under Namespace

Modules: Auth, Env, FollowOption, Generators, Mod, Model, Set, Setting, Version Classes: Act, ActManager, Action, Cache, Change, Codename, Content, Error, Format, Mailer, Migration, Name, Query, Reference, Subcards, View

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#follower_stashObject

Returns the value of attribute follower_stash.



62
63
64
# File 'lib/card.rb', line 62

def follower_stash
  @follower_stash
end

Class Method Details

.cacheObject



5
6
7
# File 'lib/card/cache.rb', line 5

def cache
  Card::Cache[Card]
end

.configObject



8
9
10
# File 'lib/card/mod/loader.rb', line 8

def config
  Cardio.config
end

.const_missing(const) ⇒ Integer

If a card has the codename example, then Card::ExampleID should return the id for that card. This method makes that help.

Parameters:

  • const (Const)

Returns:

  • (Integer)

Raises:

  • error if codename is missing



84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/card/codename.rb', line 84

def self.const_missing const
  if const.to_s =~ /^([A-Z]\S*)ID$/ &&
     (code = Regexp.last_match(1).underscore.to_sym)
    if (card_id = Codename[code])
      const_set const, card_id
    else
      raise "Missing codename #{code} (#{const})"
    end
  else
    super
  end
end

.expire(name) ⇒ Object



24
25
26
27
28
# File 'lib/card/cache.rb', line 24

def expire name
  key = name.to_name.key
  return unless (card = Card.cache.read key)
  card.expire
end

.pathsObject



12
13
14
# File 'lib/card/mod/loader.rb', line 12

def paths
  Cardio.paths
end

.serializable_attr_accessor(*args) ⇒ Object

attributes that ActiveJob can handle



17
18
19
20
# File 'lib/card.rb', line 17

def self.serializable_attr_accessor *args
  self.serializable_attributes = args
  attr_accessor(*args)
end

.write_to_cache(card, opts) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/card/cache.rb', line 9

def write_to_cache card, opts
  if opts[:local_only]
    write_to_soft_cache card
  elsif Card.cache
    Card.cache.write card.key, card
    Card.cache.write "~#{card.id}", card.key if card.id.to_i.nonzero?
  end
end

.write_to_soft_cache(card) ⇒ Object



18
19
20
21
22
# File 'lib/card/cache.rb', line 18

def write_to_soft_cache card
  return unless Card.cache
  Card.cache.soft.write card.key, card
  Card.cache.soft.write "~#{card.id}", card.key if card.id.to_i.nonzero?
end

Instance Method Details

#clean_after_stage_failObject



11
12
13
14
15
# File 'lib/card/act_manager/stage_director.rb', line 11

def clean_after_stage_fail
  @action = nil
  expire_pieces
  subcards.each(&:expire_pieces)
end

#deserialize_for_active_job!(attr, env, current_id) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/card/set/event.rb', line 2

def deserialize_for_active_job! attr, env, current_id
  attr.each do |attname, args|
    # symbols are not allowed so all symbols arrive here as strings
    # convert strings that were symbols before back to symbols
    value = args[:symbol] ? args[:value].to_sym : args[:value]
    instance_variable_set("@#{attname}", value)
  end
  include_set_modules
  # If active jobs (and hence the integrate_with_delay events) don't run
  # in a background process then Card::Env.deserialize! decouples the
  # controller's params hash and the Card::Env's params hash with the
  # effect that params changes in the CardController get lost
  # (a crucial example are success params that are processed in
  # CardController#update_params_for_success)
  return if Wagn.config.active_job.queue_adapter == :inline
  Card::Env.deserialize! env
  Card::Auth.current_id = current_id
end

#expire_subcardsObject



17
18
19
# File 'lib/card/subcards.rb', line 17

def expire_subcards
  subcards.clear
end

#left_id=(card_or_id) ⇒ Object



291
292
293
# File 'lib/card/subcards.rb', line 291

def left_id= card_or_id
  write_card_or_id :left_id, card_or_id
end

#log_event_call(event) ⇒ Object



34
35
36
37
38
# File 'lib/card/set/event.rb', line 34

def log_event_call event
  Rails.logger.debug "#{name}: #{event}"
  # puts "#{name}: #{event}"
  # puts "#{Card::ActManager.to_s}".green
end

#restore_changes_informationObject



3
4
5
6
7
8
9
# File 'lib/card/act_manager/stage_director.rb', line 3

def restore_changes_information
  return unless @previously_changed
  @changed_attributes = ActiveSupport::HashWithIndifferentAccess.new
  @previously_changed.each do |k, (old, _new)|
    @changed_attributes[k] = old
  end
end

#right_id=(card_or_id) ⇒ Object



287
288
289
# File 'lib/card/subcards.rb', line 287

def right_id= card_or_id
  write_card_or_id :right_id, card_or_id
end

#serialize_for_active_jobObject



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/card/set/event.rb', line 21

def serialize_for_active_job
  serializable_attributes.each_with_object({}) do |name, hash|
    value = instance_variable_get("@#{name}")
    hash[name] =
      # ActiveJob doesn't accept symbols as arguments
      if value.is_a? Symbol
        { value: value.to_s, symbol: true }
      else
        { value: value }
      end
  end
end

#subcardsObject



13
14
15
# File 'lib/card/subcards.rb', line 13

def subcards
  @subcards ||= Subcards.new(self)
end

#type_id=(card_or_id) ⇒ Object



295
296
297
# File 'lib/card/subcards.rb', line 295

def type_id= card_or_id
  write_card_or_id :type_id, card_or_id
end

#with_id_when_exists(card, &block) ⇒ Object



316
317
318
# File 'lib/card/subcards.rb', line 316

def with_id_when_exists card, &block
  card.director.call_after_store(&block)
end

#write_card_or_id(attribute, card_or_id) ⇒ Object



299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
# File 'lib/card/subcards.rb', line 299

def write_card_or_id attribute, card_or_id
  if card_or_id.is_a? Card
    card = card_or_id
    if card.id
      write_attribute attribute, card.id
    else
      add_subcard card
      card.director.prior_store = true
      with_id_when_exists(card) do |id|
        write_attribute attribute, id
      end
    end
  else
    write_attribute attribute, card_or_id
  end
end