Sha256: 44b50707e3c55a362d7dac0288aa50c9270d351c8771466a8e32f65b50fe604a

Contents?: true

Size: 1.35 KB

Versions: 16

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

# Require this file to append Apartment rake tasks to ActiveRecord db rake tasks
# Enabled by default in the initializer

module Apartment
  class RakeTaskEnhancer
    module TASKS
      ENHANCE_BEFORE = %w[db:drop].freeze
      ENHANCE_AFTER  = %w[db:migrate db:rollback db:migrate:up db:migrate:down db:migrate:redo db:seed].freeze
      freeze
    end

    # This is a bit convoluted, but helps solve problems when using Apartment within an engine
    # See spec/integration/use_within_an_engine.rb

    class << self
      def enhance!
        return unless should_enhance?

        # insert task before
        TASKS::ENHANCE_BEFORE.each do |name|
          task = Rake::Task[name]
          enhance_before_task(task)
        end

        # insert task after
        TASKS::ENHANCE_AFTER.each do |name|
          task = Rake::Task[name]
          enhance_after_task(task)
        end
      end

      def should_enhance?
        Apartment.db_migrate_tenants
      end

      def enhance_before_task(task)
        task.enhance([inserted_task_name(task)])
      end

      def enhance_after_task(task)
        task.enhance do
          Rake::Task[inserted_task_name(task)].invoke
        end
      end

      def inserted_task_name(task)
        task.name.sub(/db:/, 'apartment:')
      end
    end
  end
end

Apartment::RakeTaskEnhancer.enhance!

Version data entries

16 entries across 16 versions & 3 rubygems

Version Path
ros-apartment-3.2.0 lib/apartment/tasks/enhancements.rb
synerma-apartment-3.1.0 lib/apartment/tasks/enhancements.rb
puzzle-apartment-2.13.0 lib/apartment/tasks/enhancements.rb
puzzle-apartment-2.12.0 lib/apartment/tasks/enhancements.rb
ros-apartment-2.11.0 lib/apartment/tasks/enhancements.rb
ros-apartment-2.10.0 lib/apartment/tasks/enhancements.rb
ros-apartment-2.9.0 lib/apartment/tasks/enhancements.rb
ros-apartment-2.8.1 lib/apartment/tasks/enhancements.rb
ros-apartment-2.8.1.rc2 lib/apartment/tasks/enhancements.rb
ros-apartment-2.8.1.rc1 lib/apartment/tasks/enhancements.rb
ros-apartment-2.8.0 lib/apartment/tasks/enhancements.rb
ros-apartment-2.7.2 lib/apartment/tasks/enhancements.rb
ros-apartment-2.7.1 lib/apartment/tasks/enhancements.rb
ros-apartment-2.6.0 lib/apartment/tasks/enhancements.rb
ros-apartment-2.5.0 lib/apartment/tasks/enhancements.rb
ros-apartment-2.4.0 lib/apartment/tasks/enhancements.rb