3 votes

Rails 3.1 / Active Admin / Heroku erreur au premier chargement - Sass::SyntaxError

Lorsque l'application est lancée sans aucune activité pendant un certain temps, elle affiche l'erreur suivante :

Sass::SyntaxError (File to import not found or unreadable: active_admin/mixins.

Si je rafraîchis la page, elle se charge parfaitement sans aucune erreur.

Est-ce un problème Heroku ou une erreur réelle de l'application ? Quelqu'un connaît-il une solution ?

4voto

Benjamin Points 1413

Vous devez supprimer la gemme 'sass-rails', " ~> 3.1.0" de l'ensemble des groupes.

1voto

Neil Middleton Points 12203

Je suppose que vous avez une erreur de syntaxe Sass que le pipeline d'actifs traite pendant la compilation. Si cela ne se produit qu'après une période d'inactivité, c'est que l'application est mise en veille par Heroku et doit redémarrer pour répondre à une requête, ce qui fait que le pipeline d'actifs se réveille à nouveau.

1voto

Stephane Paul Points 21

Ajoutez un sass_heroku.rb à config/initializers et cela devrait faire l'affaire.

heroku = !!ENV['HEROKU_TYPE']
css_dir = heroku ? 'tmp' : 'public'
location = Rails.root + 'app/styles'

unless Sass::Plugin.template_location_array.any? { |pair| pair.first.to_s == location.to_s }
    Sass::Plugin.add_template_location(location, Rails.root + css_dir + 'stylesheets')
end

if heroku
  Sass::Plugin.template_location_array.each do |template_location, css_location|
    css_location.sub!(%r{/public/stylesheets$}, "/#{css_dir}/stylesheets")
  end
  Rails.configuration.middleware.insert_after 'Sass::Plugin::Rack', 'Rack::Static', :urls => ['/stylesheets'], :root => "#{Rails.root}/tmp"
end

1voto

Martin Streicher Points 476

J'ai essayé plusieurs choses sans succès. J'ai essayé de précompiler localement et sur Heroku.

Lorsque j'accède à mon site Heroku, j'obtiens...

ActionView::Template::Error (File to import not found or unreadable: active_admin/mixins.
2012-08-01T22:00:22+00:00 app[web.2]: Load paths:
2012-08-01T22:00:22+00:00 app[web.2]:   /app
2012-08-01T22:00:22+00:00 app[web.2]:   /app/vendor/bundle/ruby/1.9.1/gems/activeadmin-0.4.4/app/assets/stylesheets
2012-08-01T22:00:22+00:00 app[web.2]:   (in /app/app/assets/stylesheets/active_admin.css.scss)):
2012-08-01T22:00:22+00:00 app[web.2]:     6:   <title><%= [@page_title, active_admin_application.site_title].compact.join(" | ") %></title>
2012-08-01T22:00:22+00:00 app[web.2]:     7: 
2012-08-01T22:00:22+00:00 app[web.2]:     8:   <% ActiveAdmin.application.stylesheets.each do |style| %>
2012-08-01T22:00:22+00:00 app[web.2]:     9:     <%= stylesheet_link_tag style.path, style.options %>
2012-08-01T22:00:22+00:00 app[web.2]:     10:   <% end %>
2012-08-01T22:00:22+00:00 app[web.2]:     11:   <% ActiveAdmin.application.javascripts.each do |path| %>
2012-08-01T22:00:22+00:00 app[web.2]:     12:     <%= javascript_include_tag path %>
2012-08-01T22:00:22+00:00 app[web.2]:   app/assets/stylesheets/active_admin.css.scss:2

0voto

spartan_dev Points 103

J'ai essayé la solution de Stéphane Paul, même si je ne suis pas assez intelligent pour la comprendre - ça n'a rien donné.

Ce qui a résolu le problème pour moi, c'est la précompilation à l'avance.

Juste pour clarifier, je n'ai vu cette erreur que lorsque j'ai essayé d'utiliser activeadmin sur Heroku - cela fonctionnait bien en développement.

Et la solution était d'exécuter rake assets:precompile et assurez-vous de git commiter le répertoire public/assets à heroku, qui ne précompliquera pas les actifs eux-mêmes, donc l'erreur sera ignorée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X