33 votes

Le déploiement de rails 3.1 sur heroku .css n'est pas une erreur précompilée

Mise à jour

J'ai eu cette erreur parce que j'avais un public.css et public.js fichier qui n'a pas été compilé avec le reste de la .css et .js fichiers. La solution était d'ajouter cette ligne à la production.rb fichier

# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w( public.js public.css  )

Comme vous le voyez sur les commentaires de tous les noms de fichiers de l'application sont déjà ajoutés. Donc, j'ai juste eu à ajouter ceux qui n'était pas d'application.

Espérons que cela aide quelqu'un!

Question d'origine

J'ai ce petit bijou de fichier

gem 'rails', '3.1.0'

group :production do
  gem 'pg'
end
group :development, :test do
  gem 'sqlite3'
end

gem "heroku"
gem 'thin'
gem 'sass-rails', "  ~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'tabulous'
gem 'json'
gem "paperclip", "~> 2.4"
gem "devise"
gem "redcarpet"

group :assets do

  gem 'uglifier'
end

gem 'jquery-rails'

gem "rspec-rails", :group => [:test, :development]
group :test do
end

quand j'déployer avec "git push heroku maître" je vois ce

Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       mkdir -p /tmp/build_2m34y4hj01m4o/public/assets
       mkdir -p /tmp/build_2m34y4hj01m4o/public/assets
       mkdir -p /tmp/build_2m34y4hj01m4o/public/assets
       mkdir -p /tmp/build_2m34y4hj01m4o/public/assets/admin
       mkdir -p /tmp/build_2m34y4hj01m4o/public/assets/admin
-----> Rails plugin injection
       Injecting rails_log_stdout
       Injecting rails3_serve_static_assets
-----> Discovering process types
       Procfile declares types      -> (none)
       Default types for Ruby/Rails -> console, rake, web, worker
-----> Compiled slug size is 31.2MB
-----> Launching... done, v5
       http://maktaba.herokuapp.com deployed to Heroku

mais dans le heroku journaux je reçois ce ActionView::Template::Erreur. css n'est pas précompilés Étrange.. je thougt il était à la recherche à la mise en place de la rétroaction

2011-11-23T22:59:48+00:00 app[web.1]: Rendered public/index.html.erb within layouts/first (0.7ms)
2011-11-23T22:59:48+00:00 app[web.1]: Completed 500 Internal Server Error in 30ms
2011-11-23T22:59:48+00:00 app[web.1]:
2011-11-23T22:59:48+00:00 app[web.1]: ActionView::Template::Error (public/public.css isn't precompiled):
2011-11-23T22:59:48+00:00 app[web.1]:     2: <html>
2011-11-23T22:59:48+00:00 app[web.1]:     3: <head>
2011-11-23T22:59:48+00:00 app[web.1]:     4:   <title>Maktaba</title>
2011-11-23T22:59:48+00:00 app[web.1]:     5:   <%= stylesheet_link_tag    "public/public" %>
2011-11-23T22:59:48+00:00 app[web.1]:     6:   <%= javascript_include_tag "public/public" %>
2011-11-23T22:59:48+00:00 app[web.1]:     7:   <%= csrf_meta_tags %>
2011-11-23T22:59:48+00:00 app[web.1]:     8:   <%= csrf_meta_tags %>
2011-11-23T22:59:48+00:00 app[web.1]:   app/views/public/index.html.erb:5:in `_app_views_public_index_html_erb___1726244208117637261_45234420'
2011-11-23T22:59:48+00:00 app[web.1]:   app/controllers/public_controller.rb:13:in `block (2 levels) in index'
2011-11-23T22:59:48+00:00 app[web.1]:
2011-11-23T22:59:48+00:00 app[web.1]:   app/controllers/public_controller.rb:12:in `index'

Pouvez-vous tout de voir ce que je fais de mal?

18voto

Dru Points 2284
  • Exécutez bundle exec rake assets:precompile sur votre code local
  • Valider les changements et déployer à heroku

Si c'est la première fois que vous déployez votre application sur heroku, il se peut que vous rencontriez davantage d'erreurs après la résolution de ce problème. Laissez-moi savoir ce qui se passe.

7voto

sscirrus Points 12987

En fait, vous devez exécuter une précompilation pour votre environnement de production :

  • Exécuter RAILS_ENV=production bundle exec rake assets:precompile sur local
  • S'engager et se déployer à Heroku

Plus généralement, les documents Heroku décrivent trois options pour la compilation d’actifs pour Rails 3.1+ sur Cedar:

  1. Compiler localement (couvert dans cette réponse)
  2. Compiler lors de la compilation du slug
  3. Compiler pendant l'exécution

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