Module: Familia
- Extended by:
- Connection, Distinguisher, Logging, SecureIdentifier, Settings, Utils
- Defined in:
- lib/familia.rb,
lib/familia/base.rb,
lib/familia/utils.rb,
lib/familia/errors.rb,
lib/familia/horreum.rb,
lib/familia/logging.rb,
lib/familia/features.rb,
lib/familia/settings.rb,
lib/familia/data_type.rb,
lib/familia/connection.rb,
lib/familia/encryption.rb,
lib/familia/field_type.rb,
lib/familia/horreum/core.rb,
lib/familia/distinguisher.rb,
lib/familia/json_serializer.rb,
lib/familia/secure_identifier.rb,
lib/familia/data_type/commands.rb,
lib/familia/encryption/manager.rb,
lib/familia/features/safe_dump.rb,
lib/familia/horreum/core/utils.rb,
lib/familia/connection/handlers.rb,
lib/familia/encryption/provider.rb,
lib/familia/encryption/registry.rb,
lib/familia/features/expiration.rb,
lib/familia/data_type/types/lock.rb,
lib/familia/connection/middleware.rb,
lib/familia/connection/operations.rb,
lib/familia/features/quantization.rb,
lib/familia/refinements/dear_json.rb,
lib/familia/verifiable_identifier.rb,
lib/familia/features/relationships.rb,
lib/familia/data_type/serialization.rb,
lib/familia/data_type/types/counter.rb,
lib/familia/data_type/types/hashkey.rb,
lib/familia/data_type/types/listkey.rb,
lib/familia/horreum/core/connection.rb,
lib/familia/horreum/shared/settings.rb,
lib/familia/connection/pipeline_core.rb,
lib/familia/encryption/request_cache.rb,
lib/familia/refinements/logger_trace.rb,
lib/familia/connection/operation_core.rb,
lib/familia/data_type/types/stringkey.rb,
lib/familia/encryption/encrypted_data.rb,
lib/familia/features/encrypted_fields.rb,
lib/familia/features/transient_fields.rb,
lib/familia/refinements/stylize_words.rb,
lib/familia/refinements/time_literals.rb,
lib/familia/data_type/types/sorted_set.rb,
lib/familia/features/object_identifier.rb,
lib/familia/horreum/core/serialization.rb,
lib/familia/connection/transaction_core.rb,
lib/familia/horreum/subclass/definition.rb,
lib/familia/horreum/subclass/management.rb,
lib/familia/data_type/types/unsorted_set.rb,
lib/familia/features/external_identifier.rb,
lib/familia/features/expiration/extensions.rb,
lib/familia/horreum/core/database_commands.rb,
lib/familia/features/relationships/indexing.rb,
lib/familia/connection/individual_command_proxy.rb,
lib/familia/features/relationships/participation.rb,
lib/familia/encryption/providers/aes_gcm_provider.rb,
lib/familia/features/relationships/score_encoding.rb,
lib/familia/horreum/subclass/related_fields_management.rb,
lib/familia/features/relationships/collection_operations.rb,
lib/familia/features/relationships/indexing_relationship.rb,
lib/familia/features/encrypted_fields/encrypted_field_type.rb,
lib/familia/features/transient_fields/transient_field_type.rb,
lib/familia/encryption/providers/xchacha20_poly1305_provider.rb,
lib/familia/features/relationships/participation_relationship.rb,
lib/familia/features/relationships/participation/target_methods.rb,
lib/familia/features/relationships/indexing/multi_index_generators.rb,
lib/familia/encryption/providers/secure_xchacha20_poly1305_provider.rb,
lib/familia/features/relationships/indexing/unique_index_generators.rb,
lib/familia/features/relationships/participation/participant_methods.rb
Overview
lib/familia/features/relationships/participation_relationship.rb
Defined Under Namespace
Modules: Base, Connection, Distinguisher, Encryption, Features, JsonSerializer, Logging, Refinements, SecureIdentifier, Settings, Utils, VerifiableIdentifier Classes: AutoloadError, Counter, DataType, EncryptedFieldType, EncryptionError, FieldType, FieldTypeError, HashKey, Horreum, KeyNotFoundError, ListKey, Lock, NoConnectionAvailable, NoIdentifier, NonUniqueKey, NotConnected, NotDistinguishableError, NotFound, OperationModeError, Problem, RecordExistsError, SerializerError, SortedSet, StringKey, TransientFieldType, UnsortedSet
Constant Summary collapse
- FeatureDefinition =
Data.define(:name, :depends_on)
- VALID_STRATEGIES =
%i[raise skip ignore warn overwrite].freeze
- RelatedFieldDefinition =
Data.define(:name, :klass, :opts)
Constants included from Connection
Connection::DefaultConnectionHandler
Class Attribute Summary collapse
-
.debug ⇒ Object
rubocop:disable ThreadSafety/ClassAndModuleAttributes.
-
.members ⇒ Object
readonly
Returns the value of attribute members.
Attributes included from Connection
Attributes included from Connection::Middleware
#enable_database_counter, #enable_database_logging
Attributes included from Settings
#current_key_version, #default_expiration, #delim, #encryption_keys, #encryption_personalization, #logical_database, #prefix, #suffix, #transaction_mode
Attributes included from Logging
Class Method Summary collapse
-
.clear_anonymous_members ⇒ Array<Class>
Remove all anonymous/test classes from members array.
-
.configure {|_self| ... } ⇒ Object
A convenience pattern for configuring Familia.
-
.debug? ⇒ Boolean
Checks if debug mode is enabled.
- .resolve_class(target) ⇒ Object
-
.test_mode? ⇒ Boolean
Check if we're in test mode by looking for test-related constants or environment variables.
-
.unload_member(klass) ⇒ Class?
Remove a member class from the members array.
Methods included from SecureIdentifier
generate_id, generate_lite_id, generate_trace_id, shorten_to_trace_id, truncate_hex
Methods included from Connection
build_connection_chain, create_dbclient, dbclient, normalize_uri
Methods included from Connection::Operations
#pipelined, #transaction, #with_dbclient, #with_isolated_dbclient
Methods included from Connection::Middleware
#clear_fiber_connection!, #increment_middleware_version!, #middleware_version, #set_fiber_connection
Methods included from Settings
configure, default_suffix, pipeline_mode, pipeline_mode=
Methods included from Logging
Methods included from Utils
dbkey, join, now, pretty_path, pretty_stack, qstamp, serverid, split
Methods included from Distinguisher
Class Attribute Details
.debug ⇒ Object
rubocop:disable ThreadSafety/ClassAndModuleAttributes
42 43 44 |
# File 'lib/familia.rb', line 42 def debug @debug end |
.members ⇒ Object (readonly)
Returns the value of attribute members.
43 44 45 |
# File 'lib/familia.rb', line 43 def members @members end |
Class Method Details
.clear_anonymous_members ⇒ Array<Class>
Remove all anonymous/test classes from members array. Anonymous classes have nil names, which cause issues in member_by_config_name.
98 99 100 101 102 103 |
# File 'lib/familia.rb', line 98 def clear_anonymous_members anonymous_classes = @members.select { |m| m.name.nil? } Familia.ld "[clear_anonymous_members] Removing #{anonymous_classes.size} anonymous classes" @members.reject! { |m| m.name.nil? } anonymous_classes end |
.configure {|_self| ... } ⇒ Object
A convenience pattern for configuring Familia.
70 71 72 |
# File 'lib/familia.rb', line 70 def configure yield self end |
.debug? ⇒ Boolean
Checks if debug mode is enabled
e.g. Familia.debug = true
79 80 81 |
# File 'lib/familia.rb', line 79 def debug? @debug == true end |
.resolve_class(target) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/familia.rb', line 49 def resolve_class(target) case target when Class target when ::String, Symbol config_name = target.to_s.demodularize.snake_case member_by_config_name(config_name) else raise ArgumentError, "Expected Class, String, or Symbol, got #{target.class}" end end |
.test_mode? ⇒ Boolean
Check if we're in test mode by looking for test-related constants or environment variables
109 110 111 |
# File 'lib/familia.rb', line 109 def test_mode? defined?(Tryouts) || ENV['FAMILIA_TEST_MODE'] == 'true' end |
.unload_member(klass) ⇒ Class?
Remove a member class from the members array. Used for test cleanup to prevent anonymous classes from polluting the global registry.
89 90 91 92 |
# File 'lib/familia.rb', line 89 def unload_member(klass) Familia.ld "[unload_member] Removing #{klass} from members" @members.delete(klass) end |