Sha256: 84f541f0464ac5c5ef84201afc67605957aac2a3bacd6492e1dec7d73fc6081c

Contents?: true

Size: 1.82 KB

Versions: 31

Compression:

Stored size: 1.82 KB

Contents

# frozen_string_literal: true

namespace :ridgepole do
  desc 'Apply database schema'
  task apply: :environment do
    databases = Rails.configuration.database_configuration.fetch(Rails.env, {}).keys
    primary_database = Ibrain::Config.master_database
    spec_option = databases.include?(primary_database) ? "--spec-name primary #{primary_database}" : ""

    ridgepole('--apply', "-E #{Rails.env}", "--file #{schema_file}", spec_option)
    Rake::Task['db:schema:dump'].invoke if Rails.env.development?
    Rake::Task['annotate_models'].invoke if Rails.env.development?
  end

  desc 'Export database schema'
  task export: :environment do
    ridgepole('--export', " #{Rails.env}", "--split", "--output #{schema_file}")

    FileUtils.mkdir_p(schema_dir) unless File.directory?(schema_dir)

    data = File.read(schema_file)
    updated_data = data.gsub!("require '", "require 'schemas/")

    File.open(schema_file, "w") { |file| file.puts updated_data }
    system("cp #{db_dir}/*.schema #{schema_dir} && rm #{db_dir}/*.schema")

    ActiveRecord::Base.connection.tables.each do |table_name|
      system("bundle exec rails generate ibrain:core:model #{table_name.classify}")
    end

    system("bundle exec annotate --models --exclude fixtures")
  end

  desc 'import seed data'
  task seed: :environment do
    path = Rails.root.join("db/seeds/#{Rails.env}.rb")
    path = path.sub(Rails.env, ENV.fetch('RAILS_ENV', 'development')) unless File.exist?(path)

    require path
  end

  private

  def db_dir
    Rails.root.join('db')
  end

  def schema_dir
    "#{db_dir}/schemas"
  end

  def schema_file
    "#{db_dir}/Schemafile"
  end

  def config_file
    Rails.root.join('config/database.yml')
  end

  def ridgepole(*options)
    command = ['bundle exec ridgepole', "--config #{config_file}"]
    system [command + options].join(' ')
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
ibrain-core-0.5.15 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.13 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.12 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.10 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.9 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.8 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.7 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.6 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.5 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.4 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.3 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.2 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.1 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.5.0 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.4.9 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.4.8 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.4.7 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.4.6 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.4.5 lib/tasks/ibrain/ridgepole.rake
ibrain-core-0.4.4 lib/tasks/ibrain/ridgepole.rake