为什么`rake db:drop`失败时退出状态为0,并且不引发错误?

西蒙·莱普金

我惊讶地发现,当rake db:drop(并且假设是Rails的其他内置raketasks)失败时,bash状态代码为0。

$ rake db:drop
could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
...
$ echo $?
0

也许更令人惊讶,当从Rails内部调用任务时,它甚至没有引发错误。

2.3.0 :001 > begin
2.3.0 :002 >   Rake::Task["db:drop"].invoke
2.3.0 :003 >   puts "After raketask invoked"
2.3.0 :004 > end
could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
...
After raketask invoked

这是故意的吗?深入研究源代码,这似乎只是简单地调用execute "DROP DATABASE IF EXISTS #{quote_table_name(name)}"在失败时引发错误我想念什么?

克里斯·库姆勒(Kris Kumler)

这是在Rails 5中解决的问题:PR#19924对于创建和删除失败,以状态“ 1”显式退出

最好的解决方案是使用Rails5。:)否则,您将陷入以下问题之一:

  • 检查数据库是否以另一种方式删除(可能会错过其他错误)。
  • 捕获stderr输出并检查
  • Monkeypatch ActiveRecord :: Tasks :: DatabaseTasks :: drop

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么 rake jasmine 通过但 rake jasmine:ci 失败并显示 TypeError: undefined is not a function?

来自分类Dev

为什么“ rake route”命令还运行工厂内部的rake db:seed命令?

来自分类Dev

如果我在 `rake db:schema:load` 之后立即运行 `rake db:migrate`,为什么 schema.rb 会被修改?

来自分类Dev

为什么`rake db:seed`失败并显示“不知道如何创建任务'db:seed:original'”?

来自分类Dev

在我向Procfile添加rake asset:precompile任务时,为什么Foreman退出?

来自分类Dev

为什么执行rake db:schema:load时,SimpleCov会触发?

来自分类Dev

为什么我感到困惑“当命令在BASH中失败时,退出状态代码为0”

来自分类Dev

从线程中的rake任务运行时,为什么http请求失败?

来自分类Dev

复制分配函数不返回任何内容时,为什么编译器不引发错误?

来自分类Dev

为什么<!-不引发语法错误?

来自分类Dev

当我为对象分配数字时,为什么TypeScript不会引发错误?

来自分类Dev

为什么在删除和创建数据库时rake数据库任务的行为会很奇怪?

来自分类Dev

为什么缺少DataContract时WCF不会引发错误?

来自分类Dev

rake db:migrate有什么错误?

来自分类Dev

当在Spark中传递格式错误的时区字符串时,为什么from_utc_timstamp不引发错误?

来自分类Dev

为什么在脚本开始时退出状态始终为0?

来自分类Dev

Heroku在db:migrate rake上引发错误

来自分类Dev

Heroku在db:migrate rake上引发错误

来自分类Dev

当数组必须为某种类型时,为什么flowjs不会在空数组上引发错误?

来自分类Dev

当我尝试为iframe src属性构建URL时,AngularJS为什么会引发错误?

来自分类Dev

为什么Rails要求我一次又一次运行rake db:migrate RAILS_ENV = test?

来自分类Dev

从Rails 3.2升级到Rails 4时,为什么rake给出了“未初始化的常量ActiveModel :: ForbiddenAttributesProtection”?

来自分类Dev

即使命令错误,为什么退出代码为0?

来自分类Dev

为什么OpenCV入门视频教程中的示例会引发错误,并且首选解决方法是什么?

来自分类Dev

尝试使用telnet时出现连接被拒绝的错误,并且不确定为什么

来自分类Dev

为什么++ []会引发错误,但是++ [[]] [0]会产生1?

来自分类Dev

为什么此代码不引发NullPointerException?

来自分类Dev

为什么此代码不引发ConcurrentModificationException?

来自分类Dev

为什么此列表不引发ClassCastException?

Related 相关文章

  1. 1

    为什么 rake jasmine 通过但 rake jasmine:ci 失败并显示 TypeError: undefined is not a function?

  2. 2

    为什么“ rake route”命令还运行工厂内部的rake db:seed命令?

  3. 3

    如果我在 `rake db:schema:load` 之后立即运行 `rake db:migrate`,为什么 schema.rb 会被修改?

  4. 4

    为什么`rake db:seed`失败并显示“不知道如何创建任务'db:seed:original'”?

  5. 5

    在我向Procfile添加rake asset:precompile任务时,为什么Foreman退出?

  6. 6

    为什么执行rake db:schema:load时,SimpleCov会触发?

  7. 7

    为什么我感到困惑“当命令在BASH中失败时,退出状态代码为0”

  8. 8

    从线程中的rake任务运行时,为什么http请求失败?

  9. 9

    复制分配函数不返回任何内容时,为什么编译器不引发错误?

  10. 10

    为什么<!-不引发语法错误?

  11. 11

    当我为对象分配数字时,为什么TypeScript不会引发错误?

  12. 12

    为什么在删除和创建数据库时rake数据库任务的行为会很奇怪?

  13. 13

    为什么缺少DataContract时WCF不会引发错误?

  14. 14

    rake db:migrate有什么错误?

  15. 15

    当在Spark中传递格式错误的时区字符串时,为什么from_utc_timstamp不引发错误?

  16. 16

    为什么在脚本开始时退出状态始终为0?

  17. 17

    Heroku在db:migrate rake上引发错误

  18. 18

    Heroku在db:migrate rake上引发错误

  19. 19

    当数组必须为某种类型时,为什么flowjs不会在空数组上引发错误?

  20. 20

    当我尝试为iframe src属性构建URL时,AngularJS为什么会引发错误?

  21. 21

    为什么Rails要求我一次又一次运行rake db:migrate RAILS_ENV = test?

  22. 22

    从Rails 3.2升级到Rails 4时,为什么rake给出了“未初始化的常量ActiveModel :: ForbiddenAttributesProtection”?

  23. 23

    即使命令错误,为什么退出代码为0?

  24. 24

    为什么OpenCV入门视频教程中的示例会引发错误,并且首选解决方法是什么?

  25. 25

    尝试使用telnet时出现连接被拒绝的错误,并且不确定为什么

  26. 26

    为什么++ []会引发错误,但是++ [[]] [0]会产生1?

  27. 27

    为什么此代码不引发NullPointerException?

  28. 28

    为什么此代码不引发ConcurrentModificationException?

  29. 29

    为什么此列表不引发ClassCastException?

热门标签

归档