Daemonizing Mailman app

时间:2012-10-29 00:51:24

标签: ruby daemon daemons mailman-gem

通过运行rails runner lib/daemons/mailman_server.rb启动我的邮递员应用程序正常。

从我的守护程序脚本和命令bundle exec rails runner script/daemon run mailman_server.rb开始时,脚本会生成错误:

.rvm/gems/ruby-1.9.3-p194/gems/mailman-0.5.3/lib/mailman/route/conditions.rb:21:in `match': undefined method `each' for nil:NilClass (NoMethodError)

我的代码如下:

LIB /守护进程/ mailman_server.rb

require 'mailman'

# Config Mailman
Mailman.config.ignore_stdin = false
Mailman.config.graceful_death = true
Mailman.config.poll_interval = 15
Mailman.config.logger = Logger.new File.expand_path("../../../log/mailman.log", __FILE__)

Mailman.config.pop3 = {
  :username => 'alias@mygoogleapp.com',
  :password => 'password',
  :server   => 'pop.gmail.com',
  :port     => 995,
  :ssl      => true
}

# Run the mailman
Mailman::Application.run do
  from('%email%').to('alias+q%id%@mygoogleapp.com') do |email, id|
    begin
      # Get message without headers to pass to add_answer_from_email
      if message.multipart?
        reply = message.text_part.body.decoded
      else
        reply = message.body.decoded
      end

      # Call upon the question to add answer to his set
      Question.find(id).add_answer_from_email(email, reply)
    rescue Exception => e
      Mailman.logger.error "Exception occured while receiving message:\n#{message}"
      Mailman.logger.error [e, *e.backtrace].join("\n")
    end
  end
end

我的脚本/守护程序文件是:

#!/usr/bin/env ruby
require 'rubygems'
require "bundler/setup"
require 'daemons'

ENV["APP_ROOT"] ||= File.expand_path("#{File.dirname(__FILE__)}/..")

script = "#{ENV["APP_ROOT"]}/lib/daemons/#{ARGV[1]}"

Daemons.run(script, dir_mode: :normal, dir: "#{ENV["APP_ROOT"]}/tmp/pids") 

有关为什么它作为守护进程失败的任何见解?

0 个答案:

没有答案