2012-10-25 67 views
0

我有以下簡單腳本,它檢查電子郵件帳戶,如果有新郵件,它會轉發電子郵件併發送SMS。如果腳本運行時沒有Process.daemon,則會發生這種情況。當它被添加並且電子郵件在電子郵件帳戶被接收時,沒有任何事情發生(沒有任何東西被轉發,並且沒有SMS被髮送)並且控制檯中沒有錯誤消息。有什麼建議麼?添加Process.daemon時Ruby腳本未運行

#!/usr/bin/env ruby 
require "bundler/setup" 
require "mailman" 
require "twilio-ruby" 

Mailman.config.pop3 = { 
    :username => '[email protected]', 
    :password => 'password', 
    :server => 'pop.gmail.com', 
    :port  => 995, 
    :ssl  => true 
} 

Mailman.config.poll_interval = 60 

Mailman::Application.run do 
    default do 
    begin 
     Ticket.receive_mail(message) 
     MailForwarder.forwarded_email(message).deliver 
     @account_sid = 'xxxxxxxxxxx' 
     @auth_token = 'xxxxxxxxxx' 
     @client = Twilio::REST::Client.new(@account_sid, @auth_token) 
     @account = @client.account 
     @sms = @account.sms.messages.create(
     :from => '+1111111111', 
     :to => '+122222222', 
     :body => message.subject 
    ) 
     puts @sms 
     puts "#{message.subject}" 
    rescue Exception => e 
     Mailman.logger.error "Exception occurred whle receiving message:\n#{message}" 
     Mailman.logger.error [e, *e.backtrace].join("\n") 
    end 
    end 
    Process.daemon 
end 
+0

你說「無法工作」,但以何種方式究竟它無法正常工作? –

+0

該腳本檢查一個電子郵件帳戶,如果有新郵件,它將轉發電子郵件併發送SMS,當腳本運行時不使用Process.daemon時會發生這種情況。當它被添加並且在電子郵件帳戶收到電子郵件時,不會發送任何內容,也不會發送SMS。 – Nick5a1

回答

1

我相信你需要設置你的腳本作爲一個守護你啓動郵遞員應用程序之前。我做了一些測試,如果我在調用Mailman :: Application.run之前調用Process.daemon,但它工作正常,但如果我把它放在你已有的地方,它就不起作用。

於是我只好它:

.... 

Mailman.config.poll_interval = 15 

Process.daemon 

Mailman::Application.run do 

default do 


end 

end