请问,在Rails应用中 如何 监听Startup 和Shutdown?

问题描述

请问,在Rails应用中 如何 监听Startup 和Shutdown?就像在 java web应用中使用servlet 的 listener一样,我需要在 Rails 中 监听 应用的启动和关闭,请问应该怎么实现呢?我知道,把一个 .rb文件 放在 APPconfiginitializers 目录下,Rails启动时会自动运行它,权且当这是 监听应用Startup的方法吧,那么 Shutdown 呢?在开发模式下,我总是 使用 Ctrl + C 结束 Rails应用, 我不知道 有什么好的方法能让我抓到 应用被关闭的事件。请熟悉 Rails 的朋友 给点建议。难道是我的想法错了么? Rails 和 Java在处理此需求时的方法 有什么不同吗?我相信在Rails中应用中也会有像servlet listener那样的需求场景,Rails是如何应对的呢?我一定要等到这个问题 有解决方法。 问题补充:cxh116 写道

解决方案

1.启动,在/config/initializers 下创建一个文件,然后监听rails的启动。2.同样在该目录下 重写 Ruby Kernel 的一个方法(at_exit) 去监听 rails 的关闭。A.文件名:awe_servlet_context_listener.rbB.文件内容如下:puts 'start......~~~~~~~~~~~~~~~~~~~~~~~~'at_exit do puts 'bye...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'endC.存放目录 /config/initializers
解决方案二:
后台任务你可以看一下现在的gem满足你的需求不 https://www.ruby-toolbox.com/categories/Background_JobsResque和Delayed_job都是挺不错的
解决方案三:
@java-admin 的方法应该可以实现 对应用服务器的启动流程不是很了解,不知道在FASTCGI这样的多进程的时候,会出现一个什么样的情况. 每个进程就是一个RUBY VM,到时会进程退出的时候会调用at_exit吗?我觉得不应该用SERVLET的场景来思考RACK在RACK中,并没有定义像SERVLET里中application对象,所以不存在服务器的既出要保存application里的数据. 你可以把它存到外面数据里面,比如MEMCACHE,或数据库
解决方案四:
监听器在JAVA中是在servlet中定义的,ruby中类似于servelt的rack并没有定义类似监听器的技术 不晓得其它的特定应用服务器有实现没有 像ruby这样活的元编程语言,你可以轻松的进行AOP编程的
解决方案五:
好像RUBY的应用服务器没有容器这个概念 它更加像CGI 来个请求 运行一个进程去执行 执行完后 进程销毁掉 所以 ruby的应用在线上运行时,也可以随时重启服务器

时间: 2024-10-04 18:11:14

请问,在Rails应用中 如何 监听Startup 和Shutdown?的相关文章

浅析如何在tnsnames.ora中配置监听

以下是对如何在tnsnames.ora中配置监听进行了详细的分析介绍,需要的朋友可以过来参考下   tnsnames.ora所在位置:D:Installedoracleproduct11.1.0db_1NETWORKADMINtnsnames.ora也就是说在product中 只有配置了监听之后才可以登录到数据库中 复制代码 代码如下: TOTO =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 这里是IP地址)(PORT = 1

AngularJS中watch监听用法分析_AngularJS

本文实例讲述了AngularJS中watch监听用法.分享给大家供大家参考,具体如下: ANGULAR 监听使用: 当angular数据模型发生变化时,我们需要如果需要根据他的变化触发其他的事件. $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEquality); watchExpression 需要监控的表达式 listener 处理函数,函数参数如下  function

Android零基础入门第34节:Android中基于监听的事件处理

原文:Android零基础入门第34节:Android中基于监听的事件处理    上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本期继续来学习其他四种事件监听器.     一.使用内部类作为事件监听器       和上面的匿名内部类不同,使用内部类可以在当前类中复用该监听器类:因为监听器类是外部类的内部类,所以可以自由访问外部类的所有界面组件,这也是内部类的两个优势.     接下来通过一个简单的示例程序来学习Andro

系统中实时监听android的网络状态并且给予处理

问题描述 系统中实时监听android的网络状态并且给予处理 比如 在一个android小程序中 发现网络断了就给予页面跳转 解决方案 分几个步骤 1.监测手机上的网络连接状态 2.及时连接网络不一定可达,尝试连接服务器,如果通,则网路通. 解决方案二: 周期性检测网络连接>. 解决方案三: /** * 网络请求失败处理 */ public void requestNetDataFail(ErrorInfo errorInfo) { switch (errorInfo.errorCode) {

datagrid中combobox监听事件

问题描述 datagrid中combobox监听事件 解决方案 <th data-options="field:'productid',width:100, formatter:function(value,row){ return row.productname; }, editor:{ type:'combobox', options:{ valueField:'productid', textField:'productname', method:'get', url:'produc

java监听事件-java中为什么监听方法的方法参数没有对象,详细代码如下

问题描述 java中为什么监听方法的方法参数没有对象,详细代码如下 b.setOnClickListener.( new On ClickListnener( ) {方法体省略若干代码 } ); java中为什么监听方法的方法参数没有对象,详细代码如上 解决方案 b.setOnClickListener.( new On ClickListnener( ) {方法体省略若干代码 } ); Listener.这里多了一个点吧. 这里b.setOnClickListener需要一个对象,而new O

iOS开发中Swift3 监听UITextView文字改变的方法(三种方法)_IOS

在项目中使用文本输入框出UITextField之外还会经常使用 UITextView ,难免会有需求监听UITextView文本框内文本数量.下面介绍在swift3中两种常用方式 方式一: 全局通知 1.注册通知 在合适位置注册监听UITextView文本变化的全局通知 //UITextView 监听开始输入的两种方法 //方法一:通知 NotificationCenter.default.addObserver(self, selector: #selector(ComposeVC.textV

gallery 滑动监听事件-Gallery中如何监听滑动结束之后所停的那个位置

问题描述 Gallery中如何监听滑动结束之后所停的那个位置 最近要用到获取Gallery停下之后所在的位置,不晓得怎么弄.有谁做过的来教教我啊! 解决方案 http://www.devdiv.com/Android-_gallery_-thread-103265-1-1.html

从生活中领悟监听模式——坑爹的热水器

[故事剧情] 刚刚大学毕业的Tony只身来到北京这个硕大的城市,开始了北漂的生活.但刚刚毕业的他身无绝技.包无分文,为了生活只能住在沙河镇一个偏僻的村子里,每天坐着程序员专线(13号线)来回穿梭于昌平区与西城区-- 在一个寒冷的冬天,下班之后要坐2个小时的地铁+公交才能回到住处,Tony拖着疲惫的身体回到家.准备洗一个热水澡暖暖身体,耐何简陋的房子中用的还是90年代的热水器.因为热水器没有警报更没有自动切换模式的功能,所以烧热水必须得守着:不然时间长了成杀猪烫,时间短了又冷成狗.无奈的Tony背