Sha256: 87e8614f2f8ae5d0250a4f244c673b98420e48ef978da23091ef6cb2119e9ad5

Contents?: true

Size: 1.97 KB

Versions: 14

Compression:

Stored size: 1.97 KB

Contents

class Card
  module Machine
    REFRESHED="MACHINE_ASSETS_REFRESHED".freeze

    class << self
      def refresh_script_and_style
        return unless refresh_script_and_style?
        update_if_source_file_changed Card[:all, :script]
        update_if_source_file_changed Card[:all, :style]
      end

      private

      def refresh_script_and_style?
        Cardio.config.eager_machine_refresh || cautious_refresh?
      end

      def cautious_refresh?
        return false unless Card::Cache.persistent_cache
        return false if Card.cache.read REFRESHED
        Card.cache.write REFRESHED, true
      end

      # regenerates the machine output if a source file of a input card
      # has been changed
      def update_if_source_file_changed machine_card
        return unless (output_updated = output_last_updated(machine_card))
        input_cards_with_source_files(machine_card) do |i_card, files|
          files.each do |path|
            next unless File.mtime(path) > output_updated
            i_card.expire_machine_cache
            return machine_card.regenerate_machine_output
          end
        end
      end

      def output_last_updated machine_card
        return unless (output_card = machine_card&.machine_output_card)
        if output_card.coded?
          File.mtime output_card.file.path
        else
          output_card.updated_at
        end
      end

      def input_cards_with_source_files card
        card.machine_input_card.extended_item_cards.each do |i_card|
          next unless i_card.codename
          next unless i_card.respond_to?(:existing_source_paths)
          yield i_card, i_card.existing_source_paths
        end
      end

      def source_files card
        files = []
        card.machine_input_card.extended_item_cards.each do |i_card|
          next unless i_card.codename
          next unless i_card.respond_to?(:existing_source_paths)
          files << i_card.existing_source_paths
        end
        files.flatten
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
card-1.94.1 mod/machines/lib/card/machine.rb
card-1.94.0 mod/machines/lib/card/machine.rb
card-1.93.13 mod/machines/lib/card/machine.rb
card-1.93.12 mod/machines/lib/card/machine.rb
card-1.93.11 mod/machines/lib/card/machine.rb
card-1.93.10 mod/machines/lib/card/machine.rb
card-1.93.9 mod/machines/lib/card/machine.rb
card-1.93.8 mod/machines/lib/card/machine.rb
card-1.93.7 mod/machines/lib/card/machine.rb
card-1.93.6 mod/machines/lib/card/machine.rb
card-1.93.5 mod/machines/lib/card/machine.rb
card-1.93.4 mod/machines/lib/card/machine.rb
card-1.93.3 mod/machines/lib/card/machine.rb
card-1.93.2 mod/machines/lib/card/machine.rb