我正在为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” - 与案例匹配
具有以上功能:
我可以简单地通过以下方式反应整个项目:
> refactor "item" "product"
> refactor "Item" "Product"
> refactor "admin" "shop"
> refactor "Admin" "Shop"
非常感谢您能帮我提供任何可以满足上述要求的Mac工具或任何脚本的链接。
答案 0 :(得分:2)
嗯,我觉得这听起来很整洁,所以我写了一个工具,它可以将你想要的东西拉下来,我决定称它为重构。
以下是您的快速阅读:
正确用法是:refacto findString changeString <file extensions> <options>
文件扩展名不是可选的。要重命名或重构任何文件,您必须至少列出一个文件扩展名。默认情况下,文件夹将被重命名,如果您不想重命名,请使用-nf。
选项:
-a:要求确认重构或重命名每个文件/文件夹
-nf:不要重命名文件夹或子文件夹
-ci:Case Insenitive。将更改findString的所有版本
在此处获取源代码:https://github.com/bpo217/refacto
有几点需要注意:
Refacto更改文件中findString的所有实例,而不仅仅是类名或类似名称。
Refacto将触摸所有子文件夹和这些子文件夹中的文件。
因为它是你编译后的工具,只需将它放入/ usr / local / bin以及你需要做的其他任何事情,所以你只需在终端的任何地方键入refacto来运行它。它将始终与当前工作目录一起使用。
希望这有帮助!
答案 1 :(得分:0)
Rails并不是那么容易重构,我相信。
如果你不想经常,也不想大规模,那么我建议简单的查找文件并在需要的地方替换。是的,这需要时间,但搜索工具和学习它也需要时间。如果你想要小心,请在之后查看工具的变化; - )
Sidenote :由于Netbeans的搜索功能,Netbeans是我个人喜欢的工作。特别是如果你将它与源代码控制集成(良好的预提交审查)。当您需要切换OS-es(如Mac)或编程语言时,它也相当不错。