Class: Kaisoku::Rails::Integration

Inherits:
Object
  • Object
show all
Defined in:
lib/kaisoku/rails/integration.rb

Constant Summary collapse

DB_PATTERNS =
%w[db/schema.rb db/structure.sql db/migrate/**].freeze
ROUTE_PATTERNS =
%w[config/routes.rb config/routes/**].freeze
DB_DEPENDENCY_PREFIXES =
%w[app/models db/ config/database].freeze

Instance Method Summary collapse

Constructor Details

#initialize(configuration: Configuration.new) ⇒ Integration

Returns a new instance of Integration.



10
11
12
# File 'lib/kaisoku/rails/integration.rb', line 10

def initialize(configuration: Configuration.new)
  @configuration = configuration
end

Instance Method Details

#boot_impact_file?(path) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
21
# File 'lib/kaisoku/rails/integration.rb', line 18

def boot_impact_file?(path)
  relative = @configuration.relative_path(path)
  patterns.any? { |pattern| File.fnmatch?(pattern, relative, File::FNM_PATHNAME) }
end

#database_change?(path) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
# File 'lib/kaisoku/rails/integration.rb', line 23

def database_change?(path)
  relative = @configuration.relative_path(path)
  DB_PATTERNS.any? { |pattern| File.fnmatch?(pattern, relative, File::FNM_PATHNAME) }
end

#database_name(base_name, worker_index) ⇒ Object



37
38
39
40
41
# File 'lib/kaisoku/rails/integration.rb', line 37

def database_name(base_name, worker_index)
  return base_name if worker_index.to_i <= 0

  "#{base_name}_#{worker_index}"
end

#db_dependency_prefixesObject



33
34
35
# File 'lib/kaisoku/rails/integration.rb', line 33

def db_dependency_prefixes
  DB_DEPENDENCY_PREFIXES
end

#rails_project?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/kaisoku/rails/integration.rb', line 14

def rails_project?
  File.file?(@configuration.absolute_path('config/application.rb'))
end

#route_change?(path) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
31
# File 'lib/kaisoku/rails/integration.rb', line 28

def route_change?(path)
  relative = @configuration.relative_path(path)
  ROUTE_PATTERNS.any? { |pattern| File.fnmatch?(pattern, relative, File::FNM_PATHNAME) }
end

#wrap_reloaderObject



43
44
45
46
47
# File 'lib/kaisoku/rails/integration.rb', line 43

def wrap_reloader(&)
  return yield unless defined?(::Rails) && ::Rails.respond_to?(:application)

  ::Rails.application.reloader.wrap(&)
end