2014-04-23 121 views
0

我正在尝试部署我的第一个Rails应用程序,但是我没有找到所有资产(.css,.js文件和图像)的404。我尝试了很多方法让事情顺利进行,但没有奏效。所有资产的路径是这样的:Rails - 部署后没有找到资产

/stylesheets/application.css 

我production.rb文件:http://pastebin.com/SeVNEZD9 我application.html.erb,在那里我有这些资产看起来是这样:http://pastebin.com/gHkpfA8Z 感谢前进的任何帮助。

+0

其轨道您使用的版本? – Jenorish

+0

使用Rails版本4.0.4。 – gabriel

+0

你是否在'application.css'中添加了代码?并且你在使用任何网络服务器? – Jenorish

回答

1

config/environments/production.rb文件添加

config.assets.digest = true 

然后stylesheet_link_tag将产生指纹网址。

+0

它一直在那里,但它不会生成指纹url。 – gabriel

0

您需要通过在终端上运行此命令来预编译您的资产。

RAILS_ENV=production bundle exec rake assets:precompile

+0

当我回答上一个答案时,我尝试了这个,但没有帮助。 – gabriel

0

部署之后,你应该做的

RAILS_ENV=production bundle exec rake assets:precompile 
+0

当然我尝试过,但没有帮助。 – gabriel

+0

@gabriel请检查这些行是否存在于environments/production.rb中。 http://pastie.org/9103118 – Jyothu

+0

其实,你说'config.assets.compile'应该设置为'false',但是在我的代码中它被设置为'true'。哪一个是正确的? (我试图改变它为'假',但它并没有帮助 – gabriel

0

因为这是你的第一个Rails应用程序,让我解释一下您的问题可能是:

当你创建你的资产,他们居住在asset pipeline。这 是位于/app/assets一个文件夹,您的资产文件将 存储

如果你想在生产中使用的资产,有两种方法可以做到这一点 - 首先是要动态地使用资产,或者用它们是静态的 (这是你预编译的地方)。当您使用的Heroku的等喜欢, 你需要他们为什么预编译它们为 您使用静态资产,这是当你部署

问题与静态资产是Rails的creates fingerprints 他们。这些指纹基本上是给他们一个唯一的标识符 ,你必须使用动态引用<%= asset_path %>

你的问题很可能是由于您没有正确访问预编译的资产所致。解决这个问题的方法是使用asset tag helpers这样的:

#app/views/layouts/application.html.erb 
<%= stylesheet_link_tag "application" %> 
<%= javascriot_include_tag "application" %> 
+0

其实,这是我的application.html.erb文件的样子:http://pastebin.com/gHkpfA8Z – gabriel

0

它看起来像现在正在工作。我需要重新启动服务器才能应用更改。任何人都可以告诉我为什么我必须重新启动服务器才能应用这些更改?我想在将来避免它。

我张贴我的production.rb文件对于那些谁面临类似的问题:http://pastebin.com/7Uskvcuc

+0

如果在生产环境中工作意味着您必须重新启动服务器,否则无论您做什么更改都不适用,它将从cache.my中获取答案正在工作意味着最终投票或接受我的回答。 – Jenorish