Class: Legion::CLI::Doctor
- Inherits:
-
Thor
- Object
- Thor
- Legion::CLI::Doctor
- Defined in:
- lib/legion/cli/doctor/result.rb,
lib/legion/cli/doctor_command.rb,
lib/legion/cli/doctor/pid_check.rb,
lib/legion/cli/doctor/tls_check.rb,
lib/legion/cli/doctor/mode_check.rb,
lib/legion/cli/doctor/cache_check.rb,
lib/legion/cli/doctor/vault_check.rb,
lib/legion/cli/doctor/bundle_check.rb,
lib/legion/cli/doctor/config_check.rb,
lib/legion/cli/doctor/api_bind_check.rb,
lib/legion/cli/doctor/database_check.rb,
lib/legion/cli/doctor/rabbitmq_check.rb,
lib/legion/cli/doctor/extensions_check.rb,
lib/legion/cli/doctor/python_env_check.rb,
lib/legion/cli/doctor/permissions_check.rb,
lib/legion/cli/doctor/ruby_version_check.rb
Defined Under Namespace
Classes: ApiBindCheck, BundleCheck, CacheCheck, ConfigCheck, DatabaseCheck, ExtensionsCheck, ModeCheck, PermissionsCheck, PidCheck, PythonEnvCheck, RabbitmqCheck, Result, RubyVersionCheck, TlsCheck, VaultCheck
Constant Summary collapse
- CHECKS =
%i[ RubyVersionCheck BundleCheck ConfigCheck RabbitmqCheck DatabaseCheck CacheCheck VaultCheck ExtensionsCheck PidCheck PermissionsCheck TlsCheck ApiBindCheck ModeCheck PythonEnvCheck ].freeze
- WEIGHTS =
Weights: security > connectivity > convenience
{ 'TLS' => 3.0, 'Vault connection' => 3.0, 'Permissions' => 2.5, 'Ruby version' => 2.0, 'RabbitMQ connection' => 2.0, 'Database connection' => 2.0, 'Cache connection' => 1.5, 'Bundle' => 1.5, 'Config' => 1.0, 'Extensions' => 1.0, 'Python env' => 1.0, 'PID files' => 0.5 }.freeze
- GRADE_THRESHOLDS =
[ [0.95, 'A'], [0.85, 'B'], [0.70, 'C'], [0.50, 'D'] ].freeze
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.exit_on_failure? ⇒ Boolean
24 25 26 |
# File 'lib/legion/cli/doctor_command.rb', line 24 def self.exit_on_failure? true end |
Instance Method Details
#diagnose ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/legion/cli/doctor_command.rb', line 73 def diagnose out = formatter begin Connection.ensure_settings(resolve_secrets: false) rescue StandardError => e Legion::Logging.debug("Doctor#diagnose settings load failed: #{e.}") if defined?(Legion::Logging) end results = run_all_checks if [:json] output_json(out, results) else output_text(out, results) end auto_fix(results) if [:fix] exit(1) if results.any?(&:fail?) ensure Connection.shutdown end |