2011-05-10 111 views
0

我試圖設置我們的Rails應用程序來從環境變量中提取memcache服務器的地址(我們有2個'production'環境,一個用於測試,一個用於測試生活,因此不能有不同的環境文件)。rails/passenger:使用memcache服務器地址的環境變量

這是一個Rails應用程序2.3.11,而不是軌3.

我有這個在我的環境/ production.rb文件:

config.cache_store = :mem_cache_store, ENV['MEMCACHE_SERVERS'] || 'localhost:11211' 

如果我火了一個Rails控制檯,並做到:

Rails.cache.stats 

我看到它是用正確的出的環境變量(設置在我們的Ubuntu服務器上的/ etc /環境)。

但是,如果我們的實際運行軌道應用程序通過乘客啓動它使用本地主機!

乘客不使用環境還是我在做別的錯誤?

如果有更好的方法做到這一點,當然我願意提供建議!

回答

0

您是否嘗試過使用Apache指令SetEnv或您的服務器的等效項? Apache的子流程對環境進行了大量修改,其中Passenger就是其中之一。

+0

謝謝 - 我們正在使用Nginx。看起來很愚蠢,我們將不得不在Web服務器中設置環境變量,而不是環境......但我會給它一個鏡頭! – phil 2011-05-10 15:58:10

+0

當你考慮它時,這並不是太愚蠢。由於你的web服務器是由'init'初始化的,因此它與完整的用戶shell沒有相同的環境。大多數服務器還完全重新定義環境,以便與子進程保持一致,而不管服務器的啓動方式如何。 – tadman 2011-05-10 18:13:52

+0

我實際上找不到從nginx傳遞它的方法。 – phil 2011-05-11 08:50:31