Module: ActiveRecordProxyAdapters::Rake

Defined in:
lib/active_record_proxy_adapters/rake.rb

Overview

Enhances all rails db rake tasks to stick to writer connection

Class Method Summary collapse

Class Method Details

.enhance_db_tasksObject



18
19
20
21
22
23
# File 'lib/active_record_proxy_adapters/rake.rb', line 18

def enhance_db_tasks
  ::Rake::Task
    .tasks
    .select(&enhanceable_db_task?)
    .each { |task| task.enhance([push_to_stack_rake_task.name], &pop_from_stack_and_reenable) }
end

.enhanceable_db_task?Boolean



40
41
42
43
44
45
# File 'lib/active_record_proxy_adapters/rake.rb', line 40

def enhanceable_db_task?
  proc do |task|
    task_name = task.name
    task_name.start_with?("db:") && task_name != "db:load_config"
  end
end

.load_tasksObject



10
11
12
# File 'lib/active_record_proxy_adapters/rake.rb', line 10

def load_tasks
  Dir[rake_tasks_path].each { |rake_path| load(rake_path) }
end

.pop_from_stack_and_reenableObject



33
34
35
36
37
38
# File 'lib/active_record_proxy_adapters/rake.rb', line 33

def pop_from_stack_and_reenable
  proc do
    pop_from_stack_rake_task.invoke
    [push_to_stack_rake_task, pop_from_stack_rake_task].each(&:reenable)
  end
end

.pop_from_stack_rake_taskObject



29
30
31
# File 'lib/active_record_proxy_adapters/rake.rb', line 29

def pop_from_stack_rake_task
  ::Rake::Task["arpa:pop_from_stack"]
end

.push_to_stack_rake_taskObject



25
26
27
# File 'lib/active_record_proxy_adapters/rake.rb', line 25

def push_to_stack_rake_task
  ::Rake::Task["arpa:push_to_stack"]
end

.rake_tasks_pathObject



14
15
16
# File 'lib/active_record_proxy_adapters/rake.rb', line 14

def rake_tasks_path
  File.join(__dir__, "tasks/**/*.rake")
end