在本地加载 CSS,但不在 Heroku 中加载 Rails 应用程序
Posted
技术标签:
【中文标题】在本地加载 CSS,但不在 Heroku 中加载 Rails 应用程序【英文标题】:CSS loading locally but not in Heroku for a rails app 【发布时间】:2012-09-25 00:47:47 【问题描述】:我正在关注 Rails 启动前注册教程。 Bootstrap 在 heroku 上运行良好,但后来我修改了 bootstrap_and_override 文件以包含一个徽标。在本地启动 Rails 服务器并查看时,样式与我预期的一样,引导程序和新的标头徽标出现。
像以前一样,我运行了 rake assets:precompile 并推送到 git - 遵循本教程 http://railsapps.github.com/rails-heroku-tutorial.html 在 heroku 上显示 css 之前工作。 html 正在显示,但似乎缺少 css 和 bootstrap。
有人有什么想法吗?
【问题讨论】:
请选择最适合您的答案。谢谢。 【参考方案1】:我刚刚在一个应用程序中遇到了类似的问题。查看THIS 帖子...
【讨论】:
【参考方案2】:在尝试了 *** 可能提出的所有建议后,我想通了。我只是检查了 git 状态,看到我有一堆未提交的文件(以为这会被 git push heroku master 拾取),然后添加、提交并推送到 git。然后我重新开始,运行捆绑安装,预编译资产并部署到 heroku,它正在工作。
【讨论】:
我觉得自己像个白痴,但感谢您的帮助。解决了一切【参考方案3】:有同样的问题,我不知道它是否会在未来对其他人有所帮助,但我在“git push heroku master”推送中得到了这个:
警告:
Include "rails_12factor" gem to enable all platform features
更新了我的 gemfile,
*group :production, :staging do
gem 'pg'
gem 'rails_12factor'
end*
再次运行它,令我高兴的是它安装了这些:
Installing rails_serve_static_assets (0.0.1)
Installing rails_stdout_logging (0.0.1)
Installing rails_12factor (0.0.2)
之后网站运行完美。希望对某人有所帮助,我是新手。
【讨论】:
查看关于rails_12factor的heroku文档【参考方案4】:在本地代码上运行 bundle exec rake assets:precompile
提交更改并部署到heroku
【讨论】:
这成功了!看起来它错过了 public/assets/ 中的一些文件 也为我工作!感谢您发布此快速解决方案。【参考方案5】:检查 /config/environments/production.rb 中是否将这些设置为 true
config.cache_classes = true
config.serve_static_assets = true
config.assets.compile = true
config.assets.digest = true
git add、git commit 并推送到 heroku。
【讨论】:
谢谢!我是 Rails 新手,它的作用就像是一种魅力!【参考方案6】:如果您使用 sass...在遇到所有其他麻烦之前...请确保您没有在资产文件夹中混合 .css 和 .scss 文件。 Heroku 在编译资产时似乎很难将两者混合在一起。我无法解释为什么它是一个准确的解释......但是,根据我自己的经验,我需要做的就是解决这个问题,只需将任何 .css 文件重命名为 .scss。
【讨论】:
我遇到了 .css 无法正常工作的问题,但我设置了config.assets.compile = true
并且它成功了。默认情况下,rails 5 设置为 false
。
我在使用 padrino 时遇到了问题,normalize.min.css
没有出现在 heroku 上。我在html中链接到它。我最终重命名为 normalize.min.scss
并将其导入到我的 application.scss
文件中,它神奇地起作用了!【参考方案7】:
我不得不跑heroku run rake css:rebuild
【讨论】:
【参考方案8】:我在 rails4 中遇到了同样的问题,通过添加解决了
一种。 gem 'rails_12factor'
湾。 bundle exec rake assets:precompile
【讨论】:
【参考方案9】:在生产环境中加载资产:
How to load assets in production rails
注意: 按照上面的链接后
rm -rf tmp/*
rm -rf public/assets/*
RAILS_ENV='production' rake assets:precompile
然后重启你的服务器
【讨论】:
【参考方案10】:当您克隆应用并将 CDN 用于您的资产时,也会发生此问题。
如果您的 Heroku 应用是临时站点,请在 production.rb
中注释掉 config.action_controller.asset_host
。
【讨论】:
【参考方案11】:这是一个长镜头,但如果您使用的是 Chrome,请尝试按 Ctrl+Shift+R 将页面重新加载为 Chrome有时可以缓存旧的 CSS 设置。
【讨论】:
这间接帮助了我——我在与 chrome(我的主要开发浏览器)不同的浏览器上测试了 localhost:3000,结果发现它在开发中也不起作用,只是被 Chrome 缓存. (但是 ctrl+shift+R 对我没有任何改变...)以上是关于在本地加载 CSS,但不在 Heroku 中加载 Rails 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
DJANGO:静态文件未在实时服务器中加载(但在本地加载)?
Heroku 无法加载我的 css 文件,因为它是 mimetype
无法在heroku中加载favicon.ico for rest api