ci: uplift the repo process - #548
Conversation
niteshpurohit
commented
Mar 30, 2026
- Introduced a new setup script to automate the installation of dependencies.
- Added a generator for creating serializers for models, enhancing the ease of serialization in Rails applications.
- Implemented a base serializer class with methods for JSON serialization, including support for attributes and relationships.
- Created helper classes for caching and inflection operations to optimize performance.
- Developed comprehensive tests for the new serialization features, ensuring reliability and correctness.
- Updated the gemspec to include necessary dependencies and metadata for better package management.
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
There was a problem hiding this comment.
Pull request overview
This PR restructures the repository into a more complete, CI-driven Ruby gem project for mutils, including a serializer DSL (base serializer + attribute/relationship DSL), a Rails generator, supporting docs, and supporting CI/tooling (Rubocop/Reek/RSpec, Danger, CodeQL, GitHub Pages docs).
Changes:
- Move gem packaging, dependencies, and test tooling under
mutils/(new gemspec, Gemfile, Rakefile, binstubs, spec setup). - Introduce/extend serializer implementation (base serializer, DSL modules, results builders) and add/expand serialization and helper specs.
- Add/refresh repo automation: shared CI workflow, release workflow, docs site workflow, Danger, Qlty config, and Jekyll docs site.
Reviewed changes
Copilot reviewed 50 out of 81 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| Version | Remove legacy version file (was v1.3.5). |
| spec/spec_helper.rb | Remove root spec helper (coverage + RSpec config). |
| mutils/spec/spec_helper.rb | Add mutils-local SimpleCov + RSpec setup. |
| mutils/spec/serialization/serialization_json_spec.rb | Add serialization regression tests (block attrs, nil parsing). |
| mutils/spec/serialization/expect_output.rb | Add JSON/XML expected outputs used by specs. |
| mutils/spec/mutils/lib/helper_spec.rb | Add tests for helper inflection caching. |
| mutils/spec/mutils_spec.rb | Add basic gem version smoke test. |
| mutils/spec/mock_classes.rb | Add test fixtures + example serializers. |
| mutils/README.md | Add gem README with usage examples. |
| mutils/Rakefile | Add RSpec rake task and default task. |
| mutils/mutils.gemspec | Add gemspec for mutils/ subproject. |
| mutils/LICENSE | Update license header text/formatting. |
| mutils/lib/mutils/version.rb | Add Mutils::VERSION. |
| mutils/lib/mutils/serialization/serialization_results.rb | Add results module aggregator. |
| mutils/lib/mutils/serialization/serialization_methods.rb | Add DSL module aggregator. |
| mutils/lib/mutils/serialization/serialization_includes.rb | Add class-level serializer config accessors. |
| mutils/lib/mutils/serialization/results/relations.rb | Add relationship hashing logic. |
| mutils/lib/mutils/serialization/results/main.rb | Add main hash generation + inclusion checks. |
| mutils/lib/mutils/serialization/results/attributes.rb | Add scalar + block attribute hashing. |
| mutils/lib/mutils/serialization/methods/relations.rb | Add relationship DSL + option normalization. |
| mutils/lib/mutils/serialization/methods/main.rb | Add name_tag + class existence helper. |
| mutils/lib/mutils/serialization/methods/attributes.rb | Adjust attribute validation; defines attribute DSL. |
| mutils/lib/mutils/serialization/base_serializer.rb | Add base serializer output methods (hash/json). |
| mutils/lib/mutils/lib/result_hash.rb | Add small wrapper for building result hashes. |
| mutils/lib/mutils/lib/helper.rb | Add singleton helper (inflection/constantize/cache). |
| mutils/lib/mutils.rb | Add gem entrypoint requires + error class. |
| mutils/lib/generators/mutils/USAGE | Add generator usage documentation. |
| mutils/lib/generators/mutils/templates/serializer.rb.tt | Add serializer generator template. |
| mutils/lib/generators/mutils/serializer_generator.rb | Add Rails generator implementation. |
| mutils/Gemfile.lock | Add lockfile for mutils gem development. |
| mutils/Gemfile | Add gem-local dev/test dependencies. |
| mutils/bin/setup | Add setup script for local dev. |
| mutils/bin/rubocop | Add license header to bundler binstub. |
| mutils/bin/rspec | Add license header to bundler binstub. |
| mutils/bin/reek | Add reek runner script (PTY-based). |
| mutils/bin/console | Add IRB console entrypoint. |
| mutils/.ruby-version | Pin Ruby version for mutils project. |
| mutils/.rubocop.yml | Add gem-local RuboCop config. |
| mutils/.rspec | Add gem-local RSpec CLI config. |
| mutils/.reek.yml | Add gem-local Reek config. |
| mutils/.gitignore | Add gem-local ignore file. |
| mutils.gemspec | Remove root gemspec. |
| lib/mutils/serialization/methods/relations.rb | Remove legacy relations DSL file. |
| Gemfile.lock | Remove root lockfile (legacy deps). |
| Gemfile | Remove root Gemfile (legacy deps). |
| docs/pages/5-usage.md | Add Jekyll docs: detailed usage guide. |
| docs/pages/3-install.md | Add Jekyll docs: installation guide. |
| docs/pages/2-overview.md | Add Jekyll docs: overview/motivation. |
| docs/pages/101-faq.md | Add Jekyll docs: FAQ/troubleshooting. |
| docs/index.md | Add docs homepage. |
| docs/Gemfile.lock | Add docs site lockfile. |
| docs/Gemfile | Add docs site Gemfile. |
| docs/CNAME | Add custom domain for docs. |
| docs/assets/images/logo.svg | Add docs logo asset. |
| docs/assets/images/favicon.svg | Add docs favicon asset. |
| docs/assets/css/just-the-docs-light.scss | Add light theme CSS include. |
| docs/assets/css/just-the-docs-dark.scss | Add dark theme CSS include. |
| docs/404.html | Add docs 404 page. |
| docs/.ruby-version | Pin Ruby version for docs site. |
| docs/.gitignore | Add docs site ignore file. |
| docs/_includes/head_custom.html | Add theme toggle + favicon in head. |
| docs/_includes/footer_custom.html | Add footer badges/links. |
| docs/_config.yml | Add Jekyll/Just-the-docs configuration. |
| danger/Gemfile.lock | Add Danger bundle lockfile. |
| danger/Gemfile | Add Danger Gemfile. |
| danger/Dangerfile | Add PR policy enforcement rules. |
| .rubocop.yml | Remove root RuboCop config. |
| .rspec | Remove root RSpec config. |
| .releaserc | Remove semantic-release config. |
| .qlty/qlty.toml | Add Qlty configuration. |
| .qlty/.gitignore | Add Qlty directory ignore rules. |
| .jrubyrc | Remove JRuby debug config. |
| .github/workflows/shared-ci.yml | Add reusable workflow (Rubocop/Reek/RSpec matrix). |
| .github/workflows/release.yml | Refactor release to use shared CI + publish gem. |
| .github/workflows/release-drafter.yml | Update release drafter/autolabeler split + concurrency. |
| .github/workflows/jekyll-gh-pages.yml | Add docs build/deploy workflow. |
| .github/workflows/danger.yml | Add Danger workflow for PRs. |
| .github/workflows/codeql.yml | Update CodeQL workflow configuration. |
| .github/workflows/ci.yml | Replace bespoke CI with shared reusable workflow. |
| .github/dependabot.yml | Expand dependabot updates to docs/danger/mutils. |
| .codeclimate.yml | Remove legacy Code Climate config. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Introduced a new setup script to automate the installation of dependencies. - Added a generator for creating serializers for models, enhancing the ease of serialization in Rails applications. - Implemented a base serializer class with methods for JSON serialization, including support for attributes and relationships. - Created helper classes for caching and inflection operations to optimize performance. - Developed comprehensive tests for the new serialization features, ensuring reliability and correctness. - Updated the gemspec to include necessary dependencies and metadata for better package management.
0ec1fb8 to
41def4c
Compare
- Reorganized the Table of Contents for better navigation. - Added missing sections such as Contributing, License, Code of Conduct, and Security. - Corrected typos in the documentation for clarity.
- Changed the step name from "Upload simplecov report" to "Publish coverage to Qlty" for clarity. - Updated the action used for uploading coverage from `actions/upload-artifact@v4` to `qltysh/qlty-action/coverage@v2`. - Modified the parameters to use a token for authentication and specified the path to the coverage result file.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 64 out of 95 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Fixed typo in README regarding relationships support. - Updated error message to specify the option name for clarity.
- Updated the cache action from v4 to v5 for improved performance and compatibility. - Added QLTY_COVERAGE_TOKEN as an optional secret input for better coverage management.
- Added `secrets: inherit` to the CI job in `ci.yml` to ensure secrets are available during the CI process. - Added `secrets: inherit` to the verify_release job in `release.yml` for consistent access to secrets. - Updated the condition for publishing coverage in `shared-ci.yml` to check if the coverage token is not empty, enhancing security.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 64 out of 95 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Removed the check for QLTY_COVERAGE_TOKEN in the coverage publishing step. - This change simplifies the condition for uploading coverage when using Ruby version 3.4.
- Revised the introduction in README to better describe `mutils` as a collection of Ruby helpers. - Enhanced the description in the gemspec to clarify the purpose and features of `mutils`. - Updated the summary and description in the gemspec for improved accuracy. - Adjusted the dependency specification for `dry-inflector` to ensure compatibility.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 64 out of 95 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Removed unnecessary filtering of files in the gemspec. - Simplified the file inclusion pattern for better clarity. - Removed bindir and executables settings as they are no longer needed.
- Changed the checkout action version from v4 to v6. - This update ensures compatibility with the latest features and improvements in the checkout action.
- Changed the description format in the gemspec file to a heredoc for improved readability. - This enhances clarity and maintains consistency in the documentation style.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 64 out of 95 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.