rails_stats icon indicating copy to clipboard operation
rails_stats copied to clipboard

Running rake task from outside of the Rails app directory is not working as expected

Open etagwerker opened this issue 1 year ago • 3 comments

Environment

Ruby:

➜  fastruby.io git:(main) ✗ ruby -v
ruby 3.1.6p260 (2024-05-29 revision a777087be6) [arm64-darwin23]

Rails Stats:

➜  fastruby.io git:(main) ✗ gem update rails_stats
Updating installed gems
Updating rails_stats
Fetching rails_stats-2.0.1.gem
Successfully installed rails_stats-2.0.1
Parsing documentation for rails_stats-2.0.1
Installing ri documentation for rails_stats-2.0.1
Done installing documentation for rails_stats after 0 seconds
Parsing documentation for rails_stats-2.0.1
Done installing documentation for rails_stats after 0 seconds
Gems updated: rails_stats

Current

Calling rake stats with parameters (requesting JSON output) is working as expected:

➜  fastruby.io git:(main) ✗ bundle exec rake stats\[fastruby.io,json\]

Directory: /Users/etagwerker/Projects/ombulabs/fastruby.io

[{"name":"Mailers","files":"4","lines":"63","loc":"55","classes":"4","methods":"7","m_over_c":"1","loc_over_m":"5"},{"name":"Models","files":"6","lines":"106","loc":"92","classes":"6","methods":"7","m_over_c":"1","loc_over_m":"11"},{"name":"Dashboards","files":"3","lines":"275","loc":"161","classes":"3","methods":"0","m_over_c":"0","loc_over_m":"0"},{"name":"Libs","files":"1","lines":"111","loc":"87","classes":"1","methods":"1","m_over_c":"1","loc_over_m":"85"},{"name":"Workers","files":"2","lines":"18","loc":"14","classes":"2","methods":"2","m_over_c":"1","loc_over_m":"5"},{"name":"Fields","files":"2","lines":"14","loc":"12","classes":"2","methods":"2","m_over_c":"1","loc_over_m":"4"},{"name":"Javascripts","files":"20","lines":"8604","loc":"8380","classes":"0","methods":"1853","m_over_c":"0","loc_over_m":"2"},{"name":"Jobs","files":"1","lines":"2","loc":"2","classes":"1","methods":"0","m_over_c":"0","loc_over_m":"0"},{"name":"Controllers","files":"13","lines":"502","loc":"396","classes":"13","methods":"59","m_over_c":"4","loc_over_m":"4"},{"name":"Helpers","files":"4","lines":"27","loc":"22","classes":"0","methods":"3","m_over_c":"0","loc_over_m":"5"},{"name":"Services","files":"3","lines":"134","loc":"109","classes":"3","methods":"14","m_over_c":"4","loc_over_m":"5"},{"name":"Channels","files":"2","lines":"8","loc":"8","classes":"2","methods":"0","m_over_c":"0","loc_over_m":"0"},{"name":"Libraries","files":"1","lines":"126","loc":"91","classes":"2","methods":"7","m_over_c":"3","loc_over_m":"11"},{"name":"Configuration","files":"37","lines":"726","loc":"293","classes":"1","methods":"0","m_over_c":"0","loc_over_m":"0"},{"name":"Gems","files":"2","lines":"37","loc":"22","classes":"1","methods":"1","m_over_c":"1","loc_over_m":"20"},{"name":"Controller Tests","files":"8","lines":"480","loc":"396","classes":"0","methods":"1","m_over_c":"0","loc_over_m":"394"},{"name":"Spec Support","files":"5","lines":"214","loc":"79","classes":"0","methods":"2","m_over_c":"0","loc_over_m":"37"},{"name":"Feature Tests","files":"8","lines":"368","loc":"280","classes":"0","methods":"5","m_over_c":"0","loc_over_m":"54"},{"name":"Mailer Tests","files":"1","lines":"62","loc":"47","classes":"0","methods":"0","m_over_c":"0","loc_over_m":"0"},{"name":"Model Tests","files":"2","lines":"182","loc":"138","classes":"0","methods":"0","m_over_c":"0","loc_over_m":"0"},{"name":"Routing Tests","files":"1","lines":"45","loc":"40","classes":"0","methods":"0","m_over_c":"0","loc_over_m":"0"},{"name":"Service Tests","files":"1","lines":"20","loc":"17","classes":"0","methods":"0","m_over_c":"0","loc_over_m":"0"},{"name":"Total","files":"127","lines":"12124","loc":"10741","classes":"41","methods":"1964","m_over_c":"47","loc_over_m":"3","code_to_test_ratio":"0.1","total":true}]

