gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:54:04 27 4
gpt4 key购买 nike

我需要构建一个将使用 freeswitcher 的 ruby​​ 守护进程freeswitch 的 eventmachine 库。

几天以来,我一直在网上寻找构建 ruby​​ 守护程序的最佳解决方案,该守护程序将集成我的 Rails 环境,特别是我的事件记录模型。我看过优秀的 Ryan Bates 截屏视频(第 129 集自定义守护程序),但我不确定这是否仍然是一个实际的解决方案。

我如何以好的方式做到这一点?

最佳答案

我一直在为我的 Rails 环境构建守护进程。守护进程 gem 确实完成了所有工作。作为示例,这是从我最新的 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

这为您提供了所有常用的脚本/您的守护进程 [run|start|stop|restart],并且您可以在“--”之后将参数传递给守护进程。在生产环境中,您需要使用 god 或 monit 来确保守护进程在死机时重新启动。玩得开心!

关于ruby-on-rails - 构建一个集成我的 rails 环境的 ruby​​ 守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653774/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com