class RailsConfigValidator::RakeTask

Public Class Methods

new() click to toggle source
# File lib/rails_config_validator/rake_task.rb, line 6
def initialize
  require 'rails_config_validator/validator'

  namespace :config_validator do
    task_init
    task_validate
    task_validate_all
  end
end

Private Instance Methods

task_init() click to toggle source
# File lib/rails_config_validator/rake_task.rb, line 18
def task_init
  desc "Copies database.schema.yml to Rails's config directory"
  task :init do
    rake_file_dir = File.expand_path(File.dirname(__FILE__))
    destination = FileUtils.mkpath(File.join(Dir.pwd, 'config', 'schemas'))
    FileUtils.cp(
      File.join(rake_file_dir, 'templates', 'database.schema.yml'),
      destination
    )
  end
end
task_validate() click to toggle source
# File lib/rails_config_validator/rake_task.rb, line 30
def task_validate
  desc 'Validates Rails config file against YML schema'
  task :validate, [:config, :env] do |_, args|
    config = args[:config]
    env = args[:env] || Rails.env
    raise 'Missing parameter :config' if args[:config].nil?

    v = RailsConfigValidator::Validator.new(config, env, pwd: Rails.root)
    v.valid!
  end
end
task_validate_all() click to toggle source
# File lib/rails_config_validator/rake_task.rb, line 42
def task_validate_all
  namespace :validate do
    desc 'Validates all Rails config files against YML schema'
    task :all, [:env] do |_, args|
      Rails.application.config.config_validator.configs.each do |file_name|
        Rake::Task['config_validator:validate'].invoke(file_name, args[:env])
      end
    end
  end
end