2013-12-17 142 views
6

这里的文档表示,在Rails4中部署期间使用预编译资源的heroku。Heroku没有为rails4预编译资产

但是, 我没有看到预编译资产消息。

 Using thin (1.6.1) 
     Using twitter-bootstrap-rails (2.2.8) 
     Using uglifier (2.3.1) 
     Using will_paginate (3.0.4) 
     Your bundle is complete! It was installed into ./vendor/bundle 
     Bundle completed (1.37s) 
     Cleaning up the bundler cache. 
-----> Writing config/database.yml to read from DATABASE_URL 
     Detected manifest file, assuming assets were compiled locally 
-----> Discovering process types 
     Procfile declares types -> (none) 
     Default types for Ruby -> console, rake, web, worker 

我现在面临的问题与引导我的应用程序,其中的导航栏不会正确加载+其他一些细微之处,我认为它的资产预编译的问题。

我使用Rails4,Ruby2.0

我在application.rb中

config.assets.enabled = true 

手动启用预编译没有帮助

heroku run rake assets:precompile 

回答

1

删除公共资产/资产文件夹帮助。我还跑了英雄运行耙子资产:干净。

After that I could see: 
----> Writing config/database.yml to read from DATABASE_URL 
-----> Preparing app for Rails asset pipeline 
     Running: rake assets:precompile 

导航栏现在加载得很好!

4

我在资产管道中挣扎了一段时间。资产管道如何在新的Rubyists中起作用似乎有点混乱。根据我的经验,这是我Heroku资产管道的工作流程。

  • 确保资产在本地主机上本地运行(需要的Heroku)
  • 删除了Rails目录的公共/资产文件夹rm -rf ./public/assets
  • 建立一个新的资产目录中mkdir public/assets
  • 运行rake assets:precompile命令
  • 您应该看到您的命令行中正在预编译的资产列表
  • 一旦资产预编译,您应该提交通过以下命令e变化:git add -A然后git ci -am "commit message goes here"
  • 最后,通过git push heroku master

注意推的Heroku:这值得重复 - 确保你的资产在本地主机上推到Heroku的前正常工作。

13

有这个相同的问题。由于某种原因我在本地进行了预编译,然后推送到Heroku。

看到Heroku给出了“检测到的清单文件,假设资产是在本地编译的”,这让我意识到它不是预编译所有的东西。

当我做了一个“git add”。并承诺,我看到它添加了一堆公共文件。把它推到Heroku让它工作。所以我不得不每次都进行预编译和git添加,基本上是为了Heroku的工作,并在我的公用文件夹中搞乱了。它完成了这项工作,但却是一个糟糕的解决方案。

我查找了heroku提到的“清单”,并最终在公共目录中找到了“.sprockets-manifest ...”文件。

删除和Heroku再次是我的朋友。

发现这个问题是我研究的一部分,所以我想我会分享我发现的情况,以防其他人看到这个,或者有任何精心的想法。

现在我必须去看看.sprockets舱单是什么都重要....

+0

记住'.sprockets-manifest'文件是隐藏:) –

+0

这应该是公认的答案 –

+0

保存我的生活在这里。没有意识到这甚至被推到回购。谢谢! – SVetter