Module: Unitsdb

Defined in:
lib/unitsdb/prefixes.rb,
lib/unitsdb.rb,
lib/unitsdb/cli.rb,
lib/unitsdb/qudt.rb,
lib/unitsdb/ucum.rb,
lib/unitsdb/unit.rb,
lib/unitsdb/scale.rb,
lib/unitsdb/units.rb,
lib/unitsdb/utils.rb,
lib/unitsdb/config.rb,
lib/unitsdb/errors.rb,
lib/unitsdb/prefix.rb,
lib/unitsdb/scales.rb,
lib/unitsdb/version.rb,
lib/unitsdb/commands.rb,
lib/unitsdb/database.rb,
lib/unitsdb/quantity.rb,
lib/unitsdb/dimension.rb,
lib/unitsdb/dimensions.rb,
lib/unitsdb/identifier.rb,
lib/unitsdb/quantities.rb,
lib/unitsdb/unit_system.rb,
lib/unitsdb/commands/get.rb,
lib/unitsdb/unit_systems.rb,
lib/unitsdb/commands/base.rb,
lib/unitsdb/commands/qudt.rb,
lib/unitsdb/commands/thor.rb,
lib/unitsdb/commands/ucum.rb,
lib/unitsdb/unit_reference.rb,
lib/unitsdb/commands/search.rb,
lib/unitsdb/database/loader.rb,
lib/unitsdb/scale_reference.rb,
lib/unitsdb/si_derived_base.rb,
lib/unitsdb/commands/_modify.rb,
lib/unitsdb/commands/release.rb,
lib/unitsdb/localized_string.rb,
lib/unitsdb/prefix_reference.rb,
lib/unitsdb/scale_properties.rb,
lib/unitsdb/commands/check_si.rb,
lib/unitsdb/commands/validate.rb,
lib/unitsdb/dimension_details.rb,
lib/unitsdb/commands/normalize.rb,
lib/unitsdb/external_reference.rb,
lib/unitsdb/quantity_reference.rb,
lib/unitsdb/commands/qudt/check.rb,
lib/unitsdb/commands/ucum/check.rb,
lib/unitsdb/dimension_reference.rb,
lib/unitsdb/root_unit_reference.rb,
lib/unitsdb/commands/qudt/update.rb,
lib/unitsdb/commands/ucum/update.rb,
lib/unitsdb/symbol_presentations.rb,
lib/unitsdb/commands/qudt/matcher.rb,
lib/unitsdb/commands/qudt/updater.rb,
lib/unitsdb/commands/ucum/matcher.rb,
lib/unitsdb/commands/ucum/updater.rb,
lib/unitsdb/unit_system_reference.rb,
lib/unitsdb/commands/qudt/formatter.rb,
lib/unitsdb/commands/ucum/formatter.rb,
lib/unitsdb/commands/qudt/ttl_parser.rb,
lib/unitsdb/commands/ucum/xml_parser.rb,
lib/unitsdb/commands/entity_presenter.rb,
lib/unitsdb/commands/check_si/si_matcher.rb,
lib/unitsdb/commands/check_si/si_updater.rb,
lib/unitsdb/commands/validate/references.rb,
lib/unitsdb/database/reference_validator.rb,
lib/unitsdb/commands/validate/identifiers.rb,
lib/unitsdb/database/uniqueness_validator.rb,
lib/unitsdb/commands/check_si/si_formatter.rb,
lib/unitsdb/commands/check_si/si_ttl_parser.rb,
lib/unitsdb/commands/validate/si_references.rb,
lib/unitsdb/commands/validate/qudt_references.rb,
lib/unitsdb/commands/validate/ucum_references.rb,
sig/unitsdb.rbs

Overview

references:

Defined Under Namespace

Modules: Commands, Errors, Ruby, Utils Classes: Cli, Config, Database, Dimension, DimensionDetails, DimensionReference, Dimensions, ExternalReference, Identifier, LocalizedString, Prefix, PrefixReference, Prefixes, Quantities, Quantity, QuantityReference, QudtDimensionVector, QudtPrefix, QudtQuantityKind, QudtSystemOfUnits, QudtUnit, QudtVocabularies, RootUnitReference, Scale, ScaleProperties, ScaleReference, Scales, SiDerivedBase, SymbolPresentations, UcumBaseUnit, UcumFile, UcumNamespace, UcumPrefix, UcumPrefixValue, UcumUnit, UcumUnitValue, UcumUnitValueFunction, Unit, UnitReference, UnitSystem, UnitSystemReference, UnitSystems, Units

Constant Summary collapse

MODELS =

Constants eagerly loaded so Lutaml::Model type registrations are complete before Config.build_registry iterates them. Listed explicitly so unreferenced models (Scale, Qudt*, Ucum*) still register themselves via their file-bottom Config.register_model calls.

%i[
  Identifier
  LocalizedString
  SymbolPresentations
  ScaleProperties
  UnitReference
  PrefixReference
  QuantityReference
  DimensionReference
  UnitSystemReference
  ScaleReference
  ExternalReference
  RootUnitReference
  SiDerivedBase
  DimensionDetails
  Dimension
  Prefix
  UnitSystem
  Quantity
  Scale
  Unit
  Dimensions
  Prefixes
  Quantities
  Scales
  UnitSystems
  Units
  Database
  QudtUnit
  QudtQuantityKind
  QudtDimensionVector
  QudtSystemOfUnits
  QudtPrefix
  QudtVocabularies
  UcumBaseUnit
  UcumPrefixValue
  UcumPrefix
  UcumUnitValueFunction
  UcumUnitValue
  UcumUnit
  UcumNamespace
  UcumFile
].freeze
VERSION =
"2.2.4"
UNITS_DATA_VERSION =

The version of the bundled UnitsDB data (from the data/ submodule). This version corresponds to a tag/commit in https://github.com/unitsml/unitsdb.

"2.0.0"

Class Method Summary collapse

Class Method Details

.data_dirObject

Returns the path to the bundled data directory containing YAML files



125
126
127
# File 'lib/unitsdb.rb', line 125

def data_dir
  @data_dir ||= File.join(gem_dir, "data")
end

.database(context: Config.context_id) ⇒ Object

Returns a pre-loaded Database instance from the bundled data



130
131
132
133
134
135
# File 'lib/unitsdb.rb', line 130

def database(context: Config.context_id)
  context_id = context.to_sym
  Config.ensure_default_context! if context_id == Config.context_id
  klass = Config.resolve_type(:database, context: context_id)
  databases[context_id] ||= klass.from_db(data_dir, context: context_id)
end

.eager_load_models!Object

Force every autoloaded model to load AND register itself with Config. The per-file Config.register_model(Class, id: :foo) calls at file-bottom run the first time a model loads, but Config.capture_state / restore_state can wipe those entries between tests. Re-registering here makes the registry self-healing across snapshot/restore cycles.



149
150
151
152
153
154
155
156
# File 'lib/unitsdb.rb', line 149

def eager_load_models!
  MODELS.each do |sym|
    klass = const_get(sym)
    next unless klass.is_a?(Class) && klass < ::Lutaml::Model::Serializable

    Config.register_model(klass, id: model_id_for(klass))
  end
end

.reset_database_cache!Object

Drop the memoized Database instances so the next database call reloads from disk. Specs use this between examples.



139
140
141
# File 'lib/unitsdb.rb', line 139

def reset_database_cache!
  @databases = nil
end