format :html do view :debug, perms: :always_ok? do core_section_config(card).map do |item| section(*item) end end def always_ok? Card::Auth.always_ok? end def core_section_config subject [["Sets", tabs("set modules" => set_modules_accordion(subject), "all modules" => singleton_modules_list(subject), "patterns" => set_patterns_breadcrumb(subject))], ["Views", tabs("by format" => subformat(subject)._render_views_by_format, "by name" => subformat(subject)._render_views_by_name)], ["Events", tabs(create: "
#{subject.events(:create)}", update: "
#{subject.events(:update)}", delete: "
#{subject.events(:delete)}")], ["Cache/DB Comparison", cache_comparison_table(subject)]] end def set_modules_accordion subject accordion do set_module_ancestor_hash(subject).each_with_object([]) do |(setmod, anc), array| context = setmod.to_name.key array << accordion_item(setmod, body: list_group(anc), context: context) end end end def set_module_ancestor_hash subject subject.set_modules.each_with_object({}) do |sm, hash| ans = sm.ancestors ans.shift hash[sm.to_s] = ans if ans.present? end end def set_patterns_breadcrumb subject links = subject.patterns.reverse.map { |pattern| link_to_card pattern.to_s } breadcrumb links end def singleton_modules_list subject all_mods = subject.singleton_class.ancestors.map(&:to_s) all_mods.shift list_group all_mods end def cache_comparison_table subject cache_card = Card.fetch(subject.key) db_card = Card.find_by_key(subject.key) return unless cache_card && db_card table( %i[name updated_at updater_id content inspect].map do |field| [field.to_s, h(cache_card.send(field)), h(db_card.send(field))] end, header: ["Field", "Cache Val", "Database Val"] ) end def section title, content %(