7
votes

Mise à niveau des rails 3.1.3 aux rails 3.2.1. Erreur avec des actifs

J'essaie de mettre à niveau mon application des rails 3.1.3 aux rails 3.2.1 et j'ai un problème avec des actifs.

J'ai ce genre d'erreur: p>

Started GET "/assets/application.js" for 127.0.0.1 at 2012-02-06 17:04:38 -0500
Served asset /application.js - 404 Not Found (1ms)

ActionController::RoutingError (No route matches [GET] "/assets/application.js"):
  actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.1) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call'
  railties (3.2.1) lib/rails/engine.rb:479:in `call'
  railties (3.2.1) lib/rails/application.rb:220:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
  /usr/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
  /usr/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
  /usr/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'


8 commentaires

Vous dites que l'actif est dans app / actifs / images , mais vous appelez l'image à partir de l'application / actifs / logos


Désolé, c'est mon erreur. Mon fichier est ici: App / Actifs / Images / Logos / Opera_Logo.png. J'ai édité mon post.


Je me demande si l'édition d'un message a changé le message RoutingError. Selon votre journal au-dessus de l'image, vous vous référez de ne pas figurer dans le dossier actifs / images , mais dans actifs / logos . Modifiez l'emplacement de votre fichier à actifs / logos ou mieux trouvez le lien de référence et modifiez-le en correspondance actifs / images / opéra_logo.png


Si ce qui précède ne vous aidera pas, vérifiez la génération des actifs en essayant, par exemple http: // localhost: 3000 / actifs / applications.css . Vous verrez si vos styles ont été générés sous le dossier . S'ils n'étaient pas, vérifiez si les actifs pipeline sont activés.


Désolé, j'ai choisi le mauvais exemple. C'est la même chose avec Application.css qui est localisée à cet endroit App / Actifs / StylesSheets / Application.css. J'ai cette erreur: ActionController :: routingError (aucun itinéraire correspondant [get] "/assets/application.css")


Voulez-vous montrer le contenu de votre fichier gemfile et votre fichier de développement.rb (en supposant que vous exécutez votre code en mode DEV)?


Je modifie mon message pour ajouter gemfile, développement.rb et application.rb


Je modifie mon message pour mettre un meilleur exemple.


5 Réponses :


0
votes

J'ai rencontré quelque chose de similaire plus tôt. Comment les référencez-vous? Est-ce un échec de l'échec de l'image_tag ou de la référence CSS?

Si votre fichier est ici ici /app/assets/images/logos/opera_logo.png puis les références suivantes doivent fonctionner.

à partir d'un fichier html.erb: <% = image_tag ('logos / opéra_logo.png')%>

à partir d'un fichier SCSS: arrière-plan: URL (image_path ("logos / opéra_logo.png"))

http://guides.rubyonRails.org/asset_pipeline.html# codage-links-to-actifs


0 commentaires

0
votes

Essayez d'ajouter ceci à votre gemfile et redémarrez le serveur, conformément à: http://guides.rubyonrails.org/asset_pipeline.html#upgrading-de-old-fersions-of-Rails

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   "~> 3.2.3"
  gem 'coffee-rails', "~> 3.2.1"
  gem 'uglifier'
end


0 commentaires

2
votes

Apparemment, une dépendance GEM est cassée et Bundle Exec Rails Server devrait résoudre ce problème. Cela devrait être exécuté sans sudo ... sauf si vous travaillez habituellement avec votre application avec des privilèges root (ce qui n'est pas bon). Vérifiez les autorisations de fichiers / dossiers dans votre racine de votre rails, qui aurait pu être brisée en préjuant des commandes sudo plus tôt. En développement, vous n'avez guère besoin de privilèges root.

autre que cela, Les problèmes similaires sont également apparus auparavant et la réponse consistait à mettre à jour tout votre gemise, principalement des pignons et des rails. Vos fichiers de configuration vont bien pour moi et je ne peux pas reproduire l'erreur.

Si cela n'aidait pas, je créerais une nouvelle application Rails, vérifiez que le pipeline d'actifs y travaille avec le même gemise que vous avez et vérifiez manuellement tous les fichiers de configuration.

Il existe également divers outils de débogage pour le routage, mais essayez d'abord ce qui précède.


3 commentaires

J'ai installé un nouveau gemset, avec RVM, et ça marche! Merci beaucoup.


J'ai démarré Server Server avec Bundle Exec Rails s et ça marche. La tâche de Strage à propos de cette erreur est que les autres actifs (Javascripts, stylesheets) fonctionnent bien avec Rails S mais des images ne le font pas.


@Giovanni vous donnez trop peu de détails pour comprendre. Veuillez commencer une nouvelle question expliquant votre situation. Assurez-vous d'inclure votre Gemfile et des appels vers Images Actifs qui ne fonctionnent pas et des messages d'erreur complets.



13
votes

Je frappe un problème similaire que j'ai résolu en supprimant le active_reload gem.


3 commentaires

Cela le corrigé pour moi. Merci!


Il s'agit d'un problème pour les rails <3,2 projets allant à 3,2+ ... La page d'accueil du projet indique actif_reload est incompatible avec les rails 3.2 en avance.


Après quelques heures de recherche - j'ai été trouvé. Merci beaucoup!



0
votes

Nouveau sur Rails, mais pour mes images situées dans le répertoire ../ app / actifs / images par exemple "rails.png" La référence CSS appropriée pour une image d'arrière-plan est la suivante: arrière-plan: URL blanc (rails.png) Répétition-y; (options affichées)

Même si c'est dans le dossier Images, avec des rails 3.2.6 (version que j'utilise), vous ne mettez pas la partie Images du répertoire.


0 commentaires