https://github.com/code0-tech/code0-zero_track
Common helpers for Code0 rails applications
https://github.com/code0-tech/code0-zero_track
Last synced: about 2 months ago
JSON representation
Common helpers for Code0 rails applications
- Host: GitHub
- URL: https://github.com/code0-tech/code0-zero_track
- Owner: code0-tech
- License: mit
- Created: 2025-02-16T00:54:13.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-03-10T17:48:07.000Z (3 months ago)
- Last Synced: 2025-04-13T04:04:22.274Z (about 2 months ago)
- Language: Ruby
- Size: 58.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Code0::ZeroTrack
ZeroTrack is a Ruby gem designed to accelerate and standardize Rails development for Code0 projects.
## Installation
Add this line to your application's Gemfile:```ruby
gem "code0-zero_track"
```And then execute:
```bash
$ bundle
```Or install it yourself as:
```bash
$ gem install code0-zero_track
```## Features
### `Code0::ZeroTrack::Context`
Context allows you to save data in a thread local object. Data from the Context is merged into the
log messages, if `Code0::ZeroTrack::Logs::JsonFormatter` or `Code0::ZeroTrack::Logs::JsonFormatter::Tagged`
is used.`.with_context(data, &block)` creates a new context inheriting data from the previous context and adds the
passed data to it. The new context is dropped after the block finished execution. \
`.push(data)` creates a new context inheriting data from the previous context and adds the passed data to it. \
`.current` returns the context from the top of the stack.### `Code0::ZeroTrack::Memoize`
This module can be included to get access to the `memoize(name, reset_on_change, &block)` method.
This method allows to memoize a value, so it only gets computed once.
Each memoize is identified by the name. You can pass a proc to `reset_on_change` and the memoization
will automatically clear every time returned value changes.`memoized?(name)` allows to check if a value for the given name is currently memoized. \
Memoizations can be cleared with `clear_memoize(name)` or `clear_memoize!(name)`.### `config.zero_track.active_record.schema_cleaner`
When using `config.active_record.schema_format = :sql`, Rails produces a `db/structure.sql`.
This file contains a lot of noise that doesn't provide much value.This noise can be cleaned out with `config.zero_track.active_record.schema_cleaner = true`.
### `config.zero_track.active_record.timestamps`
Setting `config.zero_track.active_record.timestamps = true` adds `timestamps_with_timezone`
and `datetime_with_timezone` as methods on the table model when creating tables in migrations.They behave just like `timestamps` and `datetime`, just including timezones.
### `config.zero_track.active_record.schema_migrations`
Rails uses the `schema_migrations` table to keep track which migrations have been executed.
This information is also persisted in the `db/structure.sql`, so the `schema_migrations` table
can be filled with the correct entries when the schema is loaded from the schema file.This approach is prone to git conflicts, so you can switch to a file based persistence
with `config.zero_track.active_record.schema_migrations = true`. Instead of an `INSERT INTO` in
the `db/structure.sql`, this mode creates files in the `db/schema_migrations` directory.