mojombo/ernie
54.0
Adequate · 23 September 2026
1.4k
lines of production code
Erlang
with Ruby
5
measurements over time
What this system is
Ernie is a Ruby gem that implements a BERT-RPC server, enabling remote procedure calls between Ruby and Erlang components. It provides a structured command-line interface for server control, access logging, and performance benchmarking. The system supports both native Erlang modules and external Ruby modules, with a comprehensive test suite validating its RPC handling and module interactions.
Features
Add example configuration and native/external module implementations
The examples directory now includes a new example configuration file (example.cfg) that defines both native and external module handlers, alongside a separate SASL logging configuration (example.config). Additionally, new example modules have been added: an Erlang module (nat.erl) implementing functions like add, fib, and die, and an external Ruby module (ext.rb) providing methods such as add, fib, shadow, bytes, and slow. These files serve as concrete examples of how to configure and implement native and external modules within the system.
examples · medium confidence
Added Erlang build support for the ext module
Users can now build the Erlang components in the ext directory. A new Makefile has been added to compile Erlang source files from the ../elib directory into the ../ebin directory. The extconf.rb file is present but empty, indicating that the build process is managed via the handwritten Makefile rather than Ruby-based configuration.
ext · high confidence
Added ebench benchmarking tool
A new ebench utility has been added to the contrib directory. This tool allows users to run performance benchmarks by spawning multiple concurrent TCP connections to localhost:8000, sending serialized requests, and measuring the mean request time and throughput. It supports different modules and functions (such as 'add' and 'fib') to evaluate system performance under load.
contrib · high confidence
Introduce Ernie server with BERT-RPC support
The Ernie server is now implemented in lib/ernie.rb, providing a BERT-RPC (Berkeley Elixir Remote Procedure Call) interface. It supports defining modules and functions via DSL, exposing Ruby modules, and handling both call and cast requests. The server uses the 'bert' gem for encoding/decoding BERT packets, with configurable logging and process title updates.
lib · high confidence
Introduce access logging, structured logging, and asset pooling
The server now supports writing access logs to a file, with timestamps in ISO 8601 format and a configurable log level via the new \logger\ module. External handlers are managed through an \asset\_pool\ that recycles and reloads assets, while internal native modules are handled directly. The server also exposes admin commands for reloading handlers, viewing stats, and graceful shutdown.
elib · high confidence
Removals
Removal of legacy CLI server command
The 'server' command has been removed from the CLI interface. This eliminates the previous mechanism for starting the application as a daemon with configurable name, port, and PID file, which was implemented in the now-deleted \lib/cli/server.rb\ file.
lib/cli · high confidence
Behavioural changes
Build automation and release process modernized
The project's build system has been updated to use Rake for managing tasks such as testing, documentation generation, and gem packaging. A new Rakefile introduces automated release workflows, including validation checks, gemspec generation, and RubyGems publishing. Additionally, the .gitignore file has been updated to exclude the 'pkg' directory, and a .document file has been added to specify documentation sources.
(repo-wide) · low confidence
Ernie CLI refactored with explicit commands and configuration options
The Ernie binary has been refactored to support explicit subcommands (start, reload-handlers, stats, halt) and a comprehensive set of command-line options for configuration, including port, log level, access log file, daemon mode, Erlang node names, and additional Erlang VM parameters. This replaces the previous implicit command parsing with a structured CLI interface that allows users to control the server's behavior and inspect its state more effectively.
bin · high confidence
Rename server application from smoke to ernie
The server application has been renamed from 'smoke\_server\_app' to 'ernie\_server\_app'. This change updates the application's internal identifier and module reference, reflecting the rebranding or renaming of the server component.
ebin · high confidence
Test coverage
Added test suite for internal and external module interactions; Added unit and server tests for Ernie.
Dependencies
Initial release of the Ernie gem (v2.5.2)
The project is now distributed as a Ruby gem named 'ernie' (version 2.5.2), which packages an Erlang/Ruby hybrid BERT-RPC server implementation. The gem includes native extensions and depends on the 'bert' and 'bertrpc' libraries, providing an executable named 'ernie' for server operations.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 48 → 54 (+5.8)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 98 (-2.0)
- Architecture 69 → 69 (+0.0)
- Maturity 35 → 48 (+12.3)
- Readiness 36 → 43 (+6.6)
- Security 100 → 93 (-7.3)
Resolved (6)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — no supported dependency manifest was read
- No exposed public API
- Test reliability not included
- complexity unreadable for .erl, .hrl, .rb — churn × complexity hotspots could not be measured
- dormant codebase — no living knowledge left to concentrate
New (7)
- Coverage not measured — no coverage collector is wired up
- Documentation: no architecture or design documentation (README.md)
- Documentation: no usage examples (README.md)
- Ernie.process (cognitive 39) (lib/ernie.rb)
- Ernie.process (cyclomatic 19) (lib/ernie.rb)
- High: security finding (details withheld)
- High: security finding (details withheld)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
mojombo/ernie was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit a21664e668038291bdbe42684d46cb112242aa7b — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.