我正在尝试重现一个非常基本的Twitter,比如Rails应用程序,我之前在课堂上做过。我刚刚添加了Twitter引导程序,但如果我在本地运行网站,则顶部导航按钮会消失,如果我部署,样式将完全消失。无论我在哪里,我都找不到它与我之前写的或者当前代码出错的地方有什么不同。
与一年前相比,我使用了最新的rails和bootstrap。
我目前的代码可以在这里找到:https://github.com/lukexuanliu/CornellBlog
答案 0 :(得分:0)
<强>预编译强>
问题的核心很可能是Rails precompilation进程,这是新Heroku开发者的一个主要问题:
在生产环境中,Sprockets使用指纹识别方案 概述如上。默认情况下,Rails假定资产已经过预编译 并将由您的网络服务器作为静态资产提供。
在预编译阶段,从内容生成MD5 已编译的文件,并按原样插入到文件名中 写到光盘。这些指纹名称由Rails使用 帮助者代替清单名称。
正如您的Rails应用程序所认为的那样,通过使用Heroku,它可以在&#34;生产&#34;模式。虽然以编程方式,这并不意味着任何不同,它 会对您的环境产生影响;特别是你的资产需要预先编译,你的流量需要经过战斗测试(没有错误)
底线是您的production
资产未加载,因为它们尚未正确预编译(如果有的话)。因此,您的第一个停靠点将使用以下内容:
$ rake assets:precompile RAILS_ENV=production
$ git add .
$ git commit -a -m "Precompiled"
$ git push heroku master
如果你在本地执行此操作,那么当你部署到Heroku时,你肯定知道资产是预先编译的,这将消除你的系统潜在错误中的这个问题。
从缺乏资产可以看出情况进一步证明了这一点:
<强>资产强>
关于您的应用程序在开发过程中的行为方式,我建议您要么没有对bootstrap
主题的正确引用,要么存在某种阻止其加载的问题。
您想要查看Rails的manifest
指令 - 基本上您是如何将您拥有的任何文件连接到单个&#34;应用程序&#34;文件 - 然后将拉动另一个&#34;依赖&#34;文件进入系统。
简而言之,您的application.css
文件应该如下所示:
#app/assets/stylesheets/application.css
/*
*= require_self
*= require bootstrap
*= require tree .
*/