如何反转'rails generate'?

mar*_*ion 455 ruby ruby-on-rails-3 rails-generate

即删除它创建的所有文件并回滚所做的任何更改?不一定是db,但更多的是配置文件.

例如,自动删除在routes.rb文件中删除的模型/控制器的所有资源映射以及可能已经进行了更改的其他地方?

谢谢.

Fáb*_*sta 901

rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho
Run Code Online (Sandbox Code Playgroud)

Rails 3.2 d为命令添加了一个新的快捷方式,所以现在你可以写:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho
Run Code Online (Sandbox Code Playgroud)

  • @marcamillion一定是额外的'L'. (38认同)
  • 好的,我明白了.也许我在弄错东西.我刚刚跑了`rails destroy scaffold lalalal`,这很有用. (5认同)
  • @doug,我不认为这是可能的.最好的办法是用`-f`标志重新运行生成器,强制它重新创建/重新编辑文件......然后你可以看到它创建/更改了哪些文件,然后继续手动删除它们. (2认同)

Mai*_*kon 46

值得一提的是-p标志(假装为p).

如果将其添加到命令中,它将只执行"测试"运行并向您显示将删除哪些文件而不实际删除它们.

$ rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss
Run Code Online (Sandbox Code Playgroud)

如果您对此感到满意,请在不使用-p标志的情况下再次运行该命令.


Mai*_*kel 22

rails destroy controller Controller_name回来了一堆错误.为了能够销毁控制器,我必须删除routes.rb中的相关路由.PS我正在使用rails 3.1

  • 是的好抓住maikel ..我同样的问题谢谢 (5认同)

dav*_*mac 12

你在使用版本控制(颠覆,git,等等)吗?只是还原.如果没有 - 为什么不呢?!!

  • 还原可能会删除其他不打算删除的代码(例如,需要更改控制器X,但希望删除控制器Y和相关模型) (10认同)
  • @Zabba:有一些交易规则:在任何破坏性命令之前,总是提交.Rails生成器将打印出他们更改/创建的列表.当你即将覆盖某些东西时,他们甚至会警告你,你可以检查这些差异.了解你的工具:git让你有选择地回滚一些文件,而不是其他文件.您可以在命令行上执行此操作,或者如果您使用RubyMine,您将拥有用于差异,回滚,提交等的精美图形git工具. (5认同)

uma*_*uma 10

这是生成或销毁rails中的控制器或模型的原型.

rails generate/destroy controller/model [controller/model Name]
Run Code Online (Sandbox Code Playgroud)

例如,如果您需要生成用户控制器

rails generate controller User
Run Code Online (Sandbox Code Playgroud)

要么

rails g controller User
Run Code Online (Sandbox Code Playgroud)

如果想破坏用户控制器或恢复到上面的操作然后

rails destroy controller User
Run Code Online (Sandbox Code Playgroud)

要么

rails d controller User
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 6

您可以使用rails d model/controller/migration ...rails generate命令来销毁或删除生成的更改。

例如:

rails g model Home name:string
Run Code Online (Sandbox Code Playgroud)

创建一个以home属性命名的模型name。要删除从该命令生成的文件和代码,我们可以使用

rails d model Home
Run Code Online (Sandbox Code Playgroud)


San*_*anu 5

如果您使用 Rails,请使用rails d controller Users.

而且,如果您使用 Zeus,请使用zeus d controller Users.

另一方面,如果您使用 git 或 SVN,请使用提交号恢复更改。这要快得多。