【问题标题】:CSS is looking different on herokuCSS 在 heroku 上看起来不一样
【发布时间】:2012-01-29 20:55:15
【问题描述】:

如下图所示,我的本地主机站点上的 CSS 在顶部的间距比在 Heroku 上的要好得多。

以前有没有人遇到过这种问题。你可以在这个页面上看到它最好http://pltcpal.herokuapp.com/forums/

我正在使用 Twitter 引导程序,建议添加

`padding-top: 40px;` 

如果使用顶部导航栏,则转到正文。不知怎的,它不起作用......

【问题讨论】:

  • @IOXenus 这是一个完全不同的问题
  • 可能是因为您没有使用 CSS 重置。如果您添加 50 像素的内边距而不是 40 像素,那就没问题了。
  • 如果你在本地以生产模式运行会发生什么?
  • 只需将您的database.yml中的生产数据库临时更改为您的开发数据库。

标签: css heroku twitter-bootstrap


【解决方案1】:

问题与 Heroku 上资产管道的处理有关。有几种方法可以处理这种情况,请参阅http://devcenter.heroku.com/articles/rails31_heroku_cedar

我通过在我的机器上本地预编译资产然后将它们推送到 Heroku 解决了我的应用程序中的问题。

预编译资产:

RAILS_ENV=production bundle exec rake assets:precompile

添加/提交对 git 存储库的更改:

git add public/assets
git commit -m "vendor compiled assets"

为了安全起见,我首先在我机器上的本地分支上测试了整个东西,我使用以下命令将其推送到 Heroku(Heroku 通常会忽略除 master 分支之外的所有分支,因此是诀窍):

git push -f heroku heroku-assetpipeline:master

【讨论】:

    【解决方案2】:

    FWIW,我遇到了同样的问题,并检查了我能想到的一切,以及上面的那些。事实证明,我一定是在本地主机上缩小了浏览器,并且我的生产 url 有标准缩放。

    这就像在两个页面上重置我的浏览器中的缩放一样简单。希望这可以帮助其他有同样问题的人。

    【讨论】:

    • 哈哈哈哈。相同的! :)
    【解决方案3】:

    我也有同样的问题。 当我比较开发和生产代码时,发现在开发机器上,来自引导程序的样式表和 javascript 文件都被加载,而在生产站点(Heroku)上,只有一个应用程序-XYZ.css 和一个应用程序-XYZ。 js.

    我不确定这是否是资产管道的问题。

    可能有人可以详细说明需要做什么来(预)编译资产管道,以便在 Heroku 上成功部署。

    【讨论】:

      【解决方案4】:

      您是否有可能在某个时候在本地预编译了资产?要强制 heroku 在 slug 编译期间编译您的资产,您可以将您的 public/assets/manifest.yml 重命名为 public/assets/manifest.yml.bak,提交您的源代码,然后推送到 heroku。

      Heroku 在看到 manifest.yml 文件时假定您在本地编译了资产。

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,并按照几个不同页面的说明进行操作,包括 Heroku 自己的文档。我在这里发帖是为了帮助下一个人,因为可能是由于 Rails 4、Heroku 或 Github 的变化,但上述指示对我来说根本不起作用。但是我确实让它工作了,这就是方法。

        是的,您可能应该使用RAILS_ENV=production bundle exec rake assets:precompile 预编译您的资产,但之后进入您的“public/assets”文件夹并复制“all”“.css”、“css.gz”、“.json”、“.yml” ', '.js' 以'application' 或'manifest' 开头的文件。将它们移动到应用程序目录之外的文件夹中。这样做只是为了防止出现任何问题。验证所有这些文件都已从应用程序的“public/assets/”文件夹中删除。接下来重新启动您的本地 Rails 服务器并验证您的应用程序仍然按照您的预期运行。然后转到您的 Github 帐户并进入存储库的“public/assets/”目录并删除您刚刚在本地执行的所有相同文件。然后在本地添加/提交,然后推送到 git,然后推送到 heroku,然后你就完成了,它应该可以工作了。

        我假设它背后的基本原理是因为当你推送到 Heroku 时,它会检查你的存储库中的已编译资产,因此,即使我已经在本地预编译,它仍然会从以前的提交中提取一些资产配置。通过删除这些文件,Heroku 必须在推送期间编译它们。我没有尝试的一件事可能只是切换到另一个分支并删除这些文件并将该分支部署到 Heroku,所以你可能想先尝试一下,但这对我有用。

        另一个注意事项,将文件重命名为 .bak 或 .old Heroku 仍然认为它们是它们的常客并显示它们,因为它是未正确显示的原始文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多