2012-01-06 41 views
1

我正在與朋友一起開發應用程序,並且在本地環境中一直運行錯誤,但該應用程序在線運行(使用Heroku)。我相信memcache在我的本地環境中造成問題。這是我到目前爲止已經完成:Memcache在生產中工作,但本地故障

  1. 添加了內存緩存附加到我的應用程序中的Heroku
  2. 我的機器上
  3. 安裝自制
  4. 安裝的內存緩存使用自制軟件與brew install memcached

然後我重新啓動了我的應用程序並使用memcached -vv運行了memcache進程。

當我訪問應用程序時,它工作正常。然後我會創建一個記錄。這也很好。然後在頁面重新加載 - 從緩存中獲取記錄時,整個應用程序系統失敗。下面是我收到的錯誤(雖然我不知道它是多麼的幫助)

You have a nil object when you didn't expect it! 
You might have expected an instance of Array. 
The error occurred while evaluating nil.empty? 

錯誤(S)只對內存緩存代碼的情況下使用點。一個簡單的用戶行爲(即從公司購買一本書)會觸發錯誤,一旦發生錯誤,整個應用程序就會崩潰(意味着任何路徑導致相同的錯誤)。它似乎好像它只是不存儲/獲取該項目,這讓我覺得應用程序根本沒有觸及memcache ......是否有可能需要gem安裝某些東西 - 即使這是在生產環境中運行另一個開發者的機器?

我正在尋找任何有關故障診斷memcache的指導。更具體地說,是否有人遇到過關於memcache的本地和生產環境問題?有什麼建議麼?我曾想過在Heroku上從應用程序中刪除memcache,然後將其卸載到我的電腦上,然後重做所有內容。

我知道我在這裏相當含糊,但我不完全確定要發佈什麼代碼會有所幫助。

謝謝你的幫助。

回答

1

經過多次挫折之後,我開始回溯我在本地環境中安裝和實施memcache所採取的步驟。它沒有任何意義,它是如何在網上工作,並與我的朋友的環境,但不是我的。最終我跑bundle install,然後重新啓動應用程序,並運行一個新的memcached進程,並修復了一切。我仍然有點困惑,但我想我的Gemfile只是沒有更新(即使我可以發誓它是)。

0

雖然我沒有使用Herouku,但是在我的環境中使用memached沒有任何問題。要訪問memcached,我已經安裝了來自https://github.com/mperham/dalli的Dalli寶石

使用它非常簡單。 在文件environment.rb中加:

DC = Dalli::Client.new('localhost:11211') 

在應用程序中我使用

DC.get(key) 
DC.delete(key) 
DC.set(key,value) 
+0

感謝您的回答,但我想我通過運行捆綁解決了自己的問題(請參閱上面的解釋)。 – mmichael 2012-01-06 23:52:36

0

您首先需要測試,如果能夠獲得應設置或者不是你設置的鍵。您可以使用Memcached via a Telnet interface來測試。

+0

我遵循鏈接中的步驟,並且一切看起來都正常。我越來越絕望,開始回顧我在本地安裝和實現memcache的步驟,並且一次運行bundle install,重啓應用程序並重新啓動新的memcached過程後,它似乎修復了它。不確定究竟是什麼修復了問題(可能是運行包),但問題沒有了。感謝您的鏈接,我確實發現有趣的信息。 – mmichael 2012-01-06 23:51:53

相關問題