2013-02-10 65 views
0

我有一個簡單的ruby文件,它使用Eventmachine作爲守護程序。它看起來像這樣:EventMachine運行循環中的Linux環境變量

... 
EM.run { 
    Signal.trap('INT') { @log.debug("trapped INT signal"); stop(true) } 
    Signal.trap('TERM') { @log.debug("trapped TERM signal"); stop(true) } 

    EM.add_periodic_timer 60 do 
     puts ENV['TEST_ENV'] 
    end 
} 
... 

它運行後,我什麼也沒有打印的TEST_ENV時echo $TEST_ENV清楚地顯示了過程開始之前的變量定義。

如何確保守護進程可以看到環境變量?

+3

你沒忘了'出口TEST_ENV'? – 2013-02-10 18:58:37

+0

不,我可能應該提到環境變量在EM循環之外設置並可用。雖然我提到echo $ TEST_ENV清楚地顯示變量已被定義。 – Khash 2013-02-11 08:28:28

回答

0

所有我真的可以說,除非有更多的,你是不是說明是例子,工作對我來說:

petunia ~/t $ cat t.rb 
#!/usr/bin/env ruby 

require 'rubygems' 
require 'eventmachine' 

EM.run { 
    EM.add_periodic_timer(5) do 
    puts ENV['TEST_ENV'] 
    end 
} 


petunia ~/t $ TEST_ENV=test ruby ./t.rb 
test