2

我现在负责一个 Rails 应用程序,该应用程序以非常快速和肮脏的方式构建。它有许多未使用的视图文件(html 模板)。它还有许多未使用的 css 文件。

确定不再需要哪些文件以便删除它们的最佳方法是什么?

我正在寻找一个通用的解决方案,而不是一个特定于 Rails 的解决方案,但是一个 Ruby/Rails-only 的解决方案肯定会受到欢迎。

只是为了让事情开始,我有一个(我不是特别喜欢)确定使用哪些视图的想法如下:

  1. 编写一个脚本,将一行代码插入每个视图文件的顶部。这行代码会将视图的名称附加到某种日志中。
  2. 递归地 wget 整个站点
  3. 浏览日志并删除重复项 - 然后我们有一个使用的视图列表
  4. 删除日志中未列出的视图
4

5 回答 5

4

如果您使用的是类 Unix 系统:

确保带有页面的分区在启用访问时间 (atime) 的情况下挂载。在 linux 上,使用 relatime 或 noatime 挂载对您没有帮助。)

选择当前时间。

运行网络服务器几天。

识别 atime 早于先前选取的时间的文件。它们没有被使用。

于 2008-12-22T00:56:22.657 回答
4

与任何重构一样,从编写测试开始,一旦有了这些,您可以一次删除一个文件并在测试失败时撤消,或者使用rcov查看正在使用的文件。

于 2008-12-22T12:53:40.087 回答
4

Krusty.ar 是正确的,也是最好的方法。

就个人而言,我会编写一些集成测试,从高层次检查所有功能。然后与 rcov 一起使用,你会得到一些非常可读的输出,它会告诉你哪些文件的使用率为 0%。

然后您可以开始删除,或开始编写单元/功能测试以提高安全性。

于 2008-12-22T18:51:00.287 回答
2

您可以使用网络服务器日志来枚举为您的脚本提供的所有面向客户端的资源。

根据操作系统,还可以监视(使用过滤器)在执行页面时加载了哪些文件。在 Windows 上有FileMon,对于 BSD/OSX 有fs_usage,Linux 有 dnotify 和inotify

于 2008-12-22T00:58:30.593 回答
0

你最好的选择是在测试中变得如此流利,以至于你可以 100% 依赖于你自己的测试。换句话说,如果您可以删除一个文件,并且测试仍然通过,您应该能够假设任何东西都不需要这个文件,因为您应该对应用程序中的所有内容进行测试。

于 2008-12-25T10:14:05.493 回答