Trying to generate the same report with console output is producing unexpected results:

➜  fastruby.io git:(main) ✗ bundle exec rake stats\[fastruby.io,stdout\]

Directory: /Users/etagwerker/Projects/ombulabs/fastruby.io

Could not find command "stats[fastruby.io,stdout]".
➜  fastruby.io git:(main) ✗ bundle exec rake stats\[fastruby.io,console\]

Directory: /Users/etagwerker/Projects/ombulabs/fastruby.io

Could not find command "stats[fastruby.io,console]".

Expected

As far as I know, calling the rake task with a format that is != json should generate a report like this one: https://gist.github.com/etagwerker/bc227cd1107a67483c4fe736bcd84c94

More Details

I tested v2.0.1 within a Rails application. Added this to my Gemfile:

group :development, :test do
  gem "rails_stats"
end

I can see that the right version is installed:

➜  fastruby.io git:(main) ✗ bundle info rails_stats
  * rails_stats (2.0.1)
	Summary: Analyze a Rails project
	Homepage: https://github.com/fastruby/rails_stats
	Path: /Users/etagwerker/.rbenv/versions/3.1.6/lib/ruby/gems/3.1.0/gems/rails_stats-2.0.1

Running bundle exec rake stats works fine within the fastruby.io directory.

➜  fastruby.io git:(main) ✗ rake stats
The dependency `tzinfo-data` wasn't found. It may not be present in your Gemfile.lock. This often happens when a dependency isn't installed on your platform.
The dependency `tzinfo-data` wasn't found. It may not be present in your Gemfile.lock. This often happens when a dependency isn't installed on your platform.
+------------------------------------|------------|----------------+
|                               Name | Total Deps | 1st Level Deps |
+------------------------------------|------------|----------------+
|                     ombu_labs-auth | 70         | 5              |
|  administrate-field-active_storage | 59         | 2              |
|                  ombu_labs-hubspot | 55         | 3              |
|            ombu_labs-notifications | 50         | 3              |
|                  invisible_captcha | 46         | 1              |
|                              rails | 45         | 13             |
|                       administrate | 37         | 7              |
|                       sentry-rails | 32         | 2              |
| jekyll-external-link-accessibility | 30         | 2              |
|                  jekyll-images-cdn | 30         | 2              |
|                         sass-rails | 29         | 1              |
|                        rspec-rails | 28         | 7              |
|                     jekyll-authors | 27         | 1              |
|                  jekyll-categories | 27         | 1              |
|                        jekyll-feed | 27         | 1              |
|               jekyll-redirect-from | 27         | 1              |
|                             jekyll | 26         | 14             |
|         active_storage_validations | 25         | 4              |
|                        web-console | 25         | 4              |
|                          webpacker | 25         | 4              |
|                       dotenv-rails | 24         | 2              |
|                  factory_bot_rails | 24         | 2              |
|           rails-controller-testing | 18         | 3              |
|                      rubocop-rails | 16         | 3              |
|                         email_spec | 12         | 3              |
|                       html-proofer | 12         | 7              |
|                           capybara | 11         | 8              |
|                           standard | 11         | 2              |
|                    convertkit-ruby | 10         | 3              |
|                      rubocop-rspec | 10         | 1              |
|                        sentry-ruby | 10         | 3              |
|                       sidekiq-cron | 9          | 2              |
|                        friendly_id | 7          | 1              |
|                         aws-sdk-s3 | 6          | 3              |
|                           jbuilder | 5          | 1              |
|                               reek | 5          | 4              |
|                   shoulda-matchers | 5          | 1              |
|              spring-watcher-listen | 5          | 2              |
|                        rails_stats | 4          | 2              |
|                   image_processing | 3          | 2              |
|                             listen | 3          | 2              |
|                         overcommit | 3          | 3              |
|                 selenium-webdriver | 3          | 3              |
|                            sidekiq | 3          | 3              |
|                   dotenv_validator | 2          | 2              |
|                  font-awesome-sass | 2          | 1              |
|              rspec_junit_formatter | 2          | 1              |
|                    jekyll-titleize | 1          | 1              |
|                         next_rails | 1          | 1              |
|                               puma | 1          | 1              |
|                          rack-cors | 1          | 1              |
|                 rack-mini-profiler | 1          | 1              |
|                          recaptcha | 1          | 1              |
|                  sitemap_generator | 1          | 1              |
|                           uglifier | 1          | 1              |
|                             byebug | 0          | 0              |
|                    jekyll-paginate | 0          | 0              |
|                       newrelic_rpm | 0          | 0              |
|                               pagy | 0          | 0              |
|                                 pg | 0          | 0              |
|                             spring | 0          | 0              |
|                             stripe | 0          | 0              |
|                            timecop | 0          | 0              |
|                        tzinfo-data | 0          | 0              |
+------------------------------------|------------|----------------+

      Declared Gems   64
         Total Gems   219
  Unpinned Versions   40
        Github Refs   4

