Module: Smith::Doctor

Defined in:
lib/smith/doctor.rb,
lib/smith/doctor/check.rb,
lib/smith/doctor/report.rb,
lib/smith/doctor/printer.rb,
lib/smith/doctor/installer.rb,
lib/smith/doctor/checks/live.rb,
lib/smith/doctor/checks/rails.rb,
lib/smith/doctor/checks/baseline.rb,
lib/smith/doctor/checks/durability.rb,
lib/smith/doctor/checks/persistence.rb,
lib/smith/doctor/checks/configuration.rb,
lib/smith/doctor/checks/serialization.rb,
lib/smith/doctor/checks/models_registry.rb,
lib/smith/doctor/checks/openai_api_mode.rb,
lib/smith/doctor/checks/persistence_registry.rb,
lib/smith/doctor/checks/persistence_capabilities.rb

Defined Under Namespace

Modules: Checks Classes: Check, Installer, Printer, Report

Class Method Summary collapse

Class Method Details

.detect_rails?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/smith/doctor.rb', line 41

def self.detect_rails?
  defined?(::Rails::Railtie)
end

.durability_profile?(profile) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/smith/doctor.rb', line 49

def self.durability_profile?(profile)
  profile == :durable
end

.persistence_profile?(profile) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/smith/doctor.rb', line 45

def self.persistence_profile?(profile)
  profile == :rails_persistence
end

.run(profile: :auto, live: false, durability: false, io: $stdout) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/smith/doctor.rb', line 21

def self.run(profile: :auto, live: false, durability: false, io: $stdout)
  report = Report.new

  Checks::Baseline.run(report)
  Checks::Configuration.run(report)
  Checks::ModelsRegistry.run(report)
  Checks::OpenaiApiMode.run(report)
  Checks::Rails.run(report) if detect_rails?
  Checks::Persistence.run(report) if persistence_profile?(profile)
  Checks::PersistenceCapabilities.run(report) if persistence_profile?(profile)
  if durability || durability_profile?(profile)
    Checks::Serialization.run(report)
    Checks::Durability.run(report)
  end
  Checks::Live.run(report) if live

  Printer.new(report, io:).print
  report
end