Class: MigrationSignature::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/migration_signature/config.rb

Constant Summary collapse

DEFAULTS =
{
  'ignore' => [],
  'rails_dir' => Dir.pwd,
  'migration_dir' => 'db/migrate'
}.freeze
CONFIG_FILE_PATH =
"#{Dir.pwd}/.migration_signature.yml"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = DEFAULTS) ⇒ Config

Returns a new instance of Config.



26
27
28
# File 'lib/migration_signature/config.rb', line 26

def initialize(opts = DEFAULTS)
  @opts = opts
end

Class Method Details

.loadObject



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/migration_signature/config.rb', line 13

def self.load
  return new(DEFAULTS) unless File.exist?(CONFIG_FILE_PATH)

  require 'yaml'
  hash = if Gem::Version.new(Psych::VERSION) >= Gem::Version.new("4.0.0")
    YAML.safe_load(File.read(CONFIG_FILE_PATH), permitted_classes: [Regexp])
  else
    YAML.safe_load(File.read(CONFIG_FILE_PATH), [Regexp])
  end || {}

  new(DEFAULTS.merge(hash))
end

Instance Method Details

#all_runnable_filesObject



30
31
32
33
34
35
36
37
38
# File 'lib/migration_signature/config.rb', line 30

def all_runnable_files
  @all_runnable_files ||= begin
    require 'pathname'

    Dir["#{migration_dir}/*"].sort.reject do |f|
      ignore?(f)
    end
  end
end

#ignore?(file) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
47
48
49
50
51
52
53
54
# File 'lib/migration_signature/config.rb', line 44

def ignore?(file)
  rails_root_file =
    Pathname.new(file).relative_path_from(@opts['rails_dir']).to_s

  return true if string_ignores.include?(file)
  return true if string_ignores.include?(rails_root_file)
  return true if regexp_ignores.any? { |ignore| ignore =~ file }
  return true if regexp_ignores.any? { |ignore| ignore =~ rails_root_file }

  false
end

#migration_dirObject



40
41
42
# File 'lib/migration_signature/config.rb', line 40

def migration_dir
  "#{@opts['rails_dir']}/#{@opts['migration_dir']}"
end