Module: ArchSpec::Presets

Defined in:
lib/archspec/presets.rb

Class Method Summary collapse

Class Method Details

.apply(name, dsl, **options) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/archspec/presets.rb', line 5

def apply(name, dsl, **options)
  case name.to_sym
  when :rails_way, :rails_mvc
    rails_way(dsl, **options)
  when :rails_strict
    rails_strict(dsl, **options)
  when :rails_layered
    rails_layered(dsl, **options)
  when :rails_hexagonal
    rails_hexagonal(dsl, **options)
  when :rails_clean
    rails_clean(dsl, **options)
  when :rails_cqrs
    rails_cqrs(dsl, **options)
  when :rails_event_driven
    rails_event_driven(dsl, **options)
  else
    raise Error, "Unknown ArchSpec preset: #{name.inspect}"
  end
end

.rails_clean(dsl, **options) ⇒ Object



44
45
46
# File 'lib/archspec/presets.rb', line 44

def rails_clean(dsl, **options)
  Architectures.apply(:clean, dsl, **options)
end

.rails_cqrs(dsl, **options) ⇒ Object



48
49
50
# File 'lib/archspec/presets.rb', line 48

def rails_cqrs(dsl, **options)
  Architectures.apply(:cqrs, dsl, **options)
end

.rails_event_driven(dsl, **options) ⇒ Object



52
53
54
# File 'lib/archspec/presets.rb', line 52

def rails_event_driven(dsl, **options)
  Architectures.apply(:event_driven, dsl, **options)
end

.rails_hexagonal(dsl, **options) ⇒ Object



40
41
42
# File 'lib/archspec/presets.rb', line 40

def rails_hexagonal(dsl, **options)
  Architectures.apply(:hexagonal, dsl, **options)
end

.rails_layered(dsl, **options) ⇒ Object



36
37
38
# File 'lib/archspec/presets.rb', line 36

def rails_layered(dsl, **options)
  Architectures.apply(:layered, dsl, **options)
end

.rails_strict(dsl, **options) ⇒ Object



30
31
32
33
34
# File 'lib/archspec/presets.rb', line 30

def rails_strict(dsl, **options)
  rails_way(dsl, **options)
  dsl.verify_zeitwerk_names!
  dsl.no_cycles!(among: %i[controllers models helpers mailers jobs services])
end

.rails_way(dsl, **options) ⇒ Object



26
27
28
# File 'lib/archspec/presets.rb', line 26

def rails_way(dsl, **options)
  Architectures.apply(:rails_mvc, dsl, **options)
end