-
请问,在Rails应用中 如何 监听Startup 和Shutdown?35
请问,在Rails应用中 如何 监听Startup 和Shutdown?
就像在 java web应用中使用servlet 的 listener一样,我需要在 Rails 中 监听 应用的启动和关闭,
请问应该怎么实现呢?
我知道,把一个 .rb文件 放在 APP\config\initializers 目录下,Rails启动时会自动运行它,权且当这是 监听应用Startup的方法吧,
那么 Shutdown 呢?在开发模式下,我总是 使用 Ctrl + C 结束 Rails应用, 我不知道 有什么好的方法能让我抓到 应用被关闭的事件。
请熟悉 Rails 的朋友 给点建议。
难道是我的想法错了么? Rails 和 Java在处理此需求时的方法 有什么不同吗?
我相信在Rails中应用中也会有像servlet listener那样的需求场景,Rails是如何应对的呢?
我一定要等到这个问题 有解决方法。
问题补充:cxh116 写道监听器在JAVA中是在servlet中定义的,ruby中类似于servelt的rack并没有定义类似监听器的技术,不晓得其它的特定应用服务器有实现没有
像ruby这样活的元编程语言,你可以轻松的进行AOP编程的
嗯,你的意思是 我们通过 AOP 在 startup / shutdown 时 向外调用,
那么 这个 AOP的切入点是在哪里呢?
最好是在 Rails 的某个代码中,而不是在web server里,因为 app 可能会被部署在 完全不同的 web server 中。
是否 可以把 rack 看成一个 server 容器的规范,
问题补充:java-admin 写道1....
2.同样在该目录下 重写 Ruby Kernel 的一个方法(at_exit) 去监听 rails 的关闭。
A.文件名:awe_servlet_context_listener.rb
B.文件内容如下:
puts 'start......~~~~~~~~~~~~~~~~~~~~~~~~'
at_exit do
puts 'bye...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
end
C.存放目录 /config/initializers
哈,谢谢,这似乎 是现在 唯一能勉强解决我问题的方法。
但这并不是“重写” at_exit 方法,而是仅仅调用它...
问题补充:cxh116 写道@java-admin 的方法应该可以实现
对应用服务器的启动流程不是很了解,不知道在FASTCGI这样的多进程的时候,会出现一个什么样的情况. 每个进程就是一个RUBY VM,到时会进程退出的时候会调用at_exit吗?
我觉得不应该用SERVLET的场景来思考RACK
在RACK中,并没有定义像SERVLET里中application对象,所以不存在服务器的既出要保存application里的数据.
你可以把它存到外面数据里面,比如MEMCACHE,或数据库
是的,at_exit方法 确实和部署方式 有很大的关系。
事实上,我并不是要保存数据,而是在 rails 启动时,自动跑起来一个 计划任务的服务(和 rails app 在同一进程下 的 另外一个线程),更重要的是我需要在 app关闭时 停止它
2011年11月15日 19:35
5个答案 按时间排序 按投票排序
-
采纳的答案
1.启动,在/config/initializers 下创建一个文件,然后监听rails的启动。
2.同样在该目录下 重写 Ruby Kernel 的一个方法(at_exit) 去监听 rails 的关闭。
A.文件名:awe_servlet_context_listener.rb
B.文件内容如下:
puts 'start......~~~~~~~~~~~~~~~~~~~~~~~~'
at_exit do
puts 'bye...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
end
C.存放目录 /config/initializers
2011年11月24日 15:23
-
后台任务你可以看一下现在的gem满足你的需求不
https://www.ruby-toolbox.com/categories/Background_Jobs
Resque和Delayed_job都是挺不错的2011年11月28日 14:02
-
@java-admin 的方法应该可以实现
对应用服务器的启动流程不是很了解,不知道在FASTCGI这样的多进程的时候,会出现一个什么样的情况. 每个进程就是一个RUBY VM,到时会进程退出的时候会调用at_exit吗?
我觉得不应该用SERVLET的场景来思考RACK
在RACK中,并没有定义像SERVLET里中application对象,所以不存在服务器的既出要保存application里的数据.
你可以把它存到外面数据里面,比如MEMCACHE,或数据库2011年11月25日 09:38
-
监听器在JAVA中是在servlet中定义的,ruby中类似于servelt的rack并没有定义类似监听器的技术
不晓得其它的特定应用服务器有实现没有
像ruby这样活的元编程语言,你可以轻松的进行AOP编程的2011年11月23日 15:34
-
好像RUBY的应用服务器没有容器这个概念 它更加像CGI 来个请求 运行一个进程去执行 执行完后 进程销毁掉
所以 ruby的应用在线上运行时,也可以随时重启服务器2011年11月23日 15:23
相关推荐
【Ruby-Slackathon在Rails应用程序中构建slack集成的简单方法】 在当今的协作环境中,Slack已经成为团队沟通的重要工具。通过将Slack与Rails应用程序集成,开发者可以创建自定义的自动化工作流程,提高团队效率并...
总结来说,这个示例展示了如何在Rails应用程序中有效地利用React进行前端开发,以及如何通过webpack进行模块管理和优化。这种混合开发模式结合了Rails的强大后端能力和React的高效前端渲染,为现代Web应用提供了强大...
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...
Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1. **SSL简介**:SSL(Secure Sockets Layer)是一种网络安全协议,用于加密...
loaf - 在Rails应用中管理和显示面包屑导航
标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...
在本项目"rails应用--导航栏实例工程"中,我们将探讨如何在Ruby on Rails框架下构建一个实用的导航栏。Rails是一个流行的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使得开发过程更加高效且结构...
它涵盖了从Rails的历史和版本发展到如何在不同操作系统上安装Rails,再到如何使用Rails进行Web应用的开发。此外,文档还包含了数据库的配置、MVC架构模式的应用,以及如何处理数据、实现CRUD操作和Web服务的相关知识...
在Rails中,开发者可以快速构建功能丰富的、数据驱动的Web应用。这本书会详细讲解如何利用Rails的MVC(Model-View-Controller)架构模式来组织代码,其中Model代表数据模型,View负责展示,Controller处理业务逻辑并...
如何在我的 Rails 应用程序中启用跟踪?require 'redis_analytics'# configure your redis_connection (mandatory) and redis_namespace (optional)RedisAnalytics.configure do |configuration| configuration....
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
`GoOnRails`是专门为Rails开发者设计的一个生成器,它允许在Rails应用中集成Go代码,创建Go API服务。这个工具简化了在Rails项目中使用Go进行后端处理的流程,使开发者可以利用Go的性能优势处理高并发请求,同时保留...
Ruby-APITaster是一款强大的工具,专为Rails应用的API测试和可视化设计。它使得开发者能够迅速地对API接口进行互动式测试,从而确保API的功能正确性和性能稳定性。这款工具的出现,极大地简化了API测试过程,提高了...
Ruby-Karafka是一款针对Apache Kafka构建的Ruby和Rails应用程序开发框架,它为开发者提供了一种高效、灵活的方式来处理消息队列中的数据流。Kafka是一个分布式流处理平台,常用于实时数据管道和构建实时分析应用。...
Google Sign-In for Rails 实现将Google登录集成到您的Rails应用中
这些服务器同样支持Rails应用,并且在性能和稳定性方面有更出色的表现。 总的来说,了解Mongrel对于理解Rails的历史和早期的部署实践非常重要,但现代开发环境中,选择更加活跃和优化的服务器软件更为常见。对于...
在Ruby on Rails中文指南中,你将全面学习到如何利用这个强大的框架来构建动态的、数据驱动的Web应用程序。 首先,让我们深入理解Rails的核心概念: 1. **路由(Routes)**:Rails的路由系统是应用程序的导航蓝图...
在Ruby on Rails开发中,实体关系图(Entity Relationship Diagram,简称ERD)是一种非常有用的工具,它可以帮助开发者直观地理解数据库中的模型关系。"Rails Erd"是一个Ruby gem,专门用于为Rails应用程序自动生成...
在Rails应用中,"transcribable"似乎是一个用于处理音频转录或文本处理的库,因为从"从释放的文件中提取"这个描述来看,它可能涉及到读取、解析和处理来自.zip文件的数据。让我们深入了解一下这个开源项目可能涉及的...
这可能涉及在Gemfile中添加相关gem,然后执行`bundle install`命令,以及在应用的JavaScript文件中引入Ext.js库。 接着,作者会讲解如何创建模型(province, city, district)来存储中国的省市区数据。这通常包括...