Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何反转';轨道生成';_Ruby_Ruby On Rails 3_Rails Generate - Fatal编程技术网

Ruby 如何反转';轨道生成';

Ruby 如何反转';轨道生成';,ruby,ruby-on-rails-3,rails-generate,Ruby,Ruby On Rails 3,Rails Generate,我想删除它创建的所有文件并回滚所做的任何更改,但不一定要回滚到数据库,而是回滚到配置文件 我想自动删除routes.rb文件中删除的模型/控制器的所有资源映射,以及可能进行更改的任何其他地方 rails destroy controller lalala rails destroy model yadayada rails destroy scaffold hohoho Rails 3.2为命令添加了一个新的d快捷方式,因此现在您可以编写: rails d controller lalala

我想删除它创建的所有文件并回滚所做的任何更改,但不一定要回滚到数据库,而是回滚到配置文件

我想自动删除routes.rb文件中删除的模型/控制器的所有资源映射,以及可能进行更改的任何其他地方

rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho
Rails 3.2为命令添加了一个新的
d
快捷方式,因此现在您可以编写:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho

rails destroy controller\u name
返回了一系列错误。为了能够摧毁控制器,我必须删除routes.rb中的相关路由。另外,我正在使用rails 3.1

您可以使用

rails d模型/控制器/迁移…
来销毁或删除使用
rails generate
命令生成的更改

例如:

rails g model Home name:string
使用属性
name
创建名为
home
的模型。要删除从该命令生成的文件和代码,我们可以使用

rails d model Home

这是在Rails中生成或销毁控制器或模型的原型:

rails generate/destroy controller/model [controller/model Name]
例如,如果需要生成用户控制器:

rails generate controller User

如果要销毁用户控制器或恢复到上述操作 然后使用:

rails destroy controller User
或:

您可以恢复

rails g/generate controller/model/migration xxx
使用以下命令输出:

 rails d/destroy controller/model/migration xxx

如果使用Rails,请使用Rails d控制器用户

如果您使用宙斯,请使用宙斯d控制器用户


另一方面,如果您使用的是git或SVN,请使用提交编号还原您的更改。这要快得多。

值得一提的是这里的
-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

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

要扭转这种情况,我们只需销毁它。打开终端应用程序并转到项目目录,然后键入:

rails destroy model CamelCase
rails destroy controller CamelCase
其中,
CamelCase
是任何模型或控制器的名称。
它将删除模型、迁移和一些相关的测试文件。(运行命令后,您可以在终端窗口中看到结果。)

如果您希望手动删除控制器:

对于控制器
欢迎

rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss

您可以通过以下方式撤消
rails生成的

  • 对于模型:
    rails销毁模型
  • 对于控制器:
    rails destroy controller\u name

所有版本的rails都有一个“销毁”,因此,如果您使用生成器创建一个(例如)名为“tasks”的脚手架,要销毁该生成步骤的所有更改,您必须键入:

rails destroy scaffold Tasks

希望它对您有所帮助。

在还原
rails生成之前,请确保首先回滚迁移

案例1:如果要还原脚手架,请运行以下命令:

rails destroy scaffold MODEL_NAME
rails destroy model MODEL_NAME
rails destroy controller CONTROLLER_NAME
案例2:如果要恢复模型,请运行以下命令:

rails destroy scaffold MODEL_NAME
rails destroy model MODEL_NAME
rails destroy controller CONTROLLER_NAME
案例3:如果要还原控制器,请运行以下命令:

rails destroy scaffold MODEL_NAME
rails destroy model MODEL_NAME
rails destroy controller CONTROLLER_NAME

注意:您也可以使用快捷方式
d
,而不是
destroy

为所选模型移除脚手架:

bin/rails d scaffold <AccessControl> //model name
bin/rails d scaffold//model name

假设我创建了一个名为“sample”的控制器,如:

如果我必须销毁此控制器,我所要做的就是将
生成
销毁
交换,如中所示

rails destroy controller sample.
如果要反转生成,只需将
generate
destroy
交换,我们使用generate作为
rails生成应用程序
。 因此,可以使用
destroy
语句反向重新生成任何
generate
语句。 只需将
生成
替换为
销毁
i、 e.
rails-generate-app
可以写成
rails-destroy-app'

rails generate
rails destroy

要反转
rails generate
,请使用
rails destroy

rails destroy Model

有关更多信息,请参阅“”。

您可以销毁所有以相同方式创建的东西,除了微小的变化。 对于控制器

rails d controller_name (d stands for destroy)
模型

rails d model_name

您只需在迁移中放置
d(destroy)
而不是
g(generate)

Btw,如何使用此命令删除脚手架?模型和控制器工作得很好…但是我如何完全反转脚手架呢?好的,我知道了。也许我打错了什么。我刚刚运行了
rails destroy scaffold lalalal
,效果很好。@marcamillion一定是那个额外的“L”。删除与gem安装相关的文件,比如
rails generate:install
@doug,我认为这是不可能的。您最好的办法是使用
-f
标志重新运行生成器,强制它重新创建/重新编辑文件…然后您可以看到它创建/更改了哪些文件,并继续手动删除它们。我认为这是最好的答案。除非您希望此答案是选定的正确答案,否则请不要总结您的操作。