A mailer, member database, and so much more, for digital activism.
Table of contents:
mainstable 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_actionUpsertMember#call (which is called by Member#record_action)Cleanser#cleanse_emailPhoneNumber#standardise_phone_number