适用于Mac的Rails代码重构工具

时间:2012-05-22 18:59:26

标签: ruby-on-rails-3 macos refactoring

我正在为Mac中的rails应用程序寻找重构工具。经过整整一周的研究,我很惊讶没有好的工具可以一次性重构命名空间/控制器/模型/视图/路由。我对Mac范式有些新意,所以可能是我错过了一些东西。

我可以看到为Rails开发的几个宝石可以进行一些重命名/替换,但仍然需要在重构后进行“手动调整”。

为了满足我的要求,这里是标准的Rails项目

# routes
map.namespace :admin do |admin|
  admin.resources :items
end
match "/admin/items/:id/enable" => "admin/items#enable"

# model
/app/models/items.rb
class item < ActiveRecord::Base

end

# views
/app/views/admin/items/
/app/views/admin/items/index.html.erb
/app/views/admin/items/show.html.erb
/app/views/admin/items/new.html.erb
/app/views/admin/items/edit.html.erb


# controller
/app/controllers/admin/items_controller.rb

class Admin::ItemsController < ApplicationController
  def index
    #
  end

  def show
    #
  end

  def enable
    #
  end
end

我对此工具的要求非常基础:

重构:“item”到“product” - 与案例匹配

  1. 工具应将包含“item”的任何文件重命名为“product”
  2. 工具应将包含“item”的任何文件夹重命名为“product”
  3. 工具应在当前或子目录中的所有文件中查找并替换“item”和“product”。
  4. 具有以上功能:

    我可以简单地通过以下方式反应整个项目:

    > refactor "item" "product"
    > refactor "Item" "Product"
    > refactor "admin" "shop"
    > refactor "Admin" "Shop"
    

    非常感谢您能帮我提供任何可以满足上述要求的Mac工具或任何脚本的链接。

2 个答案:

答案 0 :(得分:2)

嗯,我觉得这听起来很整洁,所以我写了一个工具,它可以将你想要的东西拉下来,我决定称它为重构。

以下是您的快速阅读:

正确用法是:refacto findString changeString <file extensions> <options>

文件扩展名不是可选的。要重命名或重构任何文件,您必须至少列出一个文件扩展名。默认情况下,文件夹将被重命名,如果您不想重命名,请使用-nf。

选项:
  -a:要求确认重构或重命名每个文件/文件夹   -nf:不要重命名文件夹或子文件夹
  -ci:Case Insenitive。将更改find​​String的所有版本

在此处获取源代码:https://github.com/bpo217/refacto

有几点需要注意:

Refacto更改文件中findString的所有实例,而不仅仅是类名或类似名称。

Refacto将触摸所有子文件夹和这些子文件夹中的文件。

因为它是你编译后的工具,只需将它放入/ usr / local / bin以及你需要做的其他任何事情,所以你只需在终端的任何地方键入refacto来运行它。它将始终与当前工作目录一起使用。

希望这有帮助!

答案 1 :(得分:0)

Rails并不是那么容易重构,我相信。

如果你不想经常,也不想大规模,那么我建议简单的查找文件并在需要的地方替换。是的,这需要时间,但搜索工具和学习它也需要时间。如果你想要小心,请在之后查看工具的变化; - )

Sidenote :由于Netbeans的搜索功能,Netbeans是我个人喜欢的工作。特别是如果你将它与源代码控制集成(良好的预提交审查)。当您需要切换OS-es(如Mac)或编程语言时,它也相当不错。