2013-02-10 94 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