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
- .enhance_db_tasks ⇒ Object
- .enhanceable_db_task? ⇒ Boolean
- .load_tasks ⇒ Object
- .pop_from_stack_and_reenable ⇒ Object
- .pop_from_stack_rake_task ⇒ Object
- .push_to_stack_rake_task ⇒ Object
- .rake_tasks_path ⇒ Object
Class Method Details
.enhance_db_tasks ⇒ Object
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_tasks ⇒ Object
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_reenable ⇒ Object
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_task ⇒ Object
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_task ⇒ Object
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_path ⇒ Object
14 15 16 |
# File 'lib/active_record_proxy_adapters/rake.rb', line 14 def rake_tasks_path File.join(__dir__, "tasks/**/*.rake") end |