Thanks for taking the time to contribute!
The following is a set of guidelines for contributing to monday_ruby. These are mostly guidelines, not rules. Use your best judgment, and feel to propose changes to this document in a pull request.
Unsure where to begin contributing? You can start by looking through good first issue and help wanted issues.
Please follow these steps to have your contribution considered:
- Follow the pull request template.
- Follow the commit guidelines.
- After you submit your pull request, verify that all the status checks are passing.
This project uses VCR to record HTTP interactions for tests. This means you do not need a Monday.com API token to run most tests or contribute to the project.
To run the test suite:
bundle exec rake specAll tests will use pre-recorded VCR cassettes stored in spec/fixtures/vcr_cassettes/.
For most contributions, you won't need to modify VCR cassettes. The existing cassettes cover the current API functionality.
You only need to record new VCR cassettes when:
- Adding support for a new API endpoint that doesn't have existing test coverage
- Modifying an existing API call that changes the request/response structure
To record new cassettes:
-
Set your Monday.com API token as an environment variable:
export MONDAY_TOKEN="your_token_here"
-
Delete the old cassette file (if updating an existing test):
rm spec/fixtures/vcr_cassettes/your_cassette_name.yml
-
Run the specific test to generate a new cassette:
bundle exec rspec spec/path/to/your_spec.rb -
Important: Before committing, verify the cassette doesn't contain sensitive data:
- VCR automatically filters the
Authorizationheader - Check for any other sensitive information in the cassette file
- Cassettes are committed to the repository
- VCR automatically filters the
If you're adding a new feature but don't have API access to record cassettes:
- Write your implementation and tests
- Create a pull request noting that cassettes need to be recorded
- A maintainer with API access will record the cassettes for you
Run RuboCop to ensure code style compliance:
bundle exec rake rubocopThe project uses Docyard to generate documentation from Markdown files. The documentation site is hosted at https://sanifhimani.github.io/monday_ruby/.
Update documentation when you:
- Add a new resource or method to the public API
- Change the behavior of existing methods
- Add new features or configuration options
- Fix bugs that affect documented behavior
Documentation follows the Diataxis framework:
- Getting Started (
docs/getting-started/) - Learning-oriented, gets users started - Guides (
docs/guides/) - Task-oriented, solves specific problems - Reference (
docs/reference/) - Information-oriented, describes the API - Explanation (
docs/explanation/) - Understanding-oriented, explains concepts
Documentation files are located in the docs/ directory. Navigation is configured in docs/_sidebar.yml.
- Find or create the appropriate file based on what you're documenting
- Follow the existing format - look at similar documentation files for examples
- Test your code examples - all examples should be runnable and accurate
- Update navigation if adding new pages - edit
_sidebar.ymlfor the respective folder
- Code examples must be accurate - verify against VCR test fixtures or real API
- Include practical examples - show real-world usage, not just syntax
- Be consistent - follow the style and tone of existing documentation
- No emojis - maintain professional tone in documentation
- Link related pages - help users discover relevant documentation
- Keep examples self-contained - users should be able to copy-paste and run
Documentation is automatically deployed via GitHub Actions when changes are merged to the main branch. You don't need to manually deploy.
- Use present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move file to..." not "Moves file to...")
- Limit the first line to 70 characters or less.
- Reference issues and pull requests after the first line.
- Try to follow conventional commits