$ rails stats
コマンドはデフォルトでは以下のディレクトリしか計測しないため、サービスクラスを app/services
以下に置いているような場合、その分は計測されない。
app/controllers app/helpers app/jobs app/models app/mailers app/mailboxes app/channels app/assets/javascripts app/javascript lib/ app/apis + test 以下のディレクトリ
See. rails/statistics.rake at 3d428777b05701ca7211a1be723cb1ee0e094bd9 · rails/rails · GitHub
ちなみに上記のようにデフォルトではテストコードの計測は test
以下のディレクトリを対象にしているが、rspec-rails が計測ディレクリ名を test -> specs
に上書きしているので、specs
以下のテストコードが計測されるようになっている。
See. rspec-rails/rspec.rake at 13a8a01cc07c93db97b5f1cd57229527441cd626 · rspec/rspec-rails · GitHub
👆 の rspec-rails の上書きを参考にしながら以下のようなコードをプロジェクトの Rakefile に追加してやれば、app
以下のディレクトリ(view 以外)全て計測できるようになる。
# Rakefile # ... task stats: "custom:statsetup" namespace :custom do task :statsetup do # Push target directories to STATS_DIRECTORIES app_dirs = Dir.children('./app').map { |child| "app/#{child}" } stats_types = Hash[app_dirs.map { |dir| [dir.split('/').last, dir] }] stats_types.each do |type, dir| next if type == 'views' name = type.capitalize ::STATS_DIRECTORIES << [name, dir] unless ::STATS_DIRECTORIES.map(&:first).include?(name) end end end
その他
前述のように rspec-rails が計測ディレクリ名を上書きしているため、もし rspec-rails を Gemfile の group :test
に置いていると、$ rails stats
コマンド実行時にこの上書きがされず、テストコードの計測ができないので group :development, :test
などに置いてやる必要がある。