2014-04-23 7 views
0

J'essaie de déployer ma première application Rails, mais je reçois 404 Non trouvé pour tous les éléments (fichiers .css, .js et images). J'ai essayé plusieurs façons de faire fonctionner les choses, mais rien n'a fonctionné. Tous les chemins d'actifs se présentent comme suit:Rails - actifs non trouvés après le déploiement

/stylesheets/application.css 

Mon fichier production.rb: http://pastebin.com/SeVNEZD9 Mon application.html.erb, où j'inclus ces actifs se présentent comme suit: http://pastebin.com/gHkpfA8Z Merci avant pour toute aide.

+0

qui rails version que vous utilisez? – Jenorish

+0

Utilisation de Rails version 4.0.4. – gabriel

+0

avez-vous ajouté du code dans 'application.css' ?? et utilisez-vous un serveur web? – Jenorish

Répondre

1

Dans config/environments/production.rb fichier ajouter

config.assets.digest = true 

Alors stylesheet_link_tag va générer url empreintes digitales.

+0

Il a été là , mais il ne génère pas d'URL fingeprint – gabriel

0

Vous devez précompiler vos ressources pour cela en exécutant cette commande sur le terminal.

RAILS_ENV=production bundle exec rake assets:precompile

+0

Comme j'ai répondu à la réponse précédente, j'ai essayé, mais cela n'a pas aidé. – gabriel

0

Après le déploiement, vous devez faire

RAILS_ENV=production bundle exec rake assets:precompile 
+0

Bien sûr, j'ai essayé, mais cela n'a pas aidé. – gabriel

+0

@gabriel s'il vous plaît vérifier ces lignes sont là dans les environnements/production.rb. http://pastie.org/9103118 – Jyothu

+0

En fait, vous dites que 'config.assets.compile' devrait être défini sur' false', mais dans mon code, il est défini sur 'true'. Laquelle est correcte? (J'ai essayé de le changer en 'false 'mais cela n'a pas aidé – gabriel

0

Depuis ceci est votre première application Rails, laissez-moi vous expliquer où votre problème pourrait être:

Lorsque vous créez vos actifs, ils résident dans le asset pipeline. Ce est un dossier situé à /app/assets où vos fichiers d'actifs seront stockés

Si vous souhaitez utiliser des actifs dans la production, il y a deux façons de le faire - la première consiste à utiliser les actifs dynamiquement, ou à utiliser les comme statique (où vous précompilez). Lorsque vous utilisez les goûts de Heroku etc, vous devez utiliser les actifs statiques, ce qui explique pourquoi ils les PreCompile pour vous lorsque vous déployez

Le problème des actifs statiques est que Rails creates fingerprints pour eux. Ces empreintes digitales leur donnent essentiellement un identifiant unique que vous devez référencer dynamiquement en utilisant <%= asset_path %> etc

Votre problème est probablement dû vous pas accéder aux actifs précompilés correctement. La façon de résoudre ce problème est d'utiliser asset tag helpers comme ceci:

#app/views/layouts/application.html.erb 
<%= stylesheet_link_tag "application" %> 
<%= javascriot_include_tag "application" %> 
+0

En fait, voici comment mon fichier application.html.erb ressemble à: http://pastebin.com/gHkpfA8Z – gabriel

0

Il semble que cela fonctionne maintenant. J'avais besoin de redémarrer le serveur pour appliquer les changements. Quelqu'un peut-il me dire pourquoi est-ce que je dois redémarrer le serveur pour appliquer ces changements? Je veux l'éviter à l'avenir.

Je poste mon fichier production.rb pour ceux qui sont confrontés à des problèmes similaires: http://pastebin.com/7Uskvcuc

+0

Si vous travaillez en production, vous devez redémarrer le serveur, sinon tout ce qui change, vous ne l'appliquerez pas, il faudra de cache.my réponse fonctionne signifie vote en hausse ou accepte ma réponse. – Jenorish

Questions connexes