0 0

请问,在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个答案 按时间排序 按投票排序

0 0

采纳的答案

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
0 0

后台任务你可以看一下现在的gem满足你的需求不

  https://www.ruby-toolbox.com/categories/Background_Jobs

Resque和Delayed_job都是挺不错的

2011年11月28日 14:02
0 0

@java-admin 的方法应该可以实现
  对应用服务器的启动流程不是很了解,不知道在FASTCGI这样的多进程的时候,会出现一个什么样的情况. 每个进程就是一个RUBY VM,到时会进程退出的时候会调用at_exit吗?

我觉得不应该用SERVLET的场景来思考RACK
在RACK中,并没有定义像SERVLET里中application对象,所以不存在服务器的既出要保存application里的数据.
  你可以把它存到外面数据里面,比如MEMCACHE,或数据库

2011年11月25日 09:38
0 0

监听器在JAVA中是在servlet中定义的,ruby中类似于servelt的rack并没有定义类似监听器的技术

  不晓得其它的特定应用服务器有实现没有


像ruby这样活的元编程语言,你可以轻松的进行AOP编程的

2011年11月23日 15:34
0 0

好像RUBY的应用服务器没有容器这个概念  它更加像CGI  来个请求  运行一个进程去执行  执行完后 进程销毁掉

所以  ruby的应用在线上运行时,也可以随时重启服务器

2011年11月23日 15:23

相关推荐

    Ruby-Slackathon在Rails应用程序中构建slack集成的简单方法

    【Ruby-Slackathon在Rails应用程序中构建slack集成的简单方法】 在当今的协作环境中,Slack已经成为团队沟通的重要工具。通过将Slack与Rails应用程序集成,开发者可以创建自定义的自动化工作流程,提高团队效率并...

    Ruby-这是一个在Rails应用程序中使用React并使用webpack的示例

    总结来说,这个示例展示了如何在Rails应用程序中有效地利用React进行前端开发,以及如何通过webpack进行模块管理和优化。这种混合开发模式结合了Rails的强大后端能力和React的高效前端渲染,为现代Web应用提供了强大...

    使用Aptana+Rails开发Rails Web应用(中文)

    在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...

    在Rails中使用SSL

    Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1. **SSL简介**:SSL(Secure Sockets Layer)是一种网络安全协议,用于加密...

    Ruby-loaf在Rails应用中管理和显示面包屑导航

    loaf - 在Rails应用中管理和显示面包屑导航

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...

    rails应用--导航栏实例工程

    在本项目"rails应用--导航栏实例工程"中,我们将探讨如何在Ruby on Rails框架下构建一个实用的导航栏。Rails是一个流行的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使得开发过程更加高效且结构...

    Ruby+on+Rails快速Web应用开发实战.pdf

    它涵盖了从Rails的历史和版本发展到如何在不同操作系统上安装Rails,再到如何使用Rails进行Web应用的开发。此外,文档还包含了数据库的配置、MVC架构模式的应用,以及如何处理数据、实现CRUD操作和Web服务的相关知识...

    应用Rails进行敏捷Web开发中文第三版

    在Rails中,开发者可以快速构建功能丰富的、数据驱动的Web应用。这本书会详细讲解如何利用Rails的MVC(Model-View-Controller)架构模式来组织代码,其中Model代表数据模型,View负责展示,Controller处理业务逻辑并...

    使用 Redis 对 Rails 应用进行 Web 分析.zip

    如何在我的 Rails 应用程序中启用跟踪?require 'redis_analytics'# configure your redis_connection (mandatory) and redis_namespace (optional)RedisAnalytics.configure do |configuration| configuration....

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板.zip

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...

    Ruby-GoOnRails使用Rails生成器来生成一个Golang应用

    `GoOnRails`是专门为Rails开发者设计的一个生成器,它允许在Rails应用中集成Go代码,创建Go API服务。这个工具简化了在Rails项目中使用Go进行后端处理的流程,使开发者可以利用Go的性能优势处理高并发请求,同时保留...

    Ruby-APITaster一种快速而简单的方法来可视化测试你的Rails应用API

    Ruby-APITaster是一款强大的工具,专为Rails应用的API测试和可视化设计。它使得开发者能够迅速地对API接口进行互动式测试,从而确保API的功能正确性和性能稳定性。这款工具的出现,极大地简化了API测试过程,提高了...

    Ruby-karafka基于ApacheKafka的Ruby和Rails应用程序开发框架

    Ruby-Karafka是一款针对Apache Kafka构建的Ruby和Rails应用程序开发框架,它为开发者提供了一种高效、灵活的方式来处理消息队列中的数据流。Kafka是一个分布式流处理平台,常用于实时数据管道和构建实时分析应用。...

    Ruby-GoogleSignInforRails实现将Google登录集成到您的Rails应用中

    Google Sign-In for Rails 实现将Google登录集成到您的Rails应用中

    Rails 中mongrel的安装

    这些服务器同样支持Rails应用,并且在性能和稳定性方面有更出色的表现。 总的来说,了解Mongrel对于理解Rails的历史和早期的部署实践非常重要,但现代开发环境中,选择更加活跃和优化的服务器软件更为常见。对于...

    Ruby on Rails中文指南

    在Ruby on Rails中文指南中,你将全面学习到如何利用这个强大的框架来构建动态的、数据驱动的Web应用程序。 首先,让我们深入理解Rails的核心概念: 1. **路由(Routes)**:Rails的路由系统是应用程序的导航蓝图...

    Ruby-RailsErd为Rails应用程序生成实体关系图

    在Ruby on Rails开发中,实体关系图(Entity Relationship Diagram,简称ERD)是一种非常有用的工具,它可以帮助开发者直观地理解数据库中的模型关系。"Rails Erd"是一个Ruby gem,专门用于为Rails应用程序自动生成...

    transcribable, 在你的Rails 应用包中,从释放的文件中提取.zip

    在Rails应用中,"transcribable"似乎是一个用于处理音频转录或文本处理的库,因为从"从释放的文件中提取"这个描述来看,它可能涉及到读取、解析和处理来自.zip文件的数据。让我们深入了解一下这个开源项目可能涉及的...

    Rails中应用Ext.tree:以中国的省市地区三级联动选择为例

    这可能涉及在Gemfile中添加相关gem,然后执行`bundle install`命令,以及在应用的JavaScript文件中引入Ext.js库。 接着,作者会讲解如何创建模型(province, city, district)来存储中国的省市区数据。这通常包括...

Global site tag (gtag.js) - Google Analytics