Contributing
Table of contents
Bug reports and pull requests are welcome on the associated repository:
Repositores are split into 2 main categories; building blocks or the wiring that connects them together. Raindeer is one large repository containing many feature-level components, however it contains 2 cross cutting concerns; Router and Pipelines.
Setup
In your terminal run:
bundle install
For LowLoop or Raindeer you will also be running a server:
bin/server
Tip
bin/server as opposed to rain server ensures you're working with local gems
iTerm: You may need to press Option + A to accept screen refreshing.
Testing
Run all tests with bundle exec rspec.
Add the SHOW_OUTPUT=1 flag to see the terminal output from some of the feature tests.
Guidelines
AI
Please submit human-written code that is tested. AI will hallucinate and doesn't actually understand the code. AI is great for asking questions and generating benchmarks though.
.[] Syntax
Raindeer uses the [] class syntax a lot, but it does so within reason. Our guiding rule is:
The
[]syntax should access and define collections, not act solely as a constructor
While it's tempting to use this syntax as a "constuctor" for modules (MyModule[config:]), it's actually counter productive, it muddies the waters. Users should see [] and instantly know that they're accessing or definining a collection of objects, not constructing or returning a single object. Just use .new() or call a named method.