2013-03-06 53 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

相关问题