You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Slim模板文件纳入Rails stats代码统计范围?

问题:如何让bin/rails stats正确统计Slim格式视图文件

经过多次搜索和实操验证,始终没有找到将Slim模板纳入Ruby on Rails视图代码统计的正确方案。项目中执行bin/rails stats做代码统计时,程序默认仅识别统计.erb格式的视图模板,项目实际使用的.slim格式模板完全没有被纳入统计范围,视图项统计结果全为0,命令输出如下:

% bin/rails stats
+----------------------+--------+--------+---------+---------+-----+-------+
| Name                 |  Lines |    LOC | Classes | Methods | M/C | LOC/M |
+----------------------+--------+--------+---------+---------+-----+-------+
| Controllers          |   3245 |   1634 |      57 |     218 |   3 |     5 |
| Helpers              |    186 |    149 |       0 |      18 |   0 |     6 |
| Jobs                 |     34 |     20 |       2 |       2 |   1 |     8 |
| Models               |    879 |    541 |      25 |      77 |   3 |     5 |
| Mailers              |     85 |     53 |       3 |       6 |   2 |     6 |
| Channels             |     46 |     28 |       3 |       4 |   1 |     5 |
| Views                |      0 |      0 |       0 |       0 |   0 |     0 |
+----------------------+--------+--------+---------+---------+-----+-------+

此前尝试单独新增"Slim views"统计规则实现该需求,但这种配置方式会同时重复统计视图目录下的.erb模板文件,不符合统计要求。


解决方案

不要新增独立的"Slim views"统计项,直接修改Rails默认Views统计规则的文件匹配模式,将.slim后缀加入匹配范围即可,操作步骤:

  • 在项目lib/tasks目录下新建自定义rake任务文件,命名为custom_stats.rake
  • 写入以下配置,覆盖默认视图统计的匹配规则:
# lib/tasks/custom_stats.rake
namespace :stats do
  task :override_view_patterns do
    next unless defined?(Rails::SourceAnnotationExtractor::Statistics)
    views_rule = Rails::SourceAnnotationExtractor::Statistics::DIRECTORIES.find { _1.first == "Views" }
    # 原有erb匹配规则基础上追加slim后缀,使用haml的话也可以一并加入
    views_rule[1] = /\.(erb|slim|haml)$/ if views_rule
  end
end

# 在原生stats任务执行前加载自定义配置
Rake::Task["stats"].enhance ["stats:override_view_patterns"]
  • 保存后重新执行bin/rails stats,就能看到slim模板被正常统计,不会出现重复统计项,也不会重复计数erb文件。

说明

  • Rails默认的Views统计规则硬编码了仅匹配.erb后缀,直接修改原有规则的匹配正则,比新增独立统计项更合理:视图统计结果不会被拆分,也从根源避免了重复统计的问题
  • 如果项目混用多种模板引擎,直接在正则里追加对应后缀即可
  • 该配置通过Rake原生的enhance方法注入逻辑,不需要修改Rails框架源码,后续升级Rails版本不会失效。

内容的提问来源于stack exchange,提问作者Fa11enAngel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:45:46