lib/prodder/prodder.rake in prodder-1.7.3 vs lib/prodder/prodder.rake in prodder-1.7.4

- old
+ new

@@ -96,11 +96,11 @@ task :collation => [:environment].concat(dependencies) do as("migration_user", in: ENV['RAILS_ENV'] || Rails.env) do begin puts ActiveRecord::Tasks::DatabaseTasks.collation_current rescue NoMethodError - $stderr.puts 'Sorry, your database adapter is not supported yet. Feel free to submit a patch.' + $stderr.puts 'error: Sorry, your database adapter is not supported yet. Feel free to submit a patch.' end end end desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).' @@ -212,81 +212,77 @@ end end desc "Load initial seeds from db/seeds.sql" task :seed => dependencies do - unless File.exist?('db/seeds.sql') + if File.exist?('db/seeds.sql') + config = ActiveRecord::Base.configurations[ENV['RAILS_ENV'] || Rails.env] + config["username"] = config["superuser"] if config["superuser"] && File.exist?('db/permissions.sql') + set_psql_env config + puts "Loading db/seeds.sql into database '#{config['database']}'" + `psql --no-psqlrc -f db/seeds.sql #{Shellwords.escape(config['database'])}` + raise 'Error loading db/seeds.sql' if $?.exitstatus != 0 + else puts 'db/seeds.sql not found: no seeds to load.' - return end - - config = ActiveRecord::Base.configurations[ENV['RAILS_ENV'] || Rails.env] - config["username"] = config["superuser"] if config["superuser"] && File.exist?('db/permissions.sql') - set_psql_env config - puts "Loading db/seeds.sql into database '#{config['database']}'" - `psql --no-psqlrc -f db/seeds.sql #{Shellwords.escape(config['database'])}` - raise 'Error loading db/seeds.sql' if $?.exitstatus != 0 end desc "Load quality_checks (indexes, triggers, foreign keys) from db/quality_checks.sql" task :quality_check => dependencies do - unless File.exist?('db/quality_checks.sql') + if File.exist?('db/quality_checks.sql') + config = ActiveRecord::Base.configurations[ENV['RAILS_ENV'] || Rails.env] + config["username"] = config["superuser"] if config["superuser"] && File.exist?('db/permissions.sql') + set_psql_env config + puts "Loading db/quality_checks.sql into database '#{config['database']}'" + `psql --no-psqlrc -f db/quality_checks.sql #{Shellwords.escape(config['database'])}` + raise 'Error loading db/quality_checks.sql' if $?.exitstatus != 0 + else puts 'db/quality_checks.sql not found: no quality_checks to load.' - return end - - config = ActiveRecord::Base.configurations[ENV['RAILS_ENV'] || Rails.env] - config["username"] = config["superuser"] if config["superuser"] && File.exist?('db/permissions.sql') - set_psql_env config - puts "Loading db/quality_checks.sql into database '#{config['database']}'" - `psql --no-psqlrc -f db/quality_checks.sql #{Shellwords.escape(config['database'])}` - raise 'Error loading db/quality_checks.sql' if $?.exitstatus != 0 end desc "Load permissions (DB object level access control, group role memberships) from db/permissions.sql" task :permission => dependencies do - unless File.exist?('db/permissions.sql') + if File.exist?('db/permissions.sql') + config = ActiveRecord::Base.configurations[ENV['RAILS_ENV'] || Rails.env] + config["username"] = config["superuser"] if config["superuser"] + set_psql_env config + puts "Loading db/permissions.sql into database '#{config['database']}'" + disconnect + ActiveRecord::Base.establish_connection((ENV['RAILS_ENV'] || Rails.env).intern) + result = ActiveRecord::Base.connection.execute(<<-SQL).first + select 1 as is_super from pg_roles where rolname = '#{config['username']}' and rolsuper + SQL + unless result && result['is_super'] + puts "warning: Restoring permissions as config/database.yml non-superuser: '#{config['username']}', expect errors, or rerun after granting superuser" + end + `psql --no-psqlrc -f db/permissions.sql #{Shellwords.escape(config['database'])}` + raise 'Error loading db/permissions.sql' if $?.exitstatus != 0 + else puts 'db/permissions.sql not found: no permissions to load.' - return end - - config = ActiveRecord::Base.configurations[ENV['RAILS_ENV'] || Rails.env] - config["username"] = config["superuser"] if config["superuser"] - set_psql_env config - puts "Loading db/permissions.sql into database '#{config['database']}'" - disconnect - ActiveRecord::Base.establish_connection((ENV['RAILS_ENV'] || Rails.env).intern) - result = ActiveRecord::Base.connection.execute(<<-SQL).first - select 1 as is_super from pg_roles where rolname = '#{config['username']}' and rolsuper - SQL - unless result && result['is_super'] - puts "Restoring permissions as config/database.yml non-superuser: '#{config['username']}', expect errors, or rerun after granting superuser" - end - `psql --no-psqlrc -f db/permissions.sql #{Shellwords.escape(config['database'])}` - raise 'Error loading db/permissions.sql' if $?.exitstatus != 0 end desc "Load database settings" task :settings => dependencies do - unless File.exist?('db/settings.sql') + if File.exist?('db/settings.sql') + config = ActiveRecord::Base.configurations[ENV['RAILS_ENV'] || Rails.env] + config["username"] = config["superuser"] if config["superuser"] && File.exist?('db/permissions.sql') + set_psql_env config + puts "Loading db/settings.sql into database '#{config['database']}'" + disconnect + ActiveRecord::Base.establish_connection((ENV['RAILS_ENV'] || Rails.env).intern) + result = ActiveRecord::Base.connection.execute(<<-SQL).first + select 1 as is_super from pg_roles where rolname = '#{config['username']}' and rolsuper + SQL + unless result && result['is_super'] + puts "warning: Restoring settings as config/database.yml non-superuser: '#{config['username']}', expect errors, or rerun after granting superuser" + end + `psql --no-psqlrc -f db/settings.sql #{Shellwords.escape(config['database'])}` + raise 'Error loading db/settings.sql' if $?.exitstatus != 0 + else puts 'db/settings.sql not found: no settings to load.' - return end - - config = ActiveRecord::Base.configurations[ENV['RAILS_ENV'] || Rails.env] - config["username"] = config["superuser"] if config["superuser"] && File.exist?('db/permissions.sql') - set_psql_env config - puts "Loading db/settings.sql into database '#{config['database']}'" - disconnect - ActiveRecord::Base.establish_connection((ENV['RAILS_ENV'] || Rails.env).intern) - result = ActiveRecord::Base.connection.execute(<<-SQL).first - select 1 as is_super from pg_roles where rolname = '#{config['username']}' and rolsuper - SQL - unless result && result['is_super'] - puts "Restoring settings as config/database.yml non-superuser: '#{config['username']}', expect errors, or rerun after granting superuser" - end - `psql --no-psqlrc -f db/settings.sql #{Shellwords.escape(config['database'])}` - raise 'Error loading db/settings.sql' if $?.exitstatus != 0 end # Empty this, we don't want db:migrate writing structure.sql any more. task :_dump do end