Module: Bootprint::Collectors::Rails
- Defined in:
- lib/bootprint/collectors/rails.rb
Class Method Summary collapse
- .action_cable_adapter ⇒ Object
- .adapters(config) ⇒ Object
- .capture ⇒ Object
- .database_adapter ⇒ Object
- .key ⇒ Object
- .logging(config) ⇒ Object
- .nested_value(object, *methods) ⇒ Object
- .paths(value) ⇒ Object
- .sanitized_initializers ⇒ Object
- .secret_metadata(application) ⇒ Object
- .value(object, method) ⇒ Object
Class Method Details
.action_cable_adapter ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/bootprint/collectors/rails.rb', line 53 def action_cable_adapter return unless defined?(ActionCable) && ActionCable.respond_to?(:server) ActionCable.server.config.cable.fetch("adapter", nil) rescue StandardError nil end |
.adapters(config) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/bootprint/collectors/rails.rb', line 36 def adapters(config) { "active_job" => nested_value(config, :active_job, :queue_adapter)&.to_s, "cache" => Array(value(config, :cache_store)).first&.to_s, "session" => value(config, :session_store)&.to_s, "database" => database_adapter }.compact end |
.capture ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/bootprint/collectors/rails.rb', line 10 def capture return {} unless defined?(::Rails) && ::Rails.respond_to?(:application) && ::Rails.application application = ::Rails.application config = application.config { "version" => ::Rails.version, "environment" => ::Rails.env.to_s, "framework_defaults" => value(config, :loaded_config_version)&.to_s, "eager_load" => value(config, :eager_load), "cache_classes" => value(config, :cache_classes), "autoload_paths" => paths(value(config, :autoload_paths)), "eager_load_paths" => paths(value(config, :eager_load_paths)), "adapters" => adapters(config), "active_storage_service" => nested_value(config, :active_storage, :service)&.to_s, "action_cable_adapter" => action_cable_adapter, "mail_delivery_method" => nested_value(config, :action_mailer, :delivery_method)&.to_s, "time_zone" => value(config, :time_zone)&.to_s, "logging" => logging(config), "public_file_server_enabled" => nested_value(config, :public_file_server, :enabled), "assets_compile" => nested_value(config, :assets, :compile), "secret_key_base" => (application), "initializers" => sanitized_initializers } end |
.database_adapter ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/bootprint/collectors/rails.rb', line 45 def database_adapter return unless defined?(ActiveRecord::Base) ActiveRecord::Base.connection_db_config.adapter rescue StandardError nil end |
.key ⇒ Object
8 |
# File 'lib/bootprint/collectors/rails.rb', line 8 def key = "rails" |
.logging(config) ⇒ Object
61 62 63 64 |
# File 'lib/bootprint/collectors/rails.rb', line 61 def logging(config) logger = defined?(::Rails.logger) ? ::Rails.logger : nil { "level" => logger&.level, "class" => logger&.class&.name, "log_tags" => Array(value(config, :log_tags)).map(&:to_s) } end |
.nested_value(object, *methods) ⇒ Object
92 93 94 |
# File 'lib/bootprint/collectors/rails.rb', line 92 def nested_value(object, *methods) methods.reduce(object) { |current, method| current && value(current, method) } end |
.paths(value) ⇒ Object
82 83 84 |
# File 'lib/bootprint/collectors/rails.rb', line 82 def paths(value) Array(value).map { |path| Sanitizer.path(path) }.sort end |
.sanitized_initializers ⇒ Object
74 75 76 77 78 79 80 |
# File 'lib/bootprint/collectors/rails.rb', line 74 def sanitized_initializers return [] unless defined?(Bootprint::RailsState) Array(Bootprint::RailsState.initializers).map do |initializer| initializer.merge("name" => Sanitizer.path(initializer["name"])) end end |
.secret_metadata(application) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/bootprint/collectors/rails.rb', line 66 def (application) present = !application.secret_key_base.to_s.empty? source = ENV.key?("SECRET_KEY_BASE") ? "environment" : "credentials_or_configuration" { "present" => present, "source" => source, "redacted" => true } rescue StandardError { "present" => false, "source" => "unavailable", "redacted" => true } end |
.value(object, method) ⇒ Object
86 87 88 89 90 |
# File 'lib/bootprint/collectors/rails.rb', line 86 def value(object, method) object.public_send(method) if object.respond_to?(method) rescue StandardError nil end |