Skip to content

Commit 55acc17

Browse files
committed
Add documentation to README
1 parent 86b7945 commit 55acc17

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

README.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,51 @@ Or install it yourself as:
1818
```bash
1919
$ gem install code0-zero_track
2020
```
21+
22+
## Features
23+
24+
### `Code0::ZeroTrack::Context`
25+
26+
Context allows you to save data in a thread local object. Data from the Context is merged into the
27+
log messages, if `Code0::ZeroTrack::Logs::JsonFormatter` or `Code0::ZeroTrack::Logs::JsonFormatter::Tagged`
28+
is used.
29+
30+
`.with_context(data, &block)` creates a new context inheriting data from the previous context and adds the
31+
passed data to it. The new context is dropped after the block finished execution. \
32+
`.push(data)` creates a new context inheriting data from the previous context and adds the passed data to it. \
33+
`.current` returns the context from the top of the stack.
34+
35+
### `Code0::ZeroTrack::Memoize`
36+
37+
This module can be included to get access to the `memoize(name, reset_on_change, &block)` method.
38+
39+
This method allows to memoize a value, so it only gets computed once.
40+
Each memoize is identified by the name. You can pass a proc to `reset_on_change` and the memoization
41+
will automatically clear every time returned value changes.
42+
43+
`memoized?(name)` allows to check if a value for the given name is currently memoized. \
44+
Memoizations can be cleared with `clear_memoize(name)` or `clear_memoize!(name)`.
45+
46+
### `config.zero_track.active_record.schema_cleaner`
47+
48+
When using `config.active_record.schema_format = :sql`, Rails produces a `db/structure.sql`.
49+
This file contains a lot of noise that doesn't provide much value.
50+
51+
This noise can be cleaned out with `config.zero_track.active_record.schema_cleaner = true`.
52+
53+
### `config.zero_track.active_record.timestamps`
54+
55+
Setting `config.zero_track.active_record.timestamps = true` adds `timestamps_with_timezone`
56+
and `datetime_with_timezone` as methods on the table model when creating tables in migrations.
57+
58+
They behave just like `timestamps` and `datetime`, just including timezones.
59+
60+
### `config.zero_track.active_record.schema_migrations`
61+
62+
Rails uses the `schema_migrations` table to keep track which migrations have been executed.
63+
This information is also persisted in the `db/structure.sql`, so the `schema_migrations` table
64+
can be filled with the correct entries when the schema is loaded from the schema file.
65+
66+
This approach is prone to git conflicts, so you can switch to a file based persistence
67+
with `config.zero_track.active_record.schema_migrations = true`. Instead of an `INSERT INTO` in
68+
the `db/structure.sql`, this mode creates files in the `db/schema_migrations` directory.

0 commit comments

Comments
 (0)