如何在不使用`at_exit`的情况下确保在Rails退出之前运行一个操作?

Gra*_*son 6 ruby ruby-on-rails

我有一个操作,我需要在我的Rails应用程序死亡之前在我的rails应用程序中执行.我可以在Rails中使用这个钩子吗?类似于at_exit我猜的东西.

the*_*Man 6

红宝石本身支持两个钩子,BEGIN并且END,这是在脚本的开始运行,并为解释器停止运行它.

有关更多信息,请参阅" Ruby的BEGIN做什么? ".

BEGIN文件说:

通过代码块指定在程序的顺序执行开始之前无条件执行的代码.有时用于模拟对方法的前向引用.

puts times_3(gets.to_i)

BEGIN {
  def times_3(n)
    n * 3
  end
}
Run Code Online (Sandbox Code Playgroud)

END单证说:

通过代码块指定在程序终止之前执行的代码.

END { puts "Bye!" }
Run Code Online (Sandbox Code Playgroud)