我需要构建一个
ruby守护进程,它将使用
freeswitcher eventmachine库进行freeswitch.
几天以来我一直在网上寻找最佳解决方案来构建一个可以整合我的rails环境的ruby守护进程,特别是我的活跃记录模型.我看一下优秀的Ryan Bates截屏视频(剧集129自定义守护进程),但我不确定它仍然是一个真正的解决方案.
有没有人知道这样做的好方法?
感谢你的帮助.
解决方法
我一直为我的rails环境构建守护进程.守护进程宝石真正完成了它的所有工作.这是从我最新的rails应用程序(script / yourdaemon)中提取的一个小模板,作为示例.我使用eventmachine gem,但想法是一样的:
#!/usr/bin/env ruby require 'rubygems' require 'daemons' class YourDaemon def initialize end def dostuff logger.info "About to do stuff..." EventMachine::run { # Your code here } end def logger @@logger ||= ActiveSupport::BufferedLogger.new("#{RAILS_ROOT}/log/your_daemon.log") end end dir = File.expand_path(File.join(File.dirname(__FILE__),'..')) daemon_options = { :multiple => false,:dir_mode => :normal,:dir => File.join(dir,'tmp','pids'),:backtrace => true } Daemons.run_proc('your_daemon',daemon_options) do if ARGV.include?('--') ARGV.slice! 0..ARGV.index('--') else ARGV.clear end Dir.chdir dir require File.expand_path(File.join(File.dirname(__FILE__),'..','config','environment')) YourDaemon.new.dostuff end
这将为您提供所有常用脚本/ yourdaemon [run | start | stop | restart],并且您可以在“ – ”之后将参数传递给守护程序.在生产中你会想要使用god或monit来确保守护进程在它死亡时重新启动.玩得开心!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。