Sha256: 5bca09fc54220fbe264489c3307940647f24b5210820df9c33364e2865dd348e

Contents?: true

Size: 1.67 KB

Versions: 17

Compression:

Stored size: 1.67 KB

Contents

module Cardio
  module Schema
    def assume_migrated_upto_version type
      Cardio.schema_mode(type) do
        ActiveRecord::Schema.assume_migrated_upto_version(
          Cardio.schema(type), Cardio.migration_paths(type)
        )
      end
    end

    def schema_suffix type
      case type
      when :core_cards then "_core_cards"
      when :deck_cards then "_deck_cards"
      else ""
      end
    end

    def schema_mode type
      with_suffix type do
        paths = Cardio.migration_paths(type)
        yield(paths)
      end
    end

    def with_suffix type
      return yield unless (new_suffix = Cardio.schema_suffix type) &&
                          new_suffix.present?
      original_name = ActiveRecord::Base.schema_migrations_table_name
      ActiveRecord::Base.schema_migrations_table_name =
        "#{original_name}#{new_suffix}"
      ActiveRecord::SchemaMigration.table_name = "#{original_name}#{new_suffix}"
      # ActiveRecord::Base.table_name_suffix = new_suffix
      # ActiveRecord::SchemaMigration.reset_table_name
      # original_suffix = ActiveRecord::Base.table_name_suffix
      yield
      ActiveRecord::Base.schema_migrations_table_name = original_name
      ActiveRecord::SchemaMigration.table_name = original_name
      # ActiveRecord::Base.table_name_suffix = original_suffix
      # ActiveRecord::SchemaMigration.reset_table_name
    end

    def schema type=nil
      File.read(schema_stamp_path(type)).strip
    end

    def schema_stamp_path type
      root_dir = (type == :deck_cards ? root : gem_root)
      stamp_dir = ENV["SCHEMA_STAMP_PATH"] || File.join(root_dir, "db")

      File.join stamp_dir, "version#{schema_suffix type}.txt"
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
card-1.93.6 lib/cardio/schema.rb
card-1.93.5 lib/cardio/schema.rb
card-1.93.4 lib/cardio/schema.rb
card-1.93.3 lib/cardio/schema.rb
card-1.93.2 lib/cardio/schema.rb
card-1.93.1 lib/cardio/schema.rb
card-1.93.0 lib/cardio/schema.rb
card-1.92.2 lib/cardio/schema.rb
card-1.92.1 lib/cardio/schema.rb
card-1.92 lib/cardio/schema.rb
card-1.91 lib/cardio/schema.rb
card-1.21.0 lib/cardio/schema.rb
card-1.20.4 lib/cardio/schema.rb
card-1.20.3 lib/cardio/schema.rb
card-1.20.2 lib/cardio/schema.rb
card-1.20.1 lib/cardio/schema.rb
card-1.20.0 lib/cardio/schema.rb