1

常に実行する必要のあるプログラムを作成しました。それは現在scripts/mailmanに住んでいます。私はこれを行うことから始めます:

sudo bundle exec rails runner script/mailman &

サーバーからログアウトした後、シームが停止します。これが私の郵便配達員プログラムの内容です:

#!/usr/bin/env ruby
require "rubygems"
require "bundler/setup"
require "mailman"
require "rb-inotify"

Mailman.config.logger = Logger.new("/var/log/mailman.log")
Mailman.config.maildir = '/var/mail'
require File.dirname(__FILE__) + "/../../config/application"
Rails.application.require_environment!
Mailman::Application.run do
   default do
       begin
           Bin.receive_mail(message)
       end
   end
end

このプログラムを自動的に開始し、常に実行し続けるための良い方法は何ですか?私はこれをUbuntuで実行しています。

4

2 に答える 2

2

私はdaemons宝石がこれにうまく機能することを発見しました。

投稿されたコードがにあると仮定するとscript/mailman.rb、ファイルを作成できますscript/mailman_ctl

#!/usr/bin/env ruby
require 'rubygems'
require 'daemons'
Daemons.run('mailman.rb')

私は通常{:backtrace => true, :monitor => true}、呼び出しにオプションを提供するDaemons.runので、プロセスが停止した場合に何が起こったのかをよりよく理解できます。

于 2013-03-14T05:24:01.900 に答える
2

ここで提案されているように、「デーモン」gemを使用します
。Rubyプログラムをデーモンにしますか?

RubyToolboxhttps : //www.ruby-toolbox.com/categories/daemonizingでも非常に人気があるようです

于 2013-03-14T05:24:07.057 に答える