A mailer, member database, and so much more, for digital activism.
Table of contents:
main
stable
unless you are a maintainer following the process for cutting releases.+1
by a maintainer before they can be merged. There are some exceptions, which can be merged without a +1
, but still require a PR with passing tests:
main
- only with small and urgent fixes.yml
settings files.develop
branch with
releases to master
, we have a main
branch with releases to stable
.main
, and create atomic feature
branches, namespaced like: feature/new-csl-webhooks
or fix/cache-counts
.ready-for-main-merge
- Please add this to a PR when it’s ready to be reviewed by maintainers and merged into main. We’ll assume that PRs without this are WIP / serve some other purpose, and therefore shouldn’t be reviewed.feedback-please
- This indicates that you would like feedback on the approach in the PR but don’t consider it ready for mergingdepends-unmerged
- This PR depends on another PR being merged and so can’t be reviewed yet.ongoing
- This PR requires additional feedback and/or more work is being done on it, so won’t be purged if inactive for more than 28 days.main
closely, and will choose
instead to track stable
. In this case, you’ll still create feature branches
off of main
and send PRs to main
. However, if you need a fix quickly,
before the next scheduled release, there are three approaches you can take:
main
just as you normally would, but ask the maintainers to do a quick
release containing just this fix so that stable
gets the changes quickly.stable
(e.g. git
checkout stable && git checkout -b deploy/my-org
). Run your own deploy
branch until the next release comes out, and then switch back to stable
.stable
, create a new branch like
hotfix/my-fix
, send the PR to stable
, and message the maintainers to get
it merged ASAP. Note: This should be used only in extreme circumstances.main
, one feature branch at a time.ongoing
.editorconfig
file..rubocop.yml
). It’s run on CI, and
will fail if there are any issues. You can run it locally using bundle
exec rubocop
.ENV['...']
directly in application code. Use Settings
instead.puts
, use Rails.logger.debug
insteadWhen typing SQL strings, use squiggly heredoc with an SQL terminating sequence. The benefit of doing this is that code editors will understand that the string is SQL and properly highlight it as such. Read more about the squiggly heredoc.
# bad
sql = 'SELECT email FROM members'
# bad
sql = "
SELECT email FROM members
"
# good
sql = <<~SQL
SELECT email FROM members
SQL
Member#record_action
UpsertMember#call
(which is called by Member#record_action
)Cleanser#cleanse_email
PhoneNumber#standardise_phone_number