├── docs ├── screenshots │ ├── 010_sign_in.jpg │ ├── 030_sign_up.jpg │ ├── 040_new_task.jpg │ ├── 070_sign_out.jpg │ ├── 045_edit_task.jpg │ ├── 050_task_lists.jpg │ ├── 011_sign_in_error.jpg │ ├── 041_task_created.jpg │ ├── 051_new_task_list.jpg │ ├── 020_forgot_password.jpg │ ├── 031_sign_up_errors.jpg │ ├── 032_sign_up_success.jpg │ ├── 042_task_completed.jpg │ ├── 043_tasks_completed.jpg │ ├── 044_tasks_incomplete.jpg │ ├── 052_task_list_created.jpg │ ├── 060_settings_profile.jpg │ └── 062_settings_api_token.jpg ├── 00_INSTALLATION.md ├── 02_WEB_APP_SCREENSHOTS.md ├── 01_REST_API_DOC.md └── 03_BRANCH_DESCRIPTIONS.md ├── .gitignore └── README.md /docs/screenshots/010_sign_in.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/010_sign_in.jpg -------------------------------------------------------------------------------- /docs/screenshots/030_sign_up.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/030_sign_up.jpg -------------------------------------------------------------------------------- /docs/screenshots/040_new_task.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/040_new_task.jpg -------------------------------------------------------------------------------- /docs/screenshots/070_sign_out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/070_sign_out.jpg -------------------------------------------------------------------------------- /docs/screenshots/045_edit_task.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/045_edit_task.jpg -------------------------------------------------------------------------------- /docs/screenshots/050_task_lists.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/050_task_lists.jpg -------------------------------------------------------------------------------- /docs/screenshots/011_sign_in_error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/011_sign_in_error.jpg -------------------------------------------------------------------------------- /docs/screenshots/041_task_created.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/041_task_created.jpg -------------------------------------------------------------------------------- /docs/screenshots/051_new_task_list.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/051_new_task_list.jpg -------------------------------------------------------------------------------- /docs/screenshots/020_forgot_password.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/020_forgot_password.jpg -------------------------------------------------------------------------------- /docs/screenshots/031_sign_up_errors.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/031_sign_up_errors.jpg -------------------------------------------------------------------------------- /docs/screenshots/032_sign_up_success.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/032_sign_up_success.jpg -------------------------------------------------------------------------------- /docs/screenshots/042_task_completed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/042_task_completed.jpg -------------------------------------------------------------------------------- /docs/screenshots/043_tasks_completed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/043_tasks_completed.jpg -------------------------------------------------------------------------------- /docs/screenshots/044_tasks_incomplete.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/044_tasks_incomplete.jpg -------------------------------------------------------------------------------- /docs/screenshots/052_task_list_created.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/052_task_list_created.jpg -------------------------------------------------------------------------------- /docs/screenshots/060_settings_profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/060_settings_profile.jpg -------------------------------------------------------------------------------- /docs/screenshots/062_settings_api_token.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/architecture/rails-way-app/main/docs/screenshots/062_settings_api_token.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files for more about ignoring files. 2 | # 3 | # If you find yourself ignoring temporary files generated by your text editor 4 | # or operating system, you probably want to add a global ignore instead: 5 | # git config --global core.excludesfile '~/.gitignore_global' 6 | 7 | # Ignore bundler config. 8 | /.bundle 9 | 10 | # Ignore all environment files (except templates). 11 | /.env* 12 | !/.env*.erb 13 | 14 | # Ignore all logfiles and tempfiles. 15 | /log/* 16 | /tmp/* 17 | !/log/.keep 18 | !/tmp/.keep 19 | 20 | # Ignore pidfiles, but keep the directory. 21 | /tmp/pids/* 22 | !/tmp/pids/ 23 | !/tmp/pids/.keep 24 | 25 | # Ignore storage (uploaded files in development and any SQLite databases). 26 | /storage/* 27 | !/storage/.keep 28 | /tmp/storage/* 29 | !/tmp/storage/ 30 | !/tmp/storage/.keep 31 | 32 | /public/assets 33 | 34 | # Ignore master key for decrypting credentials and more. 35 | /config/master.key 36 | 37 | /coverage/ 38 | -------------------------------------------------------------------------------- /docs/00_INSTALLATION.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | > `MENU` [README](../README.md) | **How to run locally** | [REST API doc](./01_REST_API_DOC.md) | [Web app screenshots](./02_WEB_APP_SCREENSHOTS.md) | [Branch descriptions](./03_BRANCH_DESCRIPTIONS.md) 4 | 5 | 6 | 7 | # 🚆 Rails Way App 8 | 9 | Instructions to setup and run the application locally. 10 | 11 | ## 📚 Table of contents 12 | 13 | - [System dependencies](#system-dependencies) 14 | - [How to setup the application](#how-to-setup-the-application) 15 | - [How to run the application locally](#how-to-run-the-application-locally) 16 | - [How to run the test suite (and generate coverage report)](#how-to-run-the-test-suite-and-generate-coverage-report) 17 | - [How to generate the code quality](#how-to-generate-the-code-quality) 18 | - [How to generate the App statistics](#how-to-generate-the-app-statistics) 19 | 20 | ## System dependencies 21 | * SQLite3 22 | * Ruby `3.3.4` 23 | * bundler `>= 2.5.14` 24 | 25 | ## How to setup the application 26 | 27 | 1. Install system dependencies 28 | 2. Access one of the [branches](../README.md#-repository-branches) 29 | 3. Create a `config/master.key` file with the following content: 30 | ```sh 31 | echo '257d6f71fb8c5a5e9724a130c0e35c5d' > config/master.key 32 | 33 | chmod 600 config/master.key 34 | ``` 35 | 3. Run `bin/setup` 36 | 37 |
38 | 39 | ## How to run the application locally 40 | 41 | 1. `bin/rails s` 42 | 2. Open in your browser: `http://localhost:3000` 43 | 44 | 45 | 46 | ## How to run the test suite (and generate coverage report) 47 | 48 | * `bin/rails test` 49 | 50 | ## How to generate the code quality 51 | 52 | * `bin/rails rubycritic` 53 | 54 | ## How to generate the App statistics 55 | 56 | * `bin/rails stats` 57 | 58 | 59 | -------------------------------------------------------------------------------- /docs/02_WEB_APP_SCREENSHOTS.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | > `MENU` [README](../README.md) | [How to run locally](./00_INSTALLATION.md) | [REST API doc](./01_REST_API_DOC.md) | Web app screenshots | [Branch descriptions](./03_BRANCH_DESCRIPTIONS.md) 4 | 5 | 6 | 7 | # 🚆 Rails Way App 8 | 9 | This document contains screenshots of web application pages. 10 | 11 | ## 📚 Table of contents 12 | 13 | - [Sign in](#sign-in) 14 | - [Forgot password](#forgot-password) 15 | - [Sign up](#sign-up) 16 | - [Tasks](#tasks) 17 | - [Task Lists](#task-lists) 18 | - [Settings](#settings) 19 | - [Sign out](#sign-out) 20 | 21 | 22 | ### Sign in 23 | 24 |
25 |
26 |
27 |
28 |
29 | ### Forgot password
30 |
31 |
32 |
33 |
34 |
35 | ### Sign up
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | ### Tasks
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | ### Task Lists
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | ### Settings
63 |
64 |
65 |
66 |
67 |
68 |
69 | ### Sign out
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/docs/01_REST_API_DOC.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | > `MENU` [README](../README.md) | [How to run locally](./00_INSTALLATION.md) | **REST API doc** | [Web app screenshots](./02_WEB_APP_SCREENSHOTS.md) | [Branch descriptions](./03_BRANCH_DESCRIPTIONS.md)
4 |
5 |
6 |
7 | # 🚆 Rails Way App
8 |
9 | REST API documentation (cURL examples).
10 |
11 | ## Versions
12 |
13 | Although the REST API behavior is the same, the endpoints may vary depending on the branch.
14 |
15 | You can use the links below to access the documentation for the desired version.
16 |
17 | | LOC / GRADE | Branch |
18 | | ------------ | ------ |
19 | | 1326 / 89.23 | [010-one-controller-per-entity](https://github.com/solid-process/rails-way-app/blob/010-one-controller-per-entity/docs/01_REST_API_DOC.md#-table-of-contents-) |
20 | | 1350 / 90.34 | [011-one-controller-per-entity_user-concerns](https://github.com/solid-process/rails-way-app/blob/011-one-controller-per-entity_user-concerns/docs/01_REST_API_DOC.md#-table-of-contents-) |
21 | | 1342 / 91.34 | [020-multi-controllers-per-entity](https://github.com/solid-process/rails-way-app/blob/020-multi-controllers-per-entity/docs/01_REST_API_DOC.md#-table-of-contents-) |
22 | | 1361 / 91.56 | [021-multi-controllers-per-entity_rest-actions-only](https://github.com/solid-process/rails-way-app/blob/021-multi-controllers-per-entity_rest-actions-only/docs/01_REST_API_DOC.md#-table-of-contents-) |
23 | | 1361 / 91.56 | [030-resources-within-namespaces](https://github.com/solid-process/rails-way-app/blob/030-resources-within-namespaces/docs/01_REST_API_DOC.md#-table-of-contents-) |
24 | | 1355 / 91.56 | [031-resources-within-namespaces_base-controllers](https://github.com/solid-process/rails-way-app/blob/031-resources-within-namespaces_base-controllers/docs/01_REST_API_DOC.md#-table-of-contents-) |
25 | | 1355 / 91.56 | [032-resources-within-namespaces_partials-grouped-by-context](https://github.com/solid-process/rails-way-app/blob/032-resources-within-namespaces_partials-grouped-by-context/docs/01_REST_API_DOC.md#-table-of-contents-) |
26 | | 1356 / 91.56 | [033-resources-within-namespaces_mailers-under-entity-context](https://github.com/solid-process/rails-way-app/blob/033-resources-within-namespaces_mailers-under-entity-context/docs/01_REST_API_DOC.md#-table-of-contents-) |
27 | | 1356 / 91.56 | [034-resources-within-namespaces_nested-namespaces](https://github.com/solid-process/rails-way-app/blob/034-resources-within-namespaces_nested-namespaces/docs/01_REST_API_DOC.md#-table-of-contents-) |
28 | | 1356 / 91.56 | [035-resources-within-namespaces_singular_resources](https://github.com/solid-process/rails-way-app/blob/035-resources-within-namespaces_singular_resources/docs/01_REST_API_DOC.md#-table-of-contents-) |
29 | | 1359 / 91.56 | [040-models-within-namespaces](https://github.com/solid-process/rails-way-app/blob/040-models-within-namespaces/docs/01_REST_API_DOC.md#-table-of-contents-) |
30 | | 1462 / 94.04 | [050-separation-of-entry-points](https://github.com/solid-process/rails-way-app/blob/050-separation-of-entry-points/docs/01_REST_API_DOC.md#-table-of-contents-) |
31 | | 1456 / 95.56 | [051-separation-of-entry-points_fat-models](https://github.com/solid-process/rails-way-app/blob/051-separation-of-entry-points_fat-models/docs/01_REST_API_DOC.md#-table-of-contents-) |
32 | | 1504 / 95.63 | [060-domain-model_account-member-poro](https://github.com/solid-process/rails-way-app/blob/060-domain-model_account-member-poro/docs/01_REST_API_DOC.md#-table-of-contents-) |
33 | | 1519 / 95.68 | [061-domain-model_user-token-poro](https://github.com/solid-process/rails-way-app/blob/061-domain-model_user-token-poro/docs/01_REST_API_DOC.md#-table-of-contents-) |
34 | | 1526 / 95.78 | [062-domain-model_task-constants](https://github.com/solid-process/rails-way-app/blob/062-domain-model_task-constants/docs/01_REST_API_DOC.md#-table-of-contents-) |
35 | | 1563 / 95.77 | [063-domain-model_user-operations](https://github.com/solid-process/rails-way-app/blob/063-domain-model_user-operations/docs/01_REST_API_DOC.md#-table-of-contents-) |
36 | | 1613 / 95.81 | [070-orthogonal-models](https://github.com/solid-process/rails-way-app/blob/070-orthogonal-models/docs/01_REST_API_DOC.md#-table-of-contents-) |
37 |
38 | The following commands were used to generate the LOC and GRADE reports:
39 | - **LOC** (lines of code): `bin/rails stats`
40 | - **GRADE** (code quality): `bin/rails rubycritic`
41 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | > `MENU` **README** | [How to run locally](./docs/00_INSTALLATION.md) | [REST API doc](./docs/01_REST_API_DOC.md) | [Web app screenshots](./docs/02_WEB_APP_SCREENSHOTS.md) | [Branch descriptions](./docs/03_BRANCH_DESCRIPTIONS.md)
4 |
5 |
6 |
7 | # 🚆 Rails Way App
8 |
9 | _**Eighteen versions**_ (gradually implemented) of a Web and REST API app made with [Ruby on Rails](https://guides.rubyonrails.org/) that aims to get the most out of the `MVC`/`Rails Way`.
10 |
11 | ## 📚 Table of contents
12 |
13 | - [📢 Disclaimer](#-disclaimer)
14 | - [🙌 Repository branches](#-repository-branches)
15 | - [👋 About](#-about)
16 |
17 | ## 📢 Disclaimer
18 |
19 | [Ruby on Rails](https://rubyonrails.org/) is a highly productive MVC framework whose [primary value proposition is to be a one-person framework](https://www.youtube.com/watch?v=iqXjGiQ_D-A). In other words, to empower and make individuals as productive as entire teams.
20 |
21 | However, this proposal applies not only to individuals but also to giant teams. [Shopify](https://shopify.engineering/), for example, has thousands of developers working on a monolithic and modular application with millions of lines of code.
22 |
23 | **The main challenge of any medium to colossal system is to accommodate its complexity well**. As the code grows, we need to have the freedom and capacity to separate responsibilities in the best possible way.
24 |
25 | The project's main objective is to demonstrate different approaches to improving the design of a Rails application without compromising its conventions and structure.
26 |
27 | It is a `Web` and `REST API` app with over `4,000` lines of code (implementation + tests) and was implemented in **18 versions**. This is to gradually demonstrate the pros and cons of each approach. Enjoy! ✌️😊
28 |
29 |
30 |
31 | ## 🙌 Repository branches
32 |
33 | This repository has **eighteen** branches that represent the application's evolution.
34 |
35 | Every branch contains a `README.md` which explains the changes made in the codebase. However, you can access the documentation of all branches in the [`docs/03_BRANCH_DESCRIPTIONS.md`](./docs/03_BRANCH_DESCRIPTIONS.md) file.
36 |
37 | | LOC / GRADE | Branch |
38 | | ------------ | ------ |
39 | | 1326 / 89.23 | [010-one-controller-per-entity](https://github.com/solid-process/rails-way-app/blob/010-one-controller-per-entity?tab=readme-ov-file#-rails-way-app-) |
40 | | 1350 / 90.34 | [011-one-controller-per-entity_user-concerns](https://github.com/solid-process/rails-way-app/blob/011-one-controller-per-entity_user-concerns?tab=readme-ov-file#-rails-way-app-) |
41 | | 1342 / 91.34 | [020-multi-controllers-per-entity](https://github.com/solid-process/rails-way-app/blob/020-multi-controllers-per-entity?tab=readme-ov-file#-rails-way-app-) |
42 | | 1361 / 91.56 | [021-multi-controllers-per-entity_rest-actions-only](https://github.com/solid-process/rails-way-app/blob/021-multi-controllers-per-entity_rest-actions-only?tab=readme-ov-file#-rails-way-app-) |
43 | | 1361 / 91.56 | [030-resources-within-namespaces](https://github.com/solid-process/rails-way-app/blob/030-resources-within-namespaces?tab=readme-ov-file#-rails-way-app-) |
44 | | 1355 / 91.56 | [031-resources-within-namespaces_base-controllers](https://github.com/solid-process/rails-way-app/blob/031-resources-within-namespaces_base-controllers?tab=readme-ov-file#-rails-way-app-) |
45 | | 1355 / 91.56 | [032-resources-within-namespaces_partials-grouped-by-context](https://github.com/solid-process/rails-way-app/blob/032-resources-within-namespaces_partials-grouped-by-context?tab=readme-ov-file#-rails-way-app-) |
46 | | 1356 / 91.56 | [033-resources-within-namespaces_mailers-under-entity-context](https://github.com/solid-process/rails-way-app/blob/033-resources-within-namespaces_mailers-under-entity-context?tab=readme-ov-file#-rails-way-app-) |
47 | | 1356 / 91.56 | [034-resources-within-namespaces_nested-namespaces](https://github.com/solid-process/rails-way-app/blob/034-resources-within-namespaces_nested-namespaces?tab=readme-ov-file#-rails-way-app-) |
48 | | 1356 / 91.56 | [035-resources-within-namespaces_singular_resources](https://github.com/solid-process/rails-way-app/blob/035-resources-within-namespaces_singular_resources?tab=readme-ov-file#-rails-way-app-) |
49 | | 1359 / 91.56 | [040-models-within-namespaces](https://github.com/solid-process/rails-way-app/blob/040-models-within-namespaces?tab=readme-ov-file#-rails-way-app-) |
50 | | 1462 / 94.04 | [050-separation-of-entry-points](https://github.com/solid-process/rails-way-app/blob/050-separation-of-entry-points?tab=readme-ov-file#-rails-way-app-) |
51 | | 1456 / 95.56 | [051-separation-of-entry-points_fat-models](https://github.com/solid-process/rails-way-app/blob/051-separation-of-entry-points_fat-models?tab=readme-ov-file#-rails-way-app-) |
52 | | 1504 / 95.63 | [060-domain-model_account-member-poro](https://github.com/solid-process/rails-way-app/blob/060-domain-model_account-member-poro?tab=readme-ov-file#-rails-way-app-) |
53 | | 1519 / 95.68 | [061-domain-model_user-token-poro](https://github.com/solid-process/rails-way-app/blob/061-domain-model_user-token-poro?tab=readme-ov-file#-rails-way-app-) |
54 | | 1526 / 95.78 | [062-domain-model_task-constants](https://github.com/solid-process/rails-way-app/blob/062-domain-model_task-constants?tab=readme-ov-file#-rails-way-app-) |
55 | | 1563 / 95.77 | [063-domain-model_user-operations](https://github.com/solid-process/rails-way-app/blob/063-domain-model_user-operations?tab=readme-ov-file#-rails-way-app-) |
56 | | 1613 / 95.81 | [070-orthogonal-models](https://github.com/solid-process/rails-way-app/blob/070-orthogonal-models?tab=readme-ov-file#-rails-way-app-) |
57 |
58 | The following commands were used to generate the LOC and GRADE reports:
59 | - **LOC** (lines of code): `bin/rails stats`
60 | - **GRADE** (code quality): `bin/rails rubycritic`
61 |
62 |
63 |
64 | ## 👋 About
65 |
66 | [Rodrigo Serradura](https://rodrigoserradura.com/) created this project. He is the creator of Solid Process, among other similar projects, such as [solid-rails-app](https://github.com/solid-process/solid-rails-app), which consists of demonstrating (in `12 gradual versions`) how the implementation of processes as code (based on the concept of use cases) can add value to a Ruby and Rails codebase.
67 |
68 | In the Rails community, we have people at different stages of their careers and companies in various phases (validating ideas, refining, scaling products); the goal here is to help them on their journey. By sharing knowledge and practical references.
69 |
70 | Ruby and the Rails framework is excellent, and my mission here is to try to add value to such great tools (Ruby and Rails rocks!!! 🤘😎).
71 |
72 |
73 |
--------------------------------------------------------------------------------
/docs/03_BRANCH_DESCRIPTIONS.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | > `MENU` [README](../README.md) | [How to run locally](./00_INSTALLATION.md) | [REST API doc](./01_REST_API_DOC.md) | [Web app screenshots](./02_WEB_APP_SCREENSHOTS.md) | Branch descriptions
4 |
5 |
6 |
7 | # 🚆 Rails Way App
8 |
9 | This document presents the branches of the Rails Way App project.
10 |
11 | ## 📚 Table of contents
12 | - [010-one-controller-per-entity](#010-one-controller-per-entity)
13 | - [011-one-controller-per-entity\_user-concerns](#011-one-controller-per-entity_user-concerns)
14 | - [020-multi-controllers-per-entity](#020-multi-controllers-per-entity)
15 | - [021-multi-controllers-per-entity\_rest-actions-only](#021-multi-controllers-per-entity_rest-actions-only)
16 | - [030-resources-within-namespaces](#030-resources-within-namespaces)
17 | - [031-resources-within-namespaces\_base-controllers](#031-resources-within-namespaces_base-controllers)
18 | - [032-resources-within-namespaces\_partials-grouped-by-context](#032-resources-within-namespaces_partials-grouped-by-context)
19 | - [033-resources-within-namespaces\_mailers-under-entity-context](#033-resources-within-namespaces_mailers-under-entity-context)
20 | - [034-resources-within-namespaces\_nested-namespaces](#034-resources-within-namespaces_nested-namespaces)
21 | - [035-resources-within-namespaces\_singular\_resources](#035-resources-within-namespaces_singular_resources)
22 | - [040-models-within-namespaces](#040-models-within-namespaces)
23 | - [050-separation-of-entry-points](#050-separation-of-entry-points)
24 | - [051-separation-of-entry-points\_fat-models](#051-separation-of-entry-points_fat-models)
25 | - [060-domain-model\_account-member-poro](#060-domain-model_account-member-poro)
26 | - [061-domain-model\_user-token-poro](#061-domain-model_user-token-poro)
27 | - [062-domain-model\_task-constants](#062-domain-model_task-constants)
28 | - [063-domain-model\_user-operations](#063-domain-model_user-operations)
29 | - [070-orthogonal-models](#070-orthogonal-models)
30 |
31 | ---
32 |
33 | ### 010-one-controller-per-entity
34 |
35 | | Lines of Code | 1326 |
| Rubycritic Score | 89.23 |
| Lines of Code | 1350 |
| Rubycritic Score | 90.34 |
| Lines of Code | 1342 |
| Rubycritic Score | 91.34 |
| Lines of Code | 1361 |
| Rubycritic Score | 91.56 |
| Lines of Code | 1361 |
| Rubycritic Score | 91.56 |
| Before | 228 |After | 229 |
|---|---|
232 | 233 | app/controllers 234 | ├── concerns 235 | │ └── task_items_concern.rb 236 | ├── application_controller.rb 237 | ├── complete_task_items_controller.rb 238 | ├── incomplete_task_items_controller.rb 239 | ├── task_items_controller.rb 240 | ├── task_lists_controller.rb 241 | ├── user_passwords_controller.rb 242 | ├── user_profiles_controller.rb 243 | ├── user_registrations_controller.rb 244 | ├── user_sessions_controller.rb 245 | └── user_tokens_controller.rb246 | |
247 |
248 | 249 | app/controllers 250 | ├── concerns 251 | │ └── task_items_concern.rb 252 | ├── application_controller.rb 253 | ├── task 254 | │ ├── items 255 | │ │ ├── complete_controller.rb 256 | │ │ └── incomplete_controller.rb 257 | │ ├── items_controller.rb 258 | │ └── lists_controller.rb 259 | └── user 260 | ├── passwords_controller.rb 261 | ├── profiles_controller.rb 262 | ├── registrations_controller.rb 263 | ├── sessions_controller.rb 264 | └── tokens_controller.rb265 | |
266 |
| Before | 274 |After | 275 |
|---|---|
278 | 279 | /user_sessions 280 | /user_sessions/new 281 | /user_registrations 282 | /user_registrations/new 283 | /user_passwords 284 | /user_passwords/new 285 | /user_passwords/:id/edit 286 | /user_passwords/:id 287 | /user_profiles/edit 288 | /user_profiles 289 | /user_tokens/edit 290 | /user_tokens 291 | /task_lists/:task_list_id/task_items 292 | /task_lists/:task_list_id/task_items/new 293 | /task_lists/:task_list_id/task_items/:id/edit 294 | /task_lists/:task_list_id/task_items/:id 295 | /task_lists/:task_list_id/complete_task_items/:id 296 | /task_lists/:task_list_id/incomplete_task_items/:id 297 | /task_lists 298 | /task_lists/new 299 | /task_lists/:id/edit 300 | /task_lists/:id301 | |
302 |
303 | 304 | /user/sessions 305 | /user/sessions/new 306 | /user/registrations 307 | /user/registrations/new 308 | /user/passwords 309 | /user/passwords/new 310 | /user/passwords/:id/edit 311 | /user/passwords/:id 312 | /user/profiles/edit 313 | /user/profiles 314 | /user/tokens/edit 315 | /user/tokens 316 | /task/lists/:list_id/items 317 | /task/lists/:list_id/items/new 318 | /task/lists/:list_id/items/:id/edit 319 | /task/lists/:list_id/items/:id 320 | /task/lists/:list_id/items/complete/:id 321 | /task/lists/:list_id/items/incomplete/:id 322 | /task/lists 323 | /task/lists/new 324 | /task/lists/:id/edit 325 | /task/lists/:id326 | |
327 |
| Lines of Code | 1355 |
| Rubycritic Score | 91.56 |
| Lines of Code | 1355 |
| Rubycritic Score | 91.56 |
| Previous | 404 |Current | 405 |
|---|---|
408 | 409 | app/views 410 | ├── shared 411 | │ ├── settings 412 | │ │ └── _header.html.erb 413 | │ ├── tasks 414 | │ │ ├── _add_new.html.erb 415 | │ │ └── _header.html.erb 416 | │ └── users 417 | │ ├── _header.html.erb 418 | │ ├── _reset_password_link.html.erb 419 | │ ├── _sign_in_link.html.erb 420 | │ ├── _sign_up_link.html.erb 421 | │ └── user_token.json.jbuilder 422 | └── task 423 | ├── items 424 | │ ├── _delete_action.html.erb 425 | │ ├── _edit_action.html.erb 426 | │ ├── _toggle_status_action.html.erb 427 | └── lists 428 | ├── _delete_action.html.erb 429 | ├── _edit_action.html.erb 430 | └── _view_items_action.html.erb431 | |
432 |
433 | 434 | app/views 435 | ├── task 436 | │ ├── items 437 | │ │ ├── actions 438 | │ │ │ ├── _delete.html.erb 439 | │ │ │ ├── _edit.html.erb 440 | │ │ │ └── _toggle_status.html.erb 441 | │ ├── lists 442 | │ │ ├── actions 443 | │ │ │ ├── _delete.html.erb 444 | │ │ │ ├── _edit.html.erb 445 | │ │ │ └── _view_items.html.erb 446 | │ └── shared 447 | │ ├── _add_new.html.erb 448 | │ └── _header.html.erb 449 | └── user 450 | └── shared 451 | ├── _header.html.erb 452 | ├── links 453 | │ ├── _reset_password.html.erb 454 | │ ├── _sign_in.html.erb 455 | │ └── _sign_up.html.erb 456 | └── settings 457 | └── _header.html.erb458 | |
459 |
| Lines of Code | 1356 |
| Rubycritic Score | 91.56 |
| Lines of Code | 1356 |
| Rubycritic Score | 91.56 |
| Before | 528 |After | 529 |
|---|---|
532 | 533 | app/views/user 534 | ├── mailers/ 535 | ├── passwords/ 536 | ├── profiles/ 537 | ├── registrations/ 538 | ├── sessions/ 539 | ├── shared 540 | │ ├── links 541 | │ └── settings 542 | └── tokens 543 | app/controllers/user 544 | ├── passwords_controller.rb 545 | ├── profiles_controller.rb 546 | ├── registrations_controller.rb 547 | ├── sessions_controller.rb 548 | └── tokens_controller.rb549 | |
550 |
551 | 552 | app/views/user 553 | ├── mailers/ 554 | ├── passwords/ 555 | ├── registrations/ 556 | ├── sessions/ 557 | ├── settings 558 | │ ├── profiles/ 559 | │ └── tokens/ 560 | └── shared 561 | └── links/ 562 | app/controllers/user 563 | ├── passwords_controller.rb 564 | ├── registrations_controller.rb 565 | ├── sessions_controller.rb 566 | └── settings 567 | ├── profiles_controller.rb 568 | └── tokens_controller.rb569 | |
570 |
| Lines of Code | 1356 |
| Rubycritic Score | 91.56 |
| Previous | 601 |
602 | 603 | Prefix Verb URI Pattern Controller#Action 604 | user_session DELETE /user/session(.:format) user/sessions#destroy 605 | user_registration DELETE /user/registration(.:format) user/registrations#destroy606 | |
607 |
| Current | 610 |
611 | 612 | Prefix Verb URI Pattern Controller#Action 613 | user_sessions DELETE /user/sessions(.:format) user/sessions#destroy 614 | user_registrations DELETE /user/registrations(.:format) user/registrations#destroy615 | |
616 |
| Lines of Code | 1359 |
| Rubycritic Score | 91.56 |
| Before | 656 |After | 657 |
|---|---|
660 | 661 | app/models 662 | ├── account.rb 663 | ├── application_record.rb 664 | ├── current.rb 665 | ├── membership.rb 666 | ├── task_item.rb 667 | ├── task_list.rb 668 | ├── user.rb 669 | └── user_token.rb670 | |
671 |
672 | 673 | app/models 674 | ├── account.rb 675 | ├── application_record.rb 676 | ├── concerns 677 | ├── current.rb 678 | ├── membership.rb 679 | ├── task 680 | │ ├── item.rb 681 | │ └── list.rb 682 | ├── user 683 | │ └── token.rb 684 | └── user.rb685 | |
686 |
| Lines of Code | 1462 |
| Rubycritic Score | 94.04 |
| Web | 727 |API::V1 | 728 |
|---|---|
731 | 732 | app/controllers/web 733 | ├── base_controller.rb 734 | ├── task 735 | │ ├── items 736 | │ │ ├── base_controller.rb 737 | │ │ ├── complete_controller.rb 738 | │ │ └── incomplete_controller.rb 739 | │ ├── items_controller.rb 740 | │ └── lists_controller.rb 741 | └── user 742 | ├── passwords_controller.rb 743 | ├── registrations_controller.rb 744 | ├── sessions_controller.rb 745 | └── settings 746 | ├── profiles_controller.rb 747 | └── tokens_controller.rb748 | |
749 |
750 | 751 | app/controllers/api 752 | └── v1 753 | ├── base_controller.rb 754 | ├── task 755 | │ ├── items 756 | │ │ ├── base_controller.rb 757 | │ │ ├── complete_controller.rb 758 | │ │ └── incomplete_controller.rb 759 | │ ├── items_controller.rb 760 | │ └── lists_controller.rb 761 | └── user 762 | ├── passwords 763 | │ └── resettings_controller.rb 764 | ├── passwords_controller.rb 765 | ├── registrations_controller.rb 766 | ├── sessions_controller.rb 767 | └── tokens_controller.rb768 | |
769 |
| Web | 777 |API::V1 | 778 |
|---|---|
781 | 782 | app/views/web 783 | ├── task 784 | │ ├── items 785 | │ │ ├── _form.html.erb 786 | │ │ ├── actions 787 | │ │ │ ├── _delete.html.erb 788 | │ │ │ ├── _edit.html.erb 789 | │ │ │ └── _toggle_status.html.erb 790 | │ │ ├── edit.html.erb 791 | │ │ ├── index.html.erb 792 | │ │ ├── new.html.erb 793 | │ │ └── show.html.erb 794 | │ ├── lists 795 | │ │ ├── _form.html.erb 796 | │ │ ├── actions 797 | │ │ │ ├── _delete.html.erb 798 | │ │ │ ├── _edit.html.erb 799 | │ │ │ └── _view_items.html.erb 800 | │ │ ├── edit.html.erb 801 | │ │ ├── index.html.erb 802 | │ │ ├── new.html.erb 803 | │ │ └── show.html.erb 804 | │ └── shared 805 | │ ├── _add_new.html.erb 806 | │ └── _header.html.erb 807 | └── user 808 | ├── passwords 809 | │ ├── edit.html.erb 810 | │ └── new.html.erb 811 | ├── registrations 812 | │ └── new.html.erb 813 | ├── sessions 814 | │ └── new.html.erb 815 | ├── settings 816 | │ ├── _header.html.erb 817 | │ ├── profiles 818 | │ │ └── edit.html.erb 819 | │ └── tokens 820 | │ └── edit.html.erb 821 | └── shared 822 | ├── _header.html.erb 823 | └── links 824 | ├── _reset_password.html.erb 825 | ├── _sign_in.html.erb 826 | └── _sign_up.html.erb827 | |
828 |
829 | 830 | app/views/api 831 | └── v1 832 | ├── errors 833 | │ ├── _response.json.jbuilder 834 | │ ├── from_model.json.jbuilder 835 | │ ├── response.json.jbuilder 836 | │ └── unauthorized.json.jbuilder 837 | ├── task 838 | │ ├── items 839 | │ │ ├── _record.json.jbuilder 840 | │ │ ├── index.json.jbuilder 841 | │ │ └── show.json.jbuilder 842 | │ └── lists 843 | │ ├── _record.json.jbuilder 844 | │ ├── index.json.jbuilder 845 | │ └── show.json.jbuilder 846 | └── user 847 | └── token.json.jbuilder848 | |
849 |
| Lines of Code | 1456 |
| Rubycritic Score | 95.56 |
| Lines of Code | 1504 |
| Rubycritic Score | 95.63 |
| Lines of Code | 1519 |
| Rubycritic Score | 95.68 |
| Lines of Code | 1526 |
| Rubycritic Score | 95.78 |
| Branch | 063-domain-model_user-operations |
| Lines of Code | 1563 |
| Rubycritic Score | 95.77 |
| Lines of Code | 1613 |
| Rubycritic Score | 95.81 |
| Account | 1050 |User | 1051 |
|---|---|
1054 | 1055 | app/models 1056 | ├── account 1057 | │ ├── member 1058 | │ │ ├── authorization.rb 1059 | │ │ └── entity.rb 1060 | │ ├── member.rb 1061 | │ ├── membership.rb 1062 | │ ├── owner 1063 | │ │ ├── creation.rb 1064 | │ │ └── deletion.rb 1065 | │ ├── task 1066 | │ │ ├── item.rb 1067 | │ │ └── list.rb 1068 | │ └── task.rb 1069 | └── account.rb1070 | |
1071 |
1072 | 1073 | app/models 1074 | ├── user 1075 | │ ├── account_deletion.rb 1076 | │ ├── password_resetting.rb 1077 | │ ├── registration.rb 1078 | │ ├── token 1079 | │ │ └── entity.rb 1080 | │ └── token.rb 1081 | └── user.rb1082 | |
1083 |