Rails在生产中提供旧的css文件

时间:2015-07-14 10:46:53

标签: ruby-on-rails ruby-on-rails-4 asset-pipeline

在我的应用程序中,我有:

.red {
  background-color: #F48585 !important;
}

然后我删除了这些样式。然后我将我的应用程序部署到heroku, 所以我做了

git add -A
git commit -m "message"
git push heroku master
heroku run bundle 
heroku run rake db:setup

我的应用程序已部署,基础框架的样式等工作。但我仍然定义了我的.red类样式。并且所有新样式都被忽略,它似乎是rails服务器旧的css文件。 我的所有样式资源都预编译到一个文件application.scss。

3 个答案:

答案 0 :(得分:2)

你刚忘了一步:

git add -A

git commit -m" message"

  

git push origin your-git-branch

git push heroku master

在最后一个命令之后,heroku将自动运行bundle install并设置你的项目/ app以便在生产模式下运行。

答案 1 :(得分:1)

您似乎忘了预编译资产。请注意,只有在存储库中没有public/assets/manifest.yml文件时,heroku才会自动预编译资产,否则它会认为您在本地编译资产。请参阅:https://devcenter.heroku.com/articles/rails-asset-pipeline#compiling-assets-locally

除此之外,如果您想在部署时预编译资产,同时删除public/assets文件夹的内容,您应该记住heroku会将预编译的结果存储为一个临时文件,最终将被删除,因此您的生产应用程序不能依赖这些预编译文件。

因此,对于您目前的情况,您主要有两个选项:

  1. 在本地bundle exec rake assets:precompile预编译您的资产,并将结果提交给回购。 (现在更快)
  2. 使用像https://github.com/rumblelabs/asset_sync这样的gem,并在部署时预编译资产,但将结果存储在第三方云存储中。

答案 2 :(得分:0)

我找到了这个解决方案,rake tmp:clear