【问题标题】:Heroku production differing from local development (Rails)Heroku 生产不同于本地开发(Rails)
【发布时间】:2013-06-24 08:16:40
【问题描述】:

我是编码和 Rails 的新手,我第一次遇到这个问题 - 我的应用程序的本地开发版本与生产版本存在不利的差异。

我在我的 Rails 应用程序上使用 Zurb Foundation,并部署到 Heroku 以在生产中查看它。我面临的问题是,在本地,我编写的 CSS 是为了在导航栏和页面的其余部分之间进行填充工作正常,但是当我部署到 Heroku 时,CSS 无法正确呈现并且缺少填充。

我用一个名为“fixednavbar”的类的 div 将 yield 包裹在 application.html.erb 中,并编写了以下 css:

.fixednavbar {
padding-top: 60px;
}

我将此 css 放在资产管道 (Rails 3.2.13) 中的 layouts.css.scss 文件中。 application.html.erb文件中的代码如下:

<div class="row fixednavbar">
   <%= yield %>
</div>

我已经检查了本地和 github 上的代码,以确保它们匹配并且确实如此。我采取了激进的步骤并启动了一个新存储库,然后删除了本地 git 存储库并启动了一个新存储库并将所有当前文件推送到那里(我在 github 上创建了一个新存储库,以便我以前的所有版本仍然在原始存储库中)。

完成此操作后,我创建了一个新的 Heroku 应用并进行了部署,但生产版本仍然无法将 CSS 呈现与开发版本相同。

我完全不知道为什么当代码相同时这些版本会有所不同(除非在其他地方潜伏着一些我没想过要检查的东西)。

非常感谢任何和所有的帮助。正如我所说,我对 Rails 很了解(并且大部分时间都在编码),这是我第一次遇到这样的问题。

谢谢!

更新: 我一直在尝试解决这个问题。我在应用程序上做了其他工作,然后回到这个问题。我想获得生产版本以反映正在开发的内容,所以任何帮助都会令人惊叹。

进一步描述该问题:当 CSS 尚未解决时,我对 Heroku 的生产部署几乎就卡在了旧版本的应用程序中。导航栏颜色停留在我将其更改为的第一种颜色上,并且不会更新为新颜色。粘性导航仍然会在生产中导致身体部分隐藏在导航后面的问题。

现在,在运行本地服务器的开发中,我已经解决了所有这些问题。这些变化反映在开发中,一切都如预期的那样。

更改后,我提交到 git,然后我推送到 github。推送到 github 后,我推送到 Heroku。

github 文件反映了更改,并且代码是应有的。尽管如此,Heroku 并没有反映这一点。老实说,我在这里被难住了,需要一些帮助。

【问题讨论】:

  • 首先,它可能不是 Heroku - 它可能是一个“生产”环境问题。通过在生产模式下运行本地应用程序来隔离这一点。
  • 嗨,约翰,感谢您的回复。我刚刚在本地启动服务器,应用程序没有加载任何 css 文件。我在浏览器中查看了源代码并将该源代码与在开发中运行它进行了比较,生产版本没有找到任何 css 文件。我对这一切都不熟悉......我应该从哪里找到问题?
  • 更新:看到本地也无法制作,我搜索并找到了这个帖子HERE。我遵循那里的建议并让生产版本在本地正常工作。我不会推送到 heroku 看看这是否能解决问题。
  • tbh,我在 Heroku 上的资产管道没有问题,但这可能也有帮助,因为它是 Heroku 特定的指导方针devcenter.heroku.com/articles/rails-asset-pipeline

标签: heroku deployment ruby-on-rails-3.2 zurb-foundation production-environment


【解决方案1】:

你是如何加入这个插件的?不要直接添加 js 和 css,而是尝试使用来自 https://github.com/zurb/foundation-rails 的 gem 并从您的应用程序中删除任何直接引用。我在使用其他插件(如 bootstrap、bxslider 等)时也遇到过类似的问题。

【讨论】:

    【解决方案2】:

    在响应用户的帮助下,我能够识别错误并寻找解决方案。我找到了HERE

    解决方案是查看 production.rb 文件并找到它所说的行

    config.assets.compile = false
    

    并将“假”改为真。

    config.assets.compile = true
    

    然后运行

    rake assets:precompile RAILS_ENV='production'
    

    部署到 Heroku 后,可能需要运行

    heroku run rake db:migrate
    

    这在部署到 Heroku 时一切正常。

    【讨论】:

      【解决方案3】:

      作为初学者,我遇到了同样的问题。因为我使用的是 Rails 4,所以从 config/application.rb 中删除这一行的简单步骤就可以了。

      config.assets.initialize_on_precompile = false

      https://devcenter.heroku.com/articles/rails-asset-pipeline

      当然,我排除了上述所有步骤以及其他帖子中的一些其他步骤。

      【讨论】:

        猜你喜欢
        • 2012-04-03
        • 2018-06-28
        • 1970-01-01
        • 2011-12-29
        • 2016-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        相关资源
        最近更新 更多