将样式表传递给heroku

时间:2015-07-30 21:44:28

标签: html css ruby-on-rails twitter-bootstrap heroku

我有一个本地应用程序,我正在推送到heroku,几个小时前它停止工作。

Heroku停止识别引导程序,我的本地主机和heroku都停止识别我的css文件。让我感到困惑的是,3个小时前,heroku和我当地的主人都工作得非常好。

我将代码回滚到最后一次我知道它有效,但我的application.css文件仍然没有被确认,即使我知道它是完全相同的代码!

我在网上找不到任何内容,或者heroku的任何答案都支持我的任何一个问题,所以非常感谢任何帮助。

我的所有HTML文件(heroku部分无法识别):

<!DOCTYPE html>
<html>
<head><br><br>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Appv013</title>
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  <link rel="stylesheet" href="application.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</head>
<body>

<nav class="navbar navbar-inverse navbar-fixed-top ">
  <div class="container-fluid">
  <div class="navbar-header">
  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>                        
  </button>
  <%= link_to 'Home', root_path, class: 'navbar-brand' %>
</div>
<div class="collapse navbar-collapse" id="myNavbar">
  <ul class="nav navbar-nav">
    <li class="active"><a href="#">Home</a></li>
    <li class="dropdown">
      <li><a href="#">Page 1</a></li>
      <!-- NOTES!!!  REPLACE ABOVE LINE AND
      USE BELOW FOR DROP DOWN THING

      <a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1 <span class="caret"></span></a>
      <ul class="dropdown-menu">
        <li><a href="#">Page 1-1</a></li>
        <li><a href="#">Page 1-2</a></li>
        <li><a href="#">Page 1-3</a></li>
      </ul> -->
    </li>
    <li><a href="#">Page 2</a></li>
    <li><a href="#">Page 3</a></li>
  </ul>

  </ul>
</div>

<%= yield %>
 test 0.13.97
 </body>
 </html>

我的整个CSS appliation.css文件(该部分都没有识别):

body{
  margin-right: 10px;
  margin-left: 10px;
  background-color: #eee;
}
.navbar-inverse {
  background-color: #000000;
  border-color: #BFFFEA;
}

编辑:我正在使用heroku作为git,以下是当我运行本地服务器时终端的输出

Started GET "/" for ::1 at 2015-08-04 15:26:39 -0400
Processing by VisitorsController#index as HTML
  (1.0ms)  SELECT COUNT(*) FROM "users"
Rendered visitors/index.html.erb within layouts/application (2.1ms)
Completed 200 OK in 7ms (Views: 5.6ms | ActiveRecord: 1.0ms
Started GET "/application.css" for ::1 at 2015-08-04 15:26:39 -0400
ActionController::RoutingError (No route matches [GET] "/application.css"):
actionpack (4.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
web-console (2.2.1) lib/web_console/middleware.rb:39:in `call'
actionpack (4.2.3) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.3) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.3) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.3) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.3) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.3) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.3) lib/rails/rack/logger.rb:20:in `call'
quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets'
actionpack (4.2.3) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.4) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.4) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.3) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.4) lib/rack/lock.rb:17:in `call'
actionpack (4.2.3) lib/action_dispatch/middleware/static.rb:116:in `call'
rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
railties (4.2.3) lib/rails/engine.rb:518:in `call'
railties (4.2.3) lib/rails/application.rb:165:in `call'
rack (1.6.4) lib/rack/lock.rb:17:in `call'
rack (1.6.4) lib/rack/content_length.rb:15:in `call'
rack (1.6.4) lib/rack/handler/webrick.rb:88:in `service'
/Users/Anna/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
/Users/Anna/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
/Users/Anna/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'

1 个答案:

答案 0 :(得分:1)

听起来你的CSS文件的URI是borked。

如果您可以包含您尝试提供的整个HTML页面以及针对css请求的开发工具输出,则可以更轻松地调试正在进行的操作。

我怀疑发生的事情是application.css的路径错误,或者您的Web服务器未配置为从css文件所在的位置提供静态文件,或两者兼而有之。

您使用的是版本控制系统(如git)吗?如果是这样,你有一个提交这个页面的工作版本,你能看到与git diff的区别吗?

如果这感觉超级抽出我很抱歉,远程调试很棘手。不过我们会得到它的!

修改

根据您发布的终端输出(即本地运行的Web服务器的日志),您的application.css的GET请求失败。

Started GET "/application.css" for ::1 at 2015-08-04 15:26:39 -0400
ActionController::RoutingError (No route matches [GET] "/application.css"):

不幸的是,Ruby不是我的领域,但我可以尝试提供一般建议。

您所面临的问题被称为提供静态文件(这是解决您问题的良好谷歌食品),并且根据您应用的配置,解决方案会有所不同。一个值得一读的答案是here,也许this会有所帮助。基本上,有一个文件夹包含你的css文件(我猜这个文件叫做“public”),你需要公开该目录中的文件,这样你的网络服务器就会在你的html文件中包含的URL上提供这些文件。您可以在本地使用终端输出来查看错误的详细信息,或者当事情被推送到heroku时,您可以使用chrome dev工具获取有关请求/响应的详细信息。您需要对静态的请求返回200,304或其他一些“此处的某些数据”响应代码。

在修复本地错误之前,您不需要这个技巧,但在heroku的生产中调试时,一个有用的工具是heroku run bash。这将允许您通过SSH连接到运行在heroku上部署的内容的dyno,这在您需要诊断丢失的内容时非常有用(例如)。

更一般地说,您似乎刚刚开始在网络开发的精彩世界中。这真的很好,因为webdev非常有趣!不过,我个人的肥皂盒是Ruby不是最友好的首选语言;它有很多出乎人意的“神奇”,并且对于你以“正确的方式”做事情并不太自以为是。相比之下,当我学习时,我发现Python + Django是一个很棒的组合; Python(+ Django)可以很容易地以正确的方式执行操作,并使您以错误的方式执行操作,因此更容易保持正常运行。这也有助于Django拥有令人惊叹的文档。 YMMV,但这是对我来说很重要的建议。