{"id":13631688,"url":"https://github.com/fastruby/rails_stats","last_synced_at":"2026-02-01T08:00:48.076Z","repository":{"id":22804843,"uuid":"26151443","full_name":"fastruby/rails_stats","owner":"fastruby","description":"external/replacement version of rake stats","archived":false,"fork":false,"pushed_at":"2025-08-22T13:56:12.000Z","size":130,"stargazers_count":125,"open_issues_count":9,"forks_count":14,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-13T08:19:57.518Z","etag":null,"topics":["coverage","hacktoberfest","rails","ruby","stats"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fastruby.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-11-04T03:40:35.000Z","updated_at":"2025-12-26T14:21:39.000Z","dependencies_parsed_at":"2025-08-08T09:11:02.617Z","dependency_job_id":null,"html_url":"https://github.com/fastruby/rails_stats","commit_stats":null,"previous_names":["bleonard/rails_stats"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/fastruby/rails_stats","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastruby%2Frails_stats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastruby%2Frails_stats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastruby%2Frails_stats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastruby%2Frails_stats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fastruby","download_url":"https://codeload.github.com/fastruby/rails_stats/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastruby%2Frails_stats/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28973033,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T06:46:42.625Z","status":"ssl_error","status_checked_at":"2026-02-01T06:44:56.173Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coverage","hacktoberfest","rails","ruby","stats"],"created_at":"2024-08-01T22:02:34.467Z","updated_at":"2026-02-01T08:00:48.068Z","avatar_url":"https://github.com/fastruby.png","language":"Ruby","readme":"# RailsStats\n\nSee stuff about a Rails app.\n\nThere were a few things missing to the included `rake stats`\n\nRailsStats mainly adds the ability to be run from outside the project in question. This can be helpful if the app you are interested in can not be booted for some reason.\n\n### Run it outside Rails project\n\nYou will need a `Rakefile` in the directory where you call `rake` and you will\nneed to require `rails_stats`:\n\n```ruby\n# Rakefile\nrequire \"rails_stats\"\n```\n\nThen you can call it:\n\n```bash\n$ rake stats\\[/path/to/app/\\]\n\nDirectory: /path/to/app/\n\n+-----------------------|------------|----------------+\n|                  Name | Total Deps | 1st Level Deps |\n+-----------------------|------------|----------------+\n|     simplecov-console | 7          | 3              |\n|               codecov | 5          | 2              |\n|           rails_stats | 4          | 2              |\n|             simplecov | 3          | 3              |\n|       minitest-around | 1          | 1              |\n|               bundler | 0          | 0              |\n|                byebug | 0          | 0              |\n|              minitest | 0          | 0              |\n| minitest-spec-context | 0          | 0              |\n+-----------------------|------------|----------------+\n\n      Declared Gems   9\n         Total Gems   18\n  Unpinned Versions   8\n        Github Refs   0\n\n+----------------------+---------+---------+---------+---------+---------+-----+-------+\n| Name                 | Files   | Lines   |     LOC | Classes | Methods | M/C | LOC/M |\n+----------------------+---------+---------+---------+---------+---------+-----+-------+\n| Channels             |       2 |       8 |       8 |       2 |       0 |   0 |     0 |\n| Configuration        |      19 |     417 |     111 |       1 |       0 |   0 |     0 |\n| Controllers          |       1 |       7 |       6 |       1 |       1 |   1 |     4 |\n| Helpers              |       1 |       3 |       3 |       0 |       0 |   0 |     0 |\n| Javascripts          |       3 |      27 |       7 |       0 |       0 |   0 |     0 |\n| Jobs                 |       1 |       7 |       2 |       1 |       0 |   0 |     0 |\n| Libraries            |       1 |       1 |       1 |       0 |       0 |   0 |     0 |\n| Mailers              |       1 |       4 |       4 |       1 |       0 |   0 |     0 |\n| Model Tests          |       2 |       5 |       4 |       2 |       0 |   0 |     0 |\n| Models               |       1 |       3 |       3 |       1 |       0 |   0 |     0 |\n| Spec Support         |       1 |       1 |       1 |       0 |       0 |   0 |     0 |\n| Test Support         |       1 |       1 |       1 |       0 |       0 |   0 |     0 |\n+----------------------+---------+---------+---------+---------+---------+-----+-------+\n| Code                 |      30 |     477 |     145 |       7 |       1 |   0 |   143 |\n| Tests                |       4 |       7 |       6 |       2 |       0 |   0 |     0 |\n| Total                |      34 |     484 |     151 |       9 |       1 |   0 |   149 |\n+----------------------+---------+---------+---------+---------+---------+-----+-------+\n  Code LOC: 145     Test LOC: 6     Code to Test Ratio: 1:0.0  Files: 34\n```\n\n### Run it on many Rails engines\n\n```bash\n$ for dir in /path/to/many/engines/*/; do bundle exec rake stats[$dir]; done\n```\n\n### Within your Rails project\n\nYou can also include it within your Rails application to _replace_ the default `rake stats` implementation.\n\nJust add rails_stats to your Gemfile.\nDepending on your setup, you might need to `require rails_stats` in your Rakefile.\n\nThen you'll be able to just run:\n\n```bash\n$ bundle exec rake stats\n```\n\n### Things it knows about\n\nRailsStats adds more coverage than the default.\n\n* Any concepts you've added within an `app` directory\n* Configuration files\n* Library files\n* Gems that you've created and embedded in the project\n* Engines and their code\n* RSpec/Unit/Cucumber Tests\n\n### Example output\n\nHere are some open source Rails projects and their output.\n\n```bash\n\n$ bundle exec rake stats[/users/brian/examples/redmine/]\n\n+-----------------------|------------|----------------+\n|                  Name | Total Deps | 1st Level Deps |\n+-----------------------|------------|----------------+\n|                 rails | 62         | 13             |\n|          roadie-rails | 45         | 2              |\n| actionpack-xml_parser | 41         | 2              |\n|       importmap-rails | 41         | 3              |\n|             propshaft | 41         | 4              |\n|        stimulus-rails | 41         | 1              |\n|         rubocop-rails | 28         | 5              |\n|   rubocop-performance | 15         | 3              |\n|         html-pipeline | 14         | 2              |\n|     rails-dom-testing | 14         | 3              |\n|               rubocop | 14         | 10             |\n|                bullet | 13         | 2              |\n|              capybara | 10         | 8              |\n|                 debug | 10         | 2              |\n|                  mail | 7          | 4              |\n|    selenium-webdriver | 5          | 5              |\n|           rails_stats | 4          | 2              |\n|            svg_sprite | 4          | 3              |\n|          bundle-audit | 3          | 1              |\n|                listen | 3          | 2              |\n|              net-imap | 3          | 2              |\n|              sanitize | 3          | 2              |\n|             simplecov | 3          | 3              |\n|           mini_magick | 2          | 2              |\n|               net-pop | 2          | 1              |\n|              net-smtp | 2          | 1              |\n|                 rbpdf | 2          | 2              |\n|               rqrcode | 2          | 2              |\n|           addressable | 1          | 1              |\n|                  i18n | 1          | 1              |\n|                 mocha | 1          | 1              |\n|              nokogiri | 1          | 1              |\n|                  puma | 1          | 1              |\n|          commonmarker | 0          | 0              |\n|                   csv | 0          | 0              |\n|                   ffi | 0          | 0              |\n|                marcel | 0          | 0              |\n|             mini_mime | 0          | 0              |\n|              net-ldap | 0          | 0              |\n|                  rack | 0          | 0              |\n|                  rotp | 0          | 0              |\n|                 rouge | 0          | 0              |\n|               rubyzip | 0          | 0              |\n|           tzinfo-data | 0          | 0              |\n|                  yard | 0          | 0              |\n+-----------------------|------------|----------------+\n\n      Declared Gems   45\n         Total Gems   144\n  Unpinned Versions   19\n        Github Refs   0\n\n+----------------------+---------+---------+---------+---------+---------+-----+-------+\n| Name                 | Files   | Lines   |     LOC | Classes | Methods | M/C | LOC/M |\n+----------------------+---------+---------+---------+---------+---------+-----+-------+\n| Configuration        |      17 |    1090 |     666 |       7 |      14 |   2 |    45 |\n| Controllers          |      57 |    9042 |    6746 |      60 |     554 |   9 |    10 |\n| Functional Tests     |      65 |   35754 |   30234 |      65 |    2104 |  32 |    12 |\n| Helper Tests         |      27 |    5369 |    4090 |      28 |     302 |  10 |    11 |\n| Helpers              |      49 |    7068 |    5168 |       1 |     413 | 413 |    10 |\n| Integration Tests    |      98 |   10349 |    7237 |     104 |     297 |   2 |    22 |\n| Javascripts          |     117 |    6930 |    5362 |       0 |     446 |   0 |    10 |\n| Job Tests            |       2 |     142 |      94 |       2 |       2 |   1 |    45 |\n| Jobs                 |       3 |     115 |      90 |       3 |       9 |   3 |     8 |\n| Libraries            |     134 |   18922 |   13178 |     128 |    1167 |   9 |     9 |\n| Models               |      88 |   20110 |   14528 |     110 |    1532 |  13 |     7 |\n| Other Tests          |      19 |    2339 |    1525 |      19 |      98 |   5 |    13 |\n| Test Support         |      16 |    1637 |    1229 |      20 |     142 |   7 |     6 |\n| Unit Tests           |     147 |   37173 |   28642 |     161 |    2778 |  17 |     8 |\n| Validators           |       1 |      29 |      10 |       1 |       1 |   1 |     8 |\n+----------------------+---------+---------+---------+---------+---------+-----+-------+\n| Code                 |     466 |   63306 |   45748 |     310 |    4136 |  13 |     9 |\n| Tests                |     374 |   92763 |   73051 |     399 |    5723 |  14 |    10 |\n| Total                |     840 |  156069 |  118799 |     709 |    9859 |  13 |    10 |\n+----------------------+---------+---------+---------+---------+---------+-----+-------+\n  Code LOC: 45748     Test LOC: 73051     Code to Test Ratio: 1:1.6  Files: 840\n\n```\n\n#### JSON Format\n\nIf you want to export the details using JSON, you can use this command:\n\n```\n$ rake stats\\[test/dummy,json\\]\n\nDirectory: /Users/etagwerker/Projects/redmine\n\n[{\"summary\":{\"declared\":45,\"unpinned\":19,\"total\":144,\"github\":0},\"gems\":[{\"name\":\"rails\",\"total_dependencies\":62,\"first_level_dependencies\":13,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"actioncable (= 7.2.2.1)\",\"actionmailbox (= 7.2.2.1)\",\"actionmailer (= 7.2.2.1)\",\"actionpack (= 7.2.2.1)\",\"actiontext (= 7.2.2.1)\",\"actionview (= 7.2.2.1)\",\"activejob (= 7.2.2.1)\",\"activemodel (= 7.2.2.1)\",\"activerecord (= 7.2.2.1)\",\"activestorage (= 7.2.2.1)\",\"activesupport (= 7.2.2.1)\",\"bundler (\u003e= 1.15.0)\",\"railties (= 7.2.2.1)\",\"nio4r (~\u003e 2.0)\",\"websocket-driver (\u003e= 0.6.1)\",\"zeitwerk (~\u003e 2.6)\",\"nokogiri (\u003e= 1.8.5)\",\"racc (\u003e= 0)\",\"rack (\u003e= 2.2.4, \u003c 3.2)\",\"rack-session (\u003e= 1.0.1)\",\"rack-test (\u003e= 0.6.3)\",\"rails-dom-testing (~\u003e 2.2)\",\"rails-html-sanitizer (~\u003e 1.6)\",\"useragent (~\u003e 0.16)\",\"builder (~\u003e 3.1)\",\"erubi (~\u003e 1.11)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"minitest (\u003e= 5.1)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\",\"loofah (~\u003e 2.21)\",\"crass (~\u003e 1.0.2)\",\"websocket-extensions (\u003e= 0.1.0)\",\"mail (\u003e= 2.8.0)\",\"globalid (\u003e= 0.3.6)\",\"timeout (\u003e= 0.4.0)\",\"marcel (~\u003e 1.0)\",\"mini_mime (\u003e= 0.1.1)\",\"net-imap (\u003e= 0)\",\"net-pop (\u003e= 0)\",\"net-smtp (\u003e= 0)\",\"date (\u003e= 0)\",\"net-protocol (\u003e= 0)\",\"irb (~\u003e 1.13)\",\"rackup (\u003e= 1.0.0)\",\"rake (\u003e= 12.2)\",\"thor (~\u003e 1.0, \u003e= 1.2.2)\",\"pp (\u003e= 0.6.0)\",\"rdoc (\u003e= 4.0.0)\",\"reline (\u003e= 0.4.2)\",\"prettyprint (\u003e= 0)\",\"erb (\u003e= 0)\",\"psych (\u003e= 4.0.0)\",\"stringio (\u003e= 0)\",\"io-console (~\u003e 0.5)\"]},{\"name\":\"roadie-rails\",\"total_dependencies\":45,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"railties (\u003e= 5.1, \u003c 8.1)\",\"roadie (~\u003e 5.0)\",\"actionpack (= 7.2.2.1)\",\"activesupport (= 7.2.2.1)\",\"irb (~\u003e 1.13)\",\"rackup (\u003e= 1.0.0)\",\"rake (\u003e= 12.2)\",\"thor (~\u003e 1.0, \u003e= 1.2.2)\",\"zeitwerk (~\u003e 2.6)\",\"actionview (= 7.2.2.1)\",\"nokogiri (\u003e= 1.8.5)\",\"racc (\u003e= 0)\",\"rack (\u003e= 2.2.4, \u003c 3.2)\",\"rack-session (\u003e= 1.0.1)\",\"rack-test (\u003e= 0.6.3)\",\"rails-dom-testing (~\u003e 2.2)\",\"rails-html-sanitizer (~\u003e 1.6)\",\"useragent (~\u003e 0.16)\",\"builder (~\u003e 3.1)\",\"erubi (~\u003e 1.11)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"minitest (\u003e= 5.1)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\",\"loofah (~\u003e 2.21)\",\"crass (~\u003e 1.0.2)\",\"pp (\u003e= 0.6.0)\",\"rdoc (\u003e= 4.0.0)\",\"reline (\u003e= 0.4.2)\",\"prettyprint (\u003e= 0)\",\"erb (\u003e= 0)\",\"psych (\u003e= 4.0.0)\",\"date (\u003e= 0)\",\"stringio (\u003e= 0)\",\"io-console (~\u003e 0.5)\",\"css_parser (~\u003e 1.4)\",\"addressable (\u003e= 0)\",\"public_suffix (\u003e= 2.0.2, \u003c 7.0)\"]},{\"name\":\"actionpack-xml_parser\",\"total_dependencies\":41,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"actionpack (\u003e= 5.0)\",\"railties (\u003e= 5.0)\",\"actionview (= 7.2.2.1)\",\"activesupport (= 7.2.2.1)\",\"nokogiri (\u003e= 1.8.5)\",\"racc (\u003e= 0)\",\"rack (\u003e= 2.2.4, \u003c 3.2)\",\"rack-session (\u003e= 1.0.1)\",\"rack-test (\u003e= 0.6.3)\",\"rails-dom-testing (~\u003e 2.2)\",\"rails-html-sanitizer (~\u003e 1.6)\",\"useragent (~\u003e 0.16)\",\"builder (~\u003e 3.1)\",\"erubi (~\u003e 1.11)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"minitest (\u003e= 5.1)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\",\"loofah (~\u003e 2.21)\",\"crass (~\u003e 1.0.2)\",\"irb (~\u003e 1.13)\",\"rackup (\u003e= 1.0.0)\",\"rake (\u003e= 12.2)\",\"thor (~\u003e 1.0, \u003e= 1.2.2)\",\"zeitwerk (~\u003e 2.6)\",\"pp (\u003e= 0.6.0)\",\"rdoc (\u003e= 4.0.0)\",\"reline (\u003e= 0.4.2)\",\"prettyprint (\u003e= 0)\",\"erb (\u003e= 0)\",\"psych (\u003e= 4.0.0)\",\"date (\u003e= 0)\",\"stringio (\u003e= 0)\",\"io-console (~\u003e 0.5)\"]},{\"name\":\"importmap-rails\",\"total_dependencies\":41,\"first_level_dependencies\":3,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"actionpack (\u003e= 6.0.0)\",\"activesupport (\u003e= 6.0.0)\",\"railties (\u003e= 6.0.0)\",\"actionview (= 7.2.2.1)\",\"nokogiri (\u003e= 1.8.5)\",\"racc (\u003e= 0)\",\"rack (\u003e= 2.2.4, \u003c 3.2)\",\"rack-session (\u003e= 1.0.1)\",\"rack-test (\u003e= 0.6.3)\",\"rails-dom-testing (~\u003e 2.2)\",\"rails-html-sanitizer (~\u003e 1.6)\",\"useragent (~\u003e 0.16)\",\"builder (~\u003e 3.1)\",\"erubi (~\u003e 1.11)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"minitest (\u003e= 5.1)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\",\"loofah (~\u003e 2.21)\",\"crass (~\u003e 1.0.2)\",\"irb (~\u003e 1.13)\",\"rackup (\u003e= 1.0.0)\",\"rake (\u003e= 12.2)\",\"thor (~\u003e 1.0, \u003e= 1.2.2)\",\"zeitwerk (~\u003e 2.6)\",\"pp (\u003e= 0.6.0)\",\"rdoc (\u003e= 4.0.0)\",\"reline (\u003e= 0.4.2)\",\"prettyprint (\u003e= 0)\",\"erb (\u003e= 0)\",\"psych (\u003e= 4.0.0)\",\"date (\u003e= 0)\",\"stringio (\u003e= 0)\",\"io-console (~\u003e 0.5)\"]},{\"name\":\"propshaft\",\"total_dependencies\":41,\"first_level_dependencies\":4,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"actionpack (\u003e= 7.0.0)\",\"activesupport (\u003e= 7.0.0)\",\"rack (\u003e= 0)\",\"railties (\u003e= 7.0.0)\",\"actionview (= 7.2.2.1)\",\"nokogiri (\u003e= 1.8.5)\",\"racc (\u003e= 0)\",\"rack-session (\u003e= 1.0.1)\",\"rack-test (\u003e= 0.6.3)\",\"rails-dom-testing (~\u003e 2.2)\",\"rails-html-sanitizer (~\u003e 1.6)\",\"useragent (~\u003e 0.16)\",\"builder (~\u003e 3.1)\",\"erubi (~\u003e 1.11)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"minitest (\u003e= 5.1)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\",\"loofah (~\u003e 2.21)\",\"crass (~\u003e 1.0.2)\",\"irb (~\u003e 1.13)\",\"rackup (\u003e= 1.0.0)\",\"rake (\u003e= 12.2)\",\"thor (~\u003e 1.0, \u003e= 1.2.2)\",\"zeitwerk (~\u003e 2.6)\",\"pp (\u003e= 0.6.0)\",\"rdoc (\u003e= 4.0.0)\",\"reline (\u003e= 0.4.2)\",\"prettyprint (\u003e= 0)\",\"erb (\u003e= 0)\",\"psych (\u003e= 4.0.0)\",\"date (\u003e= 0)\",\"stringio (\u003e= 0)\",\"io-console (~\u003e 0.5)\"]},{\"name\":\"stimulus-rails\",\"total_dependencies\":41,\"first_level_dependencies\":1,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"railties (\u003e= 6.0.0)\",\"actionpack (= 7.2.2.1)\",\"activesupport (= 7.2.2.1)\",\"irb (~\u003e 1.13)\",\"rackup (\u003e= 1.0.0)\",\"rake (\u003e= 12.2)\",\"thor (~\u003e 1.0, \u003e= 1.2.2)\",\"zeitwerk (~\u003e 2.6)\",\"actionview (= 7.2.2.1)\",\"nokogiri (\u003e= 1.8.5)\",\"racc (\u003e= 0)\",\"rack (\u003e= 2.2.4, \u003c 3.2)\",\"rack-session (\u003e= 1.0.1)\",\"rack-test (\u003e= 0.6.3)\",\"rails-dom-testing (~\u003e 2.2)\",\"rails-html-sanitizer (~\u003e 1.6)\",\"useragent (~\u003e 0.16)\",\"builder (~\u003e 3.1)\",\"erubi (~\u003e 1.11)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"minitest (\u003e= 5.1)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\",\"loofah (~\u003e 2.21)\",\"crass (~\u003e 1.0.2)\",\"pp (\u003e= 0.6.0)\",\"rdoc (\u003e= 4.0.0)\",\"reline (\u003e= 0.4.2)\",\"prettyprint (\u003e= 0)\",\"erb (\u003e= 0)\",\"psych (\u003e= 4.0.0)\",\"date (\u003e= 0)\",\"stringio (\u003e= 0)\",\"io-console (~\u003e 0.5)\"]},{\"name\":\"rubocop-rails\",\"total_dependencies\":28,\"first_level_dependencies\":5,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"activesupport (\u003e= 4.2.0)\",\"lint_roller (~\u003e 1.1)\",\"rack (\u003e= 1.1)\",\"rubocop (\u003e= 1.75.0, \u003c 2.0)\",\"rubocop-ast (\u003e= 1.38.0, \u003c 2.0)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"minitest (\u003e= 5.1)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\",\"json (~\u003e 2.3)\",\"language_server-protocol (~\u003e 3.17.0.2)\",\"parallel (~\u003e 1.10)\",\"parser (\u003e= 3.3.0.2)\",\"rainbow (\u003e= 2.2.2, \u003c 4.0)\",\"regexp_parser (\u003e= 2.9.3, \u003c 3.0)\",\"ruby-progressbar (~\u003e 1.7)\",\"unicode-display_width (\u003e= 2.4.0, \u003c 4.0)\",\"ast (~\u003e 2.4.1)\",\"racc (\u003e= 0)\",\"prism (~\u003e 1.4)\",\"unicode-emoji (~\u003e 4.0, \u003e= 4.0.4)\"]},{\"name\":\"rubocop-performance\",\"total_dependencies\":15,\"first_level_dependencies\":3,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"lint_roller (~\u003e 1.1)\",\"rubocop (\u003e= 1.75.0, \u003c 2.0)\",\"rubocop-ast (\u003e= 1.38.0, \u003c 2.0)\",\"json (~\u003e 2.3)\",\"language_server-protocol (~\u003e 3.17.0.2)\",\"parallel (~\u003e 1.10)\",\"parser (\u003e= 3.3.0.2)\",\"rainbow (\u003e= 2.2.2, \u003c 4.0)\",\"regexp_parser (\u003e= 2.9.3, \u003c 3.0)\",\"ruby-progressbar (~\u003e 1.7)\",\"unicode-display_width (\u003e= 2.4.0, \u003c 4.0)\",\"ast (~\u003e 2.4.1)\",\"racc (\u003e= 0)\",\"prism (~\u003e 1.4)\",\"unicode-emoji (~\u003e 4.0, \u003e= 4.0.4)\"]},{\"name\":\"html-pipeline\",\"total_dependencies\":14,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"activesupport (\u003e= 2)\",\"nokogiri (\u003e= 1.4)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"minitest (\u003e= 5.1)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\",\"racc (~\u003e 1.4)\"]},{\"name\":\"rails-dom-testing\",\"total_dependencies\":14,\"first_level_dependencies\":3,\"top_level_dependencies\":{\"actioncable\":\"actioncable (7.2.2.1)\",\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actionmailer\":\"actionmailer (7.2.2.1)\",\"actionpack\":\"actionpack (7.2.2.1)\",\"actionpack-xml_parser\":\"actionpack-xml_parser (2.0.1)\",\"actiontext\":\"actiontext (7.2.2.1)\",\"actionview\":\"actionview (7.2.2.1)\",\"activestorage\":\"activestorage (7.2.2.1)\",\"importmap-rails\":\"importmap-rails (2.1.0)\",\"propshaft\":\"propshaft (1.1.0)\",\"rails\":\"rails (7.2.2.1)\",\"railties\":\"railties (7.2.2.1)\",\"roadie-rails\":\"roadie-rails (3.3.0)\",\"stimulus-rails\":\"stimulus-rails (1.3.4)\"},\"transitive_dependencies\":[\"activesupport (\u003e= 5.0.0)\",\"minitest (\u003e= 0)\",\"nokogiri (\u003e= 1.6)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\",\"racc (~\u003e 1.4)\"]},{\"name\":\"rubocop\",\"total_dependencies\":14,\"first_level_dependencies\":10,\"top_level_dependencies\":{\"rubocop-performance\":\"rubocop-performance (1.25.0)\",\"rubocop-rails\":\"rubocop-rails (2.31.0)\"},\"transitive_dependencies\":[\"json (~\u003e 2.3)\",\"language_server-protocol (~\u003e 3.17.0.2)\",\"lint_roller (~\u003e 1.1.0)\",\"parallel (~\u003e 1.10)\",\"parser (\u003e= 3.3.0.2)\",\"rainbow (\u003e= 2.2.2, \u003c 4.0)\",\"regexp_parser (\u003e= 2.9.3, \u003c 3.0)\",\"rubocop-ast (\u003e= 1.44.0, \u003c 2.0)\",\"ruby-progressbar (~\u003e 1.7)\",\"unicode-display_width (\u003e= 2.4.0, \u003c 4.0)\",\"ast (~\u003e 2.4.1)\",\"racc (\u003e= 0)\",\"prism (~\u003e 1.4)\",\"unicode-emoji (~\u003e 4.0, \u003e= 4.0.4)\"]},{\"name\":\"bullet\",\"total_dependencies\":13,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"activesupport (\u003e= 3.0.0)\",\"uniform_notifier (~\u003e 1.11)\",\"base64 (\u003e= 0)\",\"benchmark (\u003e= 0.3)\",\"bigdecimal (\u003e= 0)\",\"concurrent-ruby (~\u003e 1.0, \u003e= 1.3.1)\",\"connection_pool (\u003e= 2.2.5)\",\"drb (\u003e= 0)\",\"i18n (\u003e= 1.6, \u003c 2)\",\"logger (\u003e= 1.4.2)\",\"minitest (\u003e= 5.1)\",\"securerandom (\u003e= 0.3)\",\"tzinfo (~\u003e 2.0, \u003e= 2.0.5)\"]},{\"name\":\"capybara\",\"total_dependencies\":10,\"first_level_dependencies\":8,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"addressable (\u003e= 0)\",\"matrix (\u003e= 0)\",\"mini_mime (\u003e= 0.1.3)\",\"nokogiri (~\u003e 1.11)\",\"rack (\u003e= 1.6.0)\",\"rack-test (\u003e= 0.6.3)\",\"regexp_parser (\u003e= 1.5, \u003c 3.0)\",\"xpath (~\u003e 3.2)\",\"public_suffix (\u003e= 2.0.2, \u003c 7.0)\",\"racc (~\u003e 1.4)\"]},{\"name\":\"debug\",\"total_dependencies\":10,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"irb (~\u003e 1.10)\",\"reline (\u003e= 0.3.8)\",\"pp (\u003e= 0.6.0)\",\"rdoc (\u003e= 4.0.0)\",\"prettyprint (\u003e= 0)\",\"erb (\u003e= 0)\",\"psych (\u003e= 4.0.0)\",\"date (\u003e= 0)\",\"stringio (\u003e= 0)\",\"io-console (~\u003e 0.5)\"]},{\"name\":\"mail\",\"total_dependencies\":7,\"first_level_dependencies\":4,\"top_level_dependencies\":{\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actionmailer\":\"actionmailer (7.2.2.1)\",\"rails\":\"rails (7.2.2.1)\"},\"transitive_dependencies\":[\"mini_mime (\u003e= 0.1.1)\",\"net-imap (\u003e= 0)\",\"net-pop (\u003e= 0)\",\"net-smtp (\u003e= 0)\",\"date (\u003e= 0)\",\"net-protocol (\u003e= 0)\",\"timeout (\u003e= 0)\"]},{\"name\":\"selenium-webdriver\",\"total_dependencies\":5,\"first_level_dependencies\":5,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"base64 (~\u003e 0.2)\",\"logger (~\u003e 1.4)\",\"rexml (~\u003e 3.2, \u003e= 3.2.5)\",\"rubyzip (\u003e= 1.2.2, \u003c 3.0)\",\"websocket (~\u003e 1.0)\"]},{\"name\":\"rails_stats\",\"total_dependencies\":4,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"bundler-stats (\u003e= 2.1)\",\"rake (\u003e= 0)\",\"bundler (\u003e= 1.9, \u003c 3)\",\"thor (\u003e= 0.19.0, \u003c 2.0)\"]},{\"name\":\"svg_sprite\",\"total_dependencies\":4,\"first_level_dependencies\":3,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"nokogiri (\u003e= 0)\",\"svg_optimizer (\u003e= 0)\",\"thor (\u003e= 0)\",\"racc (~\u003e 1.4)\"]},{\"name\":\"bundle-audit\",\"total_dependencies\":3,\"first_level_dependencies\":1,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"bundler-audit (\u003e= 0)\",\"bundler (\u003e= 1.2.0, \u003c 3)\",\"thor (~\u003e 1.0)\"]},{\"name\":\"listen\",\"total_dependencies\":3,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"rb-fsevent (~\u003e 0.10, \u003e= 0.10.3)\",\"rb-inotify (~\u003e 0.9, \u003e= 0.9.10)\",\"ffi (~\u003e 1.0)\"]},{\"name\":\"net-imap\",\"total_dependencies\":3,\"first_level_dependencies\":2,\"top_level_dependencies\":{\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actionmailer\":\"actionmailer (7.2.2.1)\",\"mail\":\"mail (2.8.1)\",\"rails\":\"rails (7.2.2.1)\"},\"transitive_dependencies\":[\"date (\u003e= 0)\",\"net-protocol (\u003e= 0)\",\"timeout (\u003e= 0)\"]},{\"name\":\"sanitize\",\"total_dependencies\":3,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"crass (~\u003e 1.0.2)\",\"nokogiri (\u003e= 1.12.0)\",\"racc (~\u003e 1.4)\"]},{\"name\":\"simplecov\",\"total_dependencies\":3,\"first_level_dependencies\":3,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"docile (~\u003e 1.1)\",\"simplecov-html (~\u003e 0.11)\",\"simplecov_json_formatter (~\u003e 0.1)\"]},{\"name\":\"mini_magick\",\"total_dependencies\":2,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"benchmark (\u003e= 0)\",\"logger (\u003e= 0)\"]},{\"name\":\"net-pop\",\"total_dependencies\":2,\"first_level_dependencies\":1,\"top_level_dependencies\":{\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actionmailer\":\"actionmailer (7.2.2.1)\",\"mail\":\"mail (2.8.1)\",\"rails\":\"rails (7.2.2.1)\"},\"transitive_dependencies\":[\"net-protocol (\u003e= 0)\",\"timeout (\u003e= 0)\"]},{\"name\":\"net-smtp\",\"total_dependencies\":2,\"first_level_dependencies\":1,\"top_level_dependencies\":{\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actionmailer\":\"actionmailer (7.2.2.1)\",\"mail\":\"mail (2.8.1)\",\"rails\":\"rails (7.2.2.1)\"},\"transitive_dependencies\":[\"net-protocol (\u003e= 0)\",\"timeout (\u003e= 0)\"]},{\"name\":\"rbpdf\",\"total_dependencies\":2,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"htmlentities (\u003e= 0)\",\"rbpdf-font (~\u003e 1.19.0)\"]},{\"name\":\"rqrcode\",\"total_dependencies\":2,\"first_level_dependencies\":2,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"chunky_png (~\u003e 1.0)\",\"rqrcode_core (~\u003e 2.0)\"]},{\"name\":\"addressable\",\"total_dependencies\":1,\"first_level_dependencies\":1,\"top_level_dependencies\":{\"capybara\":\"capybara (3.40.0)\",\"css_parser\":\"css_parser (1.21.1)\",\"roadie\":\"roadie (5.2.1)\",\"roadie-rails\":\"roadie-rails (3.3.0)\"},\"transitive_dependencies\":[\"public_suffix (\u003e= 2.0.2, \u003c 7.0)\"]},{\"name\":\"i18n\",\"total_dependencies\":1,\"first_level_dependencies\":1,\"top_level_dependencies\":{\"actioncable\":\"actioncable (7.2.2.1)\",\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actionmailer\":\"actionmailer (7.2.2.1)\",\"actionpack\":\"actionpack (7.2.2.1)\",\"actionpack-xml_parser\":\"actionpack-xml_parser (2.0.1)\",\"actiontext\":\"actiontext (7.2.2.1)\",\"actionview\":\"actionview (7.2.2.1)\",\"activejob\":\"activejob (7.2.2.1)\",\"activemodel\":\"activemodel (7.2.2.1)\",\"activerecord\":\"activerecord (7.2.2.1)\",\"activestorage\":\"activestorage (7.2.2.1)\",\"activesupport\":\"activesupport (7.2.2.1)\",\"bullet\":\"bullet (8.0.7)\",\"globalid\":\"globalid (1.2.1)\",\"html-pipeline\":\"html-pipeline (2.13.2)\",\"importmap-rails\":\"importmap-rails (2.1.0)\",\"propshaft\":\"propshaft (1.1.0)\",\"rails\":\"rails (7.2.2.1)\",\"rails-dom-testing\":\"rails-dom-testing (2.2.0)\",\"railties\":\"railties (7.2.2.1)\",\"roadie-rails\":\"roadie-rails (3.3.0)\",\"rubocop-rails\":\"rubocop-rails (2.31.0)\",\"stimulus-rails\":\"stimulus-rails (1.3.4)\"},\"transitive_dependencies\":[\"concurrent-ruby (~\u003e 1.0)\"]},{\"name\":\"mocha\",\"total_dependencies\":1,\"first_level_dependencies\":1,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"ruby2_keywords (\u003e= 0.0.5)\"]},{\"name\":\"nokogiri\",\"total_dependencies\":1,\"first_level_dependencies\":1,\"top_level_dependencies\":{\"actioncable\":\"actioncable (7.2.2.1)\",\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actionmailer\":\"actionmailer (7.2.2.1)\",\"actionpack\":\"actionpack (7.2.2.1)\",\"actionpack-xml_parser\":\"actionpack-xml_parser (2.0.1)\",\"actiontext\":\"actiontext (7.2.2.1)\",\"actionview\":\"actionview (7.2.2.1)\",\"activestorage\":\"activestorage (7.2.2.1)\",\"capybara\":\"capybara (3.40.0)\",\"html-pipeline\":\"html-pipeline (2.13.2)\",\"importmap-rails\":\"importmap-rails (2.1.0)\",\"loofah\":\"loofah (2.24.1)\",\"propshaft\":\"propshaft (1.1.0)\",\"rails\":\"rails (7.2.2.1)\",\"rails-dom-testing\":\"rails-dom-testing (2.2.0)\",\"rails-html-sanitizer\":\"rails-html-sanitizer (1.6.2)\",\"railties\":\"railties (7.2.2.1)\",\"roadie\":\"roadie (5.2.1)\",\"roadie-rails\":\"roadie-rails (3.3.0)\",\"sanitize\":\"sanitize (6.1.3)\",\"stimulus-rails\":\"stimulus-rails (1.3.4)\",\"svg_optimizer\":\"svg_optimizer (0.3.0)\",\"svg_sprite\":\"svg_sprite (1.0.3)\",\"xpath\":\"xpath (3.2.0)\"},\"transitive_dependencies\":[\"racc (~\u003e 1.4)\"]},{\"name\":\"puma\",\"total_dependencies\":1,\"first_level_dependencies\":1,\"top_level_dependencies\":{},\"transitive_dependencies\":[\"nio4r (~\u003e 2.0)\"]},{\"name\":\"commonmarker\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{},\"transitive_dependencies\":[]},{\"name\":\"csv\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{},\"transitive_dependencies\":[]},{\"name\":\"ffi\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{\"listen\":\"listen (3.9.0)\",\"rb-inotify\":\"rb-inotify (0.11.1)\"},\"transitive_dependencies\":[]},{\"name\":\"marcel\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actiontext\":\"actiontext (7.2.2.1)\",\"activestorage\":\"activestorage (7.2.2.1)\",\"rails\":\"rails (7.2.2.1)\"},\"transitive_dependencies\":[]},{\"name\":\"mini_mime\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actionmailer\":\"actionmailer (7.2.2.1)\",\"capybara\":\"capybara (3.40.0)\",\"mail\":\"mail (2.8.1)\",\"rails\":\"rails (7.2.2.1)\"},\"transitive_dependencies\":[]},{\"name\":\"net-ldap\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{},\"transitive_dependencies\":[]},{\"name\":\"rack\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{\"actioncable\":\"actioncable (7.2.2.1)\",\"actionmailbox\":\"actionmailbox (7.2.2.1)\",\"actionmailer\":\"actionmailer (7.2.2.1)\",\"actionpack\":\"actionpack (7.2.2.1)\",\"actionpack-xml_parser\":\"actionpack-xml_parser (2.0.1)\",\"actiontext\":\"actiontext (7.2.2.1)\",\"activestorage\":\"activestorage (7.2.2.1)\",\"capybara\":\"capybara (3.40.0)\",\"importmap-rails\":\"importmap-rails (2.1.0)\",\"propshaft\":\"propshaft (1.1.0)\",\"rack-session\":\"rack-session (2.1.1)\",\"rack-test\":\"rack-test (2.2.0)\",\"rackup\":\"rackup (2.2.1)\",\"rails\":\"rails (7.2.2.1)\",\"railties\":\"railties (7.2.2.1)\",\"roadie-rails\":\"roadie-rails (3.3.0)\",\"rubocop-rails\":\"rubocop-rails (2.31.0)\",\"stimulus-rails\":\"stimulus-rails (1.3.4)\"},\"transitive_dependencies\":[]},{\"name\":\"rotp\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{},\"transitive_dependencies\":[]},{\"name\":\"rouge\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{},\"transitive_dependencies\":[]},{\"name\":\"rubyzip\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{\"selenium-webdriver\":\"selenium-webdriver (4.32.0)\"},\"transitive_dependencies\":[]},{\"name\":\"tzinfo-data\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{},\"transitive_dependencies\":[]},{\"name\":\"yard\",\"total_dependencies\":0,\"first_level_dependencies\":0,\"top_level_dependencies\":{},\"transitive_dependencies\":[]}]},{\"name\":\"Models\",\"files\":\"88\",\"lines\":\"20110\",\"loc\":\"14528\",\"classes\":\"110\",\"methods\":\"1532\",\"m_over_c\":\"13\",\"loc_over_m\":\"7\"},{\"name\":\"Validators\",\"files\":\"1\",\"lines\":\"29\",\"loc\":\"10\",\"classes\":\"1\",\"methods\":\"1\",\"m_over_c\":\"1\",\"loc_over_m\":\"8\"},{\"name\":\"Javascripts\",\"files\":\"117\",\"lines\":\"6930\",\"loc\":\"5362\",\"classes\":\"0\",\"methods\":\"446\",\"m_over_c\":\"0\",\"loc_over_m\":\"10\"},{\"name\":\"Jobs\",\"files\":\"3\",\"lines\":\"115\",\"loc\":\"90\",\"classes\":\"3\",\"methods\":\"9\",\"m_over_c\":\"3\",\"loc_over_m\":\"8\"},{\"name\":\"Controllers\",\"files\":\"57\",\"lines\":\"9042\",\"loc\":\"6746\",\"classes\":\"60\",\"methods\":\"554\",\"m_over_c\":\"9\",\"loc_over_m\":\"10\"},{\"name\":\"Helpers\",\"files\":\"49\",\"lines\":\"7068\",\"loc\":\"5168\",\"classes\":\"1\",\"methods\":\"413\",\"m_over_c\":\"413\",\"loc_over_m\":\"10\"},{\"name\":\"Libraries\",\"files\":\"134\",\"lines\":\"18922\",\"loc\":\"13178\",\"classes\":\"128\",\"methods\":\"1167\",\"m_over_c\":\"9\",\"loc_over_m\":\"9\"},{\"name\":\"Configuration\",\"files\":\"17\",\"lines\":\"1090\",\"loc\":\"666\",\"classes\":\"7\",\"methods\":\"14\",\"m_over_c\":\"2\",\"loc_over_m\":\"45\"},{\"name\":\"Integration Tests\",\"files\":\"98\",\"lines\":\"10349\",\"loc\":\"7237\",\"classes\":\"104\",\"methods\":\"297\",\"m_over_c\":\"2\",\"loc_over_m\":\"22\"},{\"name\":\"Test Support\",\"files\":\"16\",\"lines\":\"1637\",\"loc\":\"1229\",\"classes\":\"20\",\"methods\":\"142\",\"m_over_c\":\"7\",\"loc_over_m\":\"6\"},{\"name\":\"Other Tests\",\"files\":\"19\",\"lines\":\"2339\",\"loc\":\"1525\",\"classes\":\"19\",\"methods\":\"98\",\"m_over_c\":\"5\",\"loc_over_m\":\"13\"},{\"name\":\"Functional Tests\",\"files\":\"65\",\"lines\":\"35754\",\"loc\":\"30234\",\"classes\":\"65\",\"methods\":\"2104\",\"m_over_c\":\"32\",\"loc_over_m\":\"12\"},{\"name\":\"Helper Tests\",\"files\":\"27\",\"lines\":\"5369\",\"loc\":\"4090\",\"classes\":\"28\",\"methods\":\"302\",\"m_over_c\":\"10\",\"loc_over_m\":\"11\"},{\"name\":\"Unit Tests\",\"files\":\"147\",\"lines\":\"37173\",\"loc\":\"28642\",\"classes\":\"161\",\"methods\":\"2778\",\"m_over_c\":\"17\",\"loc_over_m\":\"8\"},{\"name\":\"Job Tests\",\"files\":\"2\",\"lines\":\"142\",\"loc\":\"94\",\"classes\":\"2\",\"methods\":\"2\",\"m_over_c\":\"1\",\"loc_over_m\":\"45\"},{\"name\":\"Code\",\"files\":\"466\",\"lines\":\"63306\",\"loc\":\"45748\",\"classes\":\"310\",\"methods\":\"4136\",\"m_over_c\":\"13\",\"loc_over_m\":\"9\",\"code_to_test_ratio\":\"1.6\",\"total\":true},{\"name\":\"Tests\",\"files\":\"374\",\"lines\":\"92763\",\"loc\":\"73051\",\"classes\":\"399\",\"methods\":\"5723\",\"m_over_c\":\"14\",\"loc_over_m\":\"10\",\"code_to_test_ratio\":\"1.6\",\"total\":true},{\"name\":\"Total\",\"files\":\"840\",\"lines\":\"156069\",\"loc\":\"118799\",\"classes\":\"709\",\"methods\":\"9859\",\"m_over_c\":\"13\",\"loc_over_m\":\"10\",\"code_to_test_ratio\":\"1.6\",\"total\":true}]\n```\n\n### Testing\n\nIn order to run the tests for this gem:\n\n```bash\nbundle exec rake test\n\n# Running:\n\n..\n\nFabulous run in 0.097903s, 20.4284 runs/s, 142.9987 assertions/s.\n\n2 runs, 14 assertions, 0 failures, 0 errors, 0 skips\n```\n\n### TODO\n\n* Option to print out by app directory (stats per engine)\n* Add views (jbuilder, erb, haml) but don't count towards ratios\n* Support JS for projects that have it in public (but not compiled)\n* Add CSS but don't count towards ratios\n* Output other metrics like number of tables and columns\n* Different output formatters\n","funding_links":[],"categories":["Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastruby%2Frails_stats","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffastruby%2Frails_stats","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastruby%2Frails_stats/lists"}