加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 构建一个集成了我的rails环境的ruby守护进程

发布时间:2020-12-17 04:37:55 所属栏目:百科 来源:网络整理
导读:我需要构建一个 ruby守护进程,它将使用 freeswitcher eventmachine库进行freeswitch. 几天以来我一直在网上寻找最佳解决方案来构建一个可以整合我的rails环境的ruby守护进程,特别是我的活跃记录模型.我看一下优秀的Ryan Bates截屏视频(剧集129自定义守护进程
我需要构建一个 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来确保守护进程在它死亡时重新启动.玩得开心!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读