autojanet/skills/understand/languages/ruby.md
Zoë cc74ad0bd0
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
fix: use library/ Harbor project, add skills, fix pipeline secrets
- .woodpecker.yaml: image paths -> library/autojanet-{agent,dispatcher}
- .woodpecker.yaml: secret names RS_HARBOR_USER / RS_HARBOR_PASS (global)
- container/Dockerfile: restore COPY skills/, skills/ populated from opencode config
- skills/: 84 opencode skills bundled into image
- k8s/manifests: update image refs to library/
2026-05-30 15:43:14 -07:00

46 lines
2.4 KiB
Markdown

# Ruby Language Prompt Snippet
## Key Concepts
- **Blocks/Procs/Lambdas**: First-class callable objects; blocks are implicit, procs and lambdas are explicit
- **Mixins (include/extend)**: Share behavior across classes via modules without inheritance
- **Metaprogramming**: Dynamic method definition (`define_method`), interception (`method_missing`)
- **Duck Typing**: Objects are defined by what they can do, not what class they are
- **DSLs**: Domain-specific languages built using blocks and metaprogramming (e.g., Rails routes)
- **Monkey Patching**: Reopening existing classes to add or modify methods at runtime
- **Symbols**: Immutable, interned strings (`:name`) used as identifiers and hash keys
- **Open Classes**: Any class can be reopened and extended at any point in the program
- **Enumerable Module**: Mixin providing collection methods (map, select, reduce) to any class with `each`
## Import Patterns
- `require 'gem_name'` — load a gem or standard library module
- `require_relative './file'` — load a file relative to the current file's directory
- `load 'file.rb'` — load and re-execute a file (unlike require, does not cache)
- `autoload :ClassName, 'path'` — lazy loading of constants on first reference
## File Patterns
- `Gemfile` — dependency declarations managed by Bundler
- `Rakefile` — task definitions (Ruby's make equivalent)
- `spec/` — RSpec test directory with `*_spec.rb` convention
- `test/` — Minitest directory with `test_*.rb` or `*_test.rb` convention
- `config.ru` — Rack application entry point for web servers
- `lib/` — main source code directory by convention
## Common Frameworks
- **Rails** — Full-stack web framework following convention over configuration
- **Sinatra** — Minimal DSL for creating web applications quickly
- **RSpec** — Behavior-driven testing framework with expressive DSL
- **Sidekiq** — Background job processing using Redis-backed queues
- **Grape** — REST API micro-framework for Ruby
## Example Language Notes
> Uses `method_missing` to dynamically delegate attribute access to the wrapped model
> object. When a method is not found on the decorator, it falls through to the model,
> providing transparent delegation without explicit forwarding methods.
>
> Rails relies heavily on convention over configuration — file placement in `app/models/`,
> `app/controllers/`, etc. determines behavior without explicit registration.