2014-12-19 23 views
2

考慮使用IronWorker來運行一些常見的服務,但是我想知道是否有一種方法可以在工作人員本身知道它運行的環境。例如,在我們的主代碼庫中,我們將服務器var ENV設置爲「開發」,「分段」或「生產」之一。基於這個變量,我們的應用程序知道要加載哪個配置文件(通過dirs config/development,config/staging和config/production中的配置文件)。我想爲工作人員提供類似的設置。Ironworker的環境設置類型

我注意到,當我通過CLI上傳一個工人,我能做到以下幾點:

iron_worker上傳工人/例子/程序hello_world --env分期

,讓我有一個鐵.json配置文件,其中包含dev,staging和生產密鑰。例如,

{ 
 
    "production": { 
 
    "token": "AAAAAAAAAAAAAAAAAAAAAAAAAAA", 
 
    "project_id": "000000000000000000000001" 
 
    }, 
 
    "staging": { 
 
    "token": "BBBBBBBBBBBBBBBBBBBBBBBBBB", 
 
    "project_id": "000000000000000000000002" 
 
    }, 
 
    "development": { 
 
    "token": "CCCCCCCCCCCCCCCCCCCCCCCCCC", 
 
    "project_id": "000000000000000000000003" 
 
    }, 
 
    "test": { 
 
    "token": "DDDDDDDDDDDDDDDDDDDDDDDDDD", 
 
    "project_id": "000000000000000000000004" 
 
    } 
 
}

然而,在工人本身我沒有從CLI中的環境變量訪問,以便當工人需要在一些配置加載乏它不知道哪個目錄看。

在這裏的文檔http://dev.iron.io/worker/reference/dotworker/他們表明,你可以在.worker文件中設置一個環境變量,但這意味着我需要有一個單獨的工作文件爲每個環境和(也許?)根據我部署的環境將其交換出去。

回答

4

有一些棘手的方法:

1)iron.json。與上述相同的格式,無變化

2).worker文件。將環境從本地系統傳遞到IronWorker環境。將此行添加到.worker文件中:

set_env 'IRON_ENV', ENV['IRON_ENV'] 

3)上傳代碼命令。取而代之的

iron_worker upload workers/example/hello_world --env staging 

使用不同的語法:

IRON_ENV=staging iron_worker upload workers/example/hello_world 

4)檢查環境對工人側(任何語言的選擇題支持當然):

puts ENV['IRON_ENV']