Module: SnailTrail
- Extended by:
- Cleaner
- Defined in:
- lib/snail_trail.rb,
lib/snail_trail/config.rb,
lib/snail_trail/errors.rb,
lib/snail_trail/cleaner.rb,
lib/snail_trail/reifier.rb,
lib/snail_trail/request.rb,
lib/snail_trail/events/base.rb,
lib/snail_trail/model_config.rb,
lib/snail_trail/record_trail.rb,
lib/snail_trail/compatibility.rb,
lib/snail_trail/events/create.rb,
lib/snail_trail/events/update.rb,
lib/snail_trail/events/destroy.rb,
lib/snail_trail/record_history.rb,
lib/snail_trail/version_number.rb,
lib/snail_trail/has_snail_trail.rb,
lib/snail_trail/version_concern.rb,
lib/snail_trail/serializers/json.rb,
lib/snail_trail/serializers/yaml.rb,
lib/snail_trail/frameworks/cucumber.rb,
lib/snail_trail/frameworks/rails/railtie.rb,
lib/snail_trail/frameworks/rspec/helpers.rb,
lib/snail_trail/frameworks/rails/controller.rb,
lib/snail_trail/queries/versions/where_object.rb,
lib/generators/snail_trail/migration_generator.rb,
lib/generators/snail_trail/install/install_generator.rb,
lib/snail_trail/queries/versions/where_object_changes.rb,
lib/snail_trail/attribute_serializers/object_attribute.rb,
lib/snail_trail/queries/versions/where_attribute_changes.rb,
lib/snail_trail/queries/versions/where_object_changes_to.rb,
lib/snail_trail/queries/versions/where_object_changes_from.rb,
lib/snail_trail/type_serializers/postgres_array_serializer.rb,
lib/snail_trail/attribute_serializers/object_changes_attribute.rb,
lib/snail_trail/attribute_serializers/cast_attribute_serializer.rb,
lib/snail_trail/attribute_serializers/attribute_serializer_factory.rb,
lib/snail_trail/frameworks/active_record/models/snail_trail/version.rb,
lib/generators/snail_trail/update_item_subtype/update_item_subtype_generator.rb
Overview
An ActiveRecord extension that tracks changes to your models, for auditing or versioning.
Defined Under Namespace
Modules: AttributeSerializers, Cleaner, Compatibility, Cucumber, Events, Model, Queries, RSpec, Rails, Reifier, Request, Serializers, TypeSerializers, VERSION, VersionConcern Classes: Config, Error, InstallGenerator, InvalidOption, MigrationGenerator, ModelConfig, Railtie, RecordHistory, RecordTrail, UnsupportedColumnType, UnsupportedSchema, UpdateItemSubtypeGenerator, Version
Constant Summary collapse
- E_TIMESTAMP_FIELD_CONFIG =
<<-EOS.squish.freeze SnailTrail.timestamp_field= has been removed, without replacement. It is no longer configurable. The timestamp column in the versions table must now be named created_at. EOS
Class Method Summary collapse
- .active_record_gte_7_0? ⇒ Boolean
-
.config {|@config| ... } ⇒ Object
(also: configure)
Returns SnailTrail’s global configuration object, a singleton.
- .deprecator ⇒ Object
-
.enabled=(value) ⇒ Object
Switches SnailTrail on or off, for all threads.
-
.enabled? ⇒ Boolean
Returns ‘true` if SnailTrail is on, `false` otherwise.
-
.gem_version ⇒ Object
Returns SnailTrail’s ‘::Gem::Version`, convenient for comparisons.
-
.request(options = nil, &block) ⇒ Object
Set variables for the current request, eg.
-
.serializer ⇒ Object
Get the SnailTrail serializer used by all threads.
-
.serializer=(value) ⇒ Object
Set the SnailTrail serializer.
-
.timestamp_field=(_field_name) ⇒ Object
Set the field which records when a version was created.
- .transaction? ⇒ Boolean
- .version ⇒ Object
Methods included from Cleaner
Class Method Details
.active_record_gte_7_0? ⇒ Boolean
122 123 124 |
# File 'lib/snail_trail.rb', line 122 def active_record_gte_7_0? @active_record_gte_7_0 ||= ::ActiveRecord.gem_version >= ::Gem::Version.new("7.0.0") end |
.config {|@config| ... } ⇒ Object Also known as: configure
Returns SnailTrail’s global configuration object, a singleton. These settings affect all threads.
110 111 112 113 114 |
# File 'lib/snail_trail.rb', line 110 def config @config ||= SnailTrail::Config.instance yield @config if block_given? @config end |
.deprecator ⇒ Object
126 127 128 |
# File 'lib/snail_trail.rb', line 126 def deprecator @deprecator ||= ActiveSupport::Deprecation.new("16.0", "SnailTrail") end |
.enabled=(value) ⇒ Object
Switches SnailTrail on or off, for all threads.
44 45 46 |
# File 'lib/snail_trail.rb', line 44 def enabled=(value) SnailTrail.config.enabled = value end |
.enabled? ⇒ Boolean
Returns ‘true` if SnailTrail is on, `false` otherwise. This is the on/off switch that affects all threads. Enabled by default.
51 52 53 |
# File 'lib/snail_trail.rb', line 51 def enabled? !!SnailTrail.config.enabled end |
.gem_version ⇒ Object
Returns SnailTrail’s ‘::Gem::Version`, convenient for comparisons. This is recommended over `::SnailTrail::VERSION::STRING`.
Added in 7.0.0
61 62 63 |
# File 'lib/snail_trail.rb', line 61 def gem_version ::Gem::Version.new(VERSION::STRING) end |
.request(options = nil, &block) ⇒ Object
Set variables for the current request, eg. whodunnit.
All request-level variables are now managed here, as of ST 9. Having the word “request” right there in your application code will remind you that these variables only affect the current request, not all threads.
Given a block, temporarily sets the given ‘options`, executes the block, and returns the value of the block.
Without a block, this currently just returns ‘SnailTrail::Request`. However, please do not use `SnailTrail::Request` directly. Currently, `Request` is a `Module`, but in the future it is quite possible we may make it a `Class`. If we make such a choice, we will not provide any warning and will not treat it as a breaking change. You’ve been warned :)
81 82 83 84 85 86 87 |
# File 'lib/snail_trail.rb', line 81 def request( = nil, &block) if .nil? && !block Request else Request.with(, &block) end end |
.serializer ⇒ Object
Get the SnailTrail serializer used by all threads.
103 104 105 |
# File 'lib/snail_trail.rb', line 103 def serializer SnailTrail.config.serializer end |
.serializer=(value) ⇒ Object
Set the SnailTrail serializer. This setting affects all threads.
97 98 99 |
# File 'lib/snail_trail.rb', line 97 def serializer=(value) SnailTrail.config.serializer = value end |
.timestamp_field=(_field_name) ⇒ Object
Set the field which records when a version was created.
91 92 93 |
# File 'lib/snail_trail.rb', line 91 def (_field_name) raise Error, E_TIMESTAMP_FIELD_CONFIG end |
.transaction? ⇒ Boolean
38 39 40 |
# File 'lib/snail_trail.rb', line 38 def transaction? ::ActiveRecord::Base.connection.open_transactions.positive? end |