Skip to content

Commit

Permalink
WIP: BACKLOG 6.1 - FIXED RAKE TASKS - cherry pick me in feature/ar-61
Browse files Browse the repository at this point in the history
  • Loading branch information
gridanjbf committed Nov 5, 2021
1 parent 78c5901 commit 67f01db
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
9 changes: 4 additions & 5 deletions lib/active_record/tasks/chronomodel_database_tasks.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,17 @@ def structure_dump(*arguments)

def data_dump(target)
set_psql_env

db = configuration[:database] || configuration['database']
args = ['-c', '-f', target.to_s]
args << configuration['database']

args << db
run_cmd "pg_dump", args, 'dumping data'
end

def data_load(source)
set_psql_env

db = configuration[:database] || configuration['database']
args = ['-f', source]
args << configuration['database']
args << db

run_cmd "psql", args, 'loading data'
end
Expand Down
17 changes: 11 additions & 6 deletions lib/chrono_model/railtie.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
require 'active_record/tasks/chronomodel_database_tasks'

module ChronoModel
class Railtie < ::Rails::Railtie

def tconfig(config)
tconfig = config.dup
if ActiveRecord::VERSION::STRING >= '6.1'
tconfig = OpenStruct.new(configuration_hash: config)
end
tconfig
end

rake_tasks do
if Rails.application.config.active_record.schema_format != :sql
raise 'In order to use ChronoModel, config.active_record.schema_format must be :sql!'
Expand All @@ -14,7 +21,7 @@ class Railtie < ::Rails::Railtie
#
ActiveRecord::Tasks::DatabaseTasks.register_task(/chronomodel/, tasks_class)

if Rails.version < '6.1'
if Rails.version <= '6.1'
# Make schema:dump and schema:load invoke structure:dump and structure:load
Rake::Task['db:schema:dump'].clear.enhance(['environment']) do
Rake::Task['db:structure:dump'].invoke
Expand All @@ -29,17 +36,15 @@ class Railtie < ::Rails::Railtie
task 'db:data:dump' => :environment do
config = ActiveRecord::Tasks::DatabaseTasks.current_config
target = ENV['DUMP'] || Rails.root.join('db', "data.#{Time.now.to_f}.sql")

tasks_class.new(config).data_dump(target)
tasks_class.new(tconfig(config)).data_dump(target)
end

desc "Loads database dump from file specified via DUMP="
task 'db:data:load' => :environment do
config = ActiveRecord::Tasks::DatabaseTasks.current_config
source = ENV['DUMP'].presence or
raise ArgumentError, "Invoke as rake db:data:load DUMP=/path/to/data.sql"

tasks_class.new(config).data_load(source)
tasks_class.new(tconfig(config)).data_load(source)
end
end

Expand Down

0 comments on commit 67f01db

Please sign in to comment.