2014-12-03 5 views
1

у меня есть рубин на применение рельсы, которые я строй, используя загрузчик, который выглядит великолепно, когда работает локально:Heroku рубин на рельсах развертывания проблемы с активами

enter image description here

предает свой код, чтобы освоить ветвь на мерзавец и затем нажмите на мой геройский мастер. Когда я посещаю мой Heroku URL я получаю эту страницу:

https://whats-on-today.herokuapp.com/

не так велика. Я вижу, что существует около 404 ошибок:

HTTP 404 - GET https://whats-on-today.herokuapp.com/assets/application-96ded6f70c682e6f9f3a1ae3eb283ae0.js 
whats-on-today.herokuapp.com/:16 

HTTP 404 - GET https://whats-on-today.herokuapp.com/assets/application-2b56caae7bd0b485593c1fca2397cc26.css 

Я понятия не имею, что это за файлы css и почему они существуют. Мой код макета приложения выглядит следующим образом:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title><%= content_for?(:title) ? yield(:title) : "DemoApp" %></title> 
    <%= csrf_meta_tags %> 

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> 
    <!--[if lt IE 9]> 
     <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.1/html5shiv.js" type="text/javascript"></script> 
    <![endif]--> 

    <%= stylesheet_link_tag "application", :media => "all" %> 

    <!-- For third-generation iPad with high-resolution Retina display: --> 
    <!-- Size should be 144 x 144 pixels --> 
    <%= favicon_link_tag 'apple-touch-icon-144x144-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '144x144' %> 

    <!-- For iPhone with high-resolution Retina display: --> 
    <!-- Size should be 114 x 114 pixels --> 
    <%= favicon_link_tag 'apple-touch-icon-114x114-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '114x114' %> 

    <!-- For first- and second-generation iPad: --> 
    <!-- Size should be 72 x 72 pixels --> 
    <%= favicon_link_tag 'apple-touch-icon-72x72-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '72x72' %> 

    <!-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: --> 
    <!-- Size should be 57 x 57 pixels --> 
    <%= favicon_link_tag 'apple-touch-icon-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png' %> 

    <!-- For all other devices --> 
    <!-- Size should be 32 x 32 pixels --> 
    <%= favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' %> 

    <%= javascript_include_tag "application" %> 
    </head> 
    <body> 

    <div class="navbar navbar-default navbar-static-top"> 
     <div class="container"> 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse"> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
     </button> 
     <a class="navbar-brand" href="#">DemoApp</a> 
     <div class="navbar-collapse collapse navbar-responsive-collapse"> 
      <ul class="nav navbar-nav"> 
      <li><%= link_to "Link1", "/path1" %></li> 
      <li><%= link_to "Link2", "/path2" %></li> 
      <li><%= link_to "Link3", "/path3" %></li> 
      </ul> 
     </div> 
     </div> 
    </div> 

    <div class="container"> 
     <div class="row"> 
     <div class="col-lg-9"> 
      <%= bootstrap_flash %> 
      <%= yield %> 
     </div> 
     <div class="col-lg-3"> 
      <div class="well sidebar-nav"> 
      <h3>Sidebar</h3> 
      <ul class="nav nav-list"> 
       <li class="nav-header">Sidebar</li> 
       <li><%= link_to "Link1", "/path1" %></li> 
       <li><%= link_to "Link2", "/path2" %></li> 
       <li><%= link_to "Link3", "/path3" %></li> 
      </ul> 
      </div><!--/.well --> 
     </div><!--/span--> 
     </div><!--/row--> 

     <footer> 
     <p>&copy; Company 2014</p> 
     </footer> 

    </div> <!-- /container --> 

    </body> 
</html> 

Кто-нибудь может объяснить, почему код при развертывании на Heroku выглядит следующим образом:

enter image description here

+1

ли вы добавить 'драгоценный камень «rails_12factor» в вашей производственной группе Gemfile? [Читайте больше информации в документах Heroku] (https://devcenter.heroku.com/articles/getting-started-with-rails4#heroku-gems). – fivedigit

+0

Нет, я не знал об этом. Я попробую. Почему это связано с CSS-файлом, которого я действительно не имею в своем исходном дереве? – RenegadeAndy

+0

Файл CSS ссылается на ваш макет. Хэш в имени файла будет хэшем файла CSS, это что-то из конвейера Rails. Я подозреваю, что Heroku не может предварительно прекомпилировать из-за недостающего драгоценного камня, поэтому вам не хватает активов на производстве. – fivedigit

ответ

6

Пожалуйста, попробуйте изменить конфигурации/сред/production.rb и тест.

config.assets.compile = true 

или использовать камень для рельсов 4 по производству

gem 'rails_serve_static_assets', group: :production 

или использовать rails_12factor камень (Этот камень добавляет два других драгоценных камней rails_serve_static_assets и rails_stdout_logging)

gem 'rails_12factor', group: :production 
+0

Так геройку берут на себя производство по умолчанию? – RenegadeAndy

+0

Да, это, производство по умолчанию – rjackson

Смежные вопросы