2009-10-13 6 views
0

J'ai lu cela en définissant ActionController :: Base.asset_host, vous pouvez contrôler où les rails recherchent des actifs. Cependant, par défaut Rails devrait regarder dans '/ public/...'Rails image_tag recherche des actifs sur mon serveur de production!

Quelque part mon application Rails sait regarder mon adresse de production en mode de développement et je n'ai pas défini ActionController :: Base.asset_host n'importe où. Je ne suis pas sûr où trouver cette information. Y at-il d'autres endroits où cela peut être réglé? Je ne pense pas que mes recettes de Déployez devraient rien avoir à faire avec elle ...

<%= image_tag 'my_logo.png' %> 

provoque Rails pour vérifier mon serveur de production pour le fichier. Pareil avec les feuilles de style.

+0

Avez-vous reçu votre demande pour votre adresse de production? Ça doit être là quelque part. – nfm

+0

oui, les répertoires app et config. l'adresse est là dedans mais pas n'importe où je penserais changer ce paramètre global – Tony

+0

Pouvez-vous écrire plus d'information, c.-à-d. un appel de méthode d'exemple qui récupère des capitaux de votre adresse de production au lieu de localement? Êtes-vous sûr que votre application fonctionne en mode développement? Utilisez-vous webrick pour tester ou autre chose? – nfm

Répondre

0

Je ne sais pas exactement comment Rails a su trouver mon domaine de production. Je l'ai enlevé presque partout dans mon code. Selon le docs, "Par défaut, Rails lie à ces actifs sur l'hôte actuel dans le dossier public" mais je ne suis pas sûr de ce que cela signifie. Pour éviter que cela ne soit plus un problème et pour permettre une configuration flexible, j'ai ajouté des domaines d'hôtes actifs à ma configuration d'environnement. J'ai maintenant quelque chose comme:

EnvironmentConfig = YAML.load(File.read(Rails.root + "config/#{rails_env}" + 'environment.yml'))[rails_env] 

ActionController::Base.asset_host = EnvironmentConfig['asset_host'] 

Tout fonctionne très bien maintenant. Je ne sais toujours pas comment Rails a su regarder mon domaine de production.

Questions connexes