2013-03-06 56 views
2

我試圖在兩個不同的服務器上部署rails 3.2.12應用程序,位於nginx驅動的負載平衡器後面。使用asset_sync在兩臺服務器上部署Rails:第二臺服務器上不可用的資產

我正在使用asset_sync將資產部署到S3和Capistrano。

當部署完成後,一切都在第一臺服務器上的偉大工程,但在第二個我得到以下錯誤:

A ActionView::Template::Error occurred in home#index: 

    application.css isn't precompiled 
    actionpack (3.2.12) lib/sprockets/helpers/rails_helper.rb:142:in `digest_for' 

我注意到,在部署過程中,部署:資產:預編譯僅在第一臺服務器上執行。但是,這似乎預計給我。

我錯過了什麼嗎?

+0

兩臺服務器都有public/assets/manifest.yml文件嗎? – 2013-03-06 13:01:48

+0

我可以在第一臺服務器上找到。第二個,一個竊聽甚至沒有公共/資產目錄。 – jlfenaux 2013-03-06 13:32:30

回答

2

我想出了我愚蠢的錯誤是什麼。我只列出了Web角色中的兩臺服務器。

role :web, "server1" 
role :app, "server1", "server2" 

當我聲明兩臺服務器時,它工作正常。

role :web, "server1", "server2" 
role :app, "server1", "server2" 
+0

謝謝 - 我有完全相同的問題! – 2013-03-13 18:56:20

+0

您還可以設置資產編譯任務將在哪些服務器角色上運行,而不是更改哪些服務器具有哪個角色:https://github.com/capistrano/capistrano/issues/128 – 2013-03-29 07:07:52

+0

運行資產不是一種浪費編譯在兩臺服務器上,如果服務於S3的所有資產呢? – freedrull 2016-01-19 07:14:41