+----------------------+---------+---------+---------+---------+---------+-----+-------+
| Name                 | Files   | Lines   |     LOC | Classes | Methods | M/C | LOC/M |
+----------------------+---------+---------+---------+---------+---------+-----+-------+
| Channels             |       2 |       8 |       8 |       2 |       0 |   0 |     0 |
| Configuration        |      37 |     726 |     293 |       1 |       0 |   0 |     0 |
| Controller Tests     |       8 |     480 |     396 |       0 |       1 |   0 |   394 |
| Controllers          |      13 |     502 |     396 |      13 |      59 |   4 |     4 |
| Dashboards           |       3 |     275 |     161 |       3 |       0 |   0 |     0 |
| Feature Tests        |       8 |     368 |     280 |       0 |       5 |   0 |    54 |
| Fields               |       2 |      14 |      12 |       2 |       2 |   1 |     4 |
| Gems                 |       2 |      37 |      22 |       1 |       1 |   1 |    20 |
| Helpers              |       4 |      27 |      22 |       0 |       3 |   0 |     5 |
| Javascripts          |      20 |    8604 |    8380 |       0 |    1853 |   0 |     2 |
| Jobs                 |       1 |       2 |       2 |       1 |       0 |   0 |     0 |
| Libraries            |       1 |     126 |      91 |       2 |       7 |   3 |    11 |
| Libs                 |       1 |     111 |      87 |       1 |       1 |   1 |    85 |
| Mailer Tests         |       1 |      62 |      47 |       0 |       0 |   0 |     0 |
| Mailers              |       4 |      63 |      55 |       4 |       7 |   1 |     5 |
| Model Tests          |       2 |     182 |     138 |       0 |       0 |   0 |     0 |
| Models               |       6 |     106 |      92 |       6 |       7 |   1 |    11 |
| Routing Tests        |       1 |      45 |      40 |       0 |       0 |   0 |     0 |
| Service Tests        |       1 |      20 |      17 |       0 |       0 |   0 |     0 |
| Services             |       3 |     134 |     109 |       3 |      14 |   4 |     5 |
| Spec Support         |       5 |     214 |      79 |       0 |       2 |   0 |    37 |
| Workers              |       2 |      18 |      14 |       2 |       2 |   1 |     5 |
+----------------------+---------+---------+---------+---------+---------+-----+-------+
| Code                 |     101 |   10753 |    9744 |      41 |    1956 |  47 |     2 |
| Tests                |      26 |    1371 |     997 |       0 |       8 |   0 |   122 |
| Total                |     127 |   12124 |   10741 |      41 |    1964 |  47 |     3 |
+----------------------+---------+---------+---------+---------+---------+-----+-------+
  Code LOC: 9744     Test LOC: 997     Code to Test Ratio: 1:0.1  Files: 127

etagwerker avatar Dec 20 '24 01:12 etagwerker

I'm getting the same error for major version 2. If I downgrade to 1.0.2 it works as expected.

rheaton avatar Jan 18 '25 00:01 rheaton

@etagwerker This is happening to me too and it's because this line tries to match the first parameter (stats[my/path]) as a Thor command.

Commenting that line makes it work, although of course it doesn't include the bundler-stats output.

oboxodo avatar Apr 27 '25 20:04 oboxodo

@oboxodo Thanks for looking into it. This is very strange:

This is happening to me too and it's because this line tries to match the first parameter (stats[my/path]) as a Thor command.

I tried locally commenting that line out and I still get the same error. 😕

etagwerker avatar May 30 '25 02:05 etagwerker