2010-05-20 20 views
4

J'ai mis en place facebooker pour tunnelliser mon application Ruby on Rails.stylesheet_link_tag produire des liens absolus au lieu de relatif

Le problème est que je voudrais tester localement. Autrement dit, je ne veux pas avoir à démarrer un tunnel chaque fois que je veux voir mes changements.

En ce moment, quand je commence l'application à l'aide ruby script/server (ne pas appeler rake facebooker:tunnel:background_start au préalable), les liens créés par des aides (par exemple, stylesheet_link_tag, javascript_include_tag, image_tag) sont à mon adresse préfixé de tunnlr: http://web1.tunnlr.com:myPort/. (Par exemple, un lien CSS ressemble à ceci dans la source de la page: http://web1.tunnlr.com:myPort//stylesheets/appName.css?1234567890.)

Je ne veux pas cette fonctionnalité; Je ne peux pas voir mes modifications CSS ou JavaScript sans avoir à démarrer le tunnel en premier. Je veux que les liens soient relatifs, pas absolus. Donc, stylesheet_link_tag devrait produire /stylesheets/appName.css?1234567890.

Est-ce que quelqu'un sait pourquoi il le fait en premier lieu et comment le réparer?

Merci d'avance.

Répondre

13

L'AssetTagHelper utilise votre URL asset_host. Je ne suis pas sûr que facebooker est mise pour vous (je ne sais pas beaucoup sur Facebooker), mais vous pouvez le réinitialiser à votre avis aucun problème:

Avant stylesheet_link_tab simplement remplacer l'URL hôte:

ActionController::Base.asset_host = "localhost:3000" 
# or 
ActionController::Base.asset_host = "" 

donc, en utilisant ERB il pourrait ressembler à ceci:

<% ActionController::Base.asset_host = "" %> 
<%= stylesheet_link_tag "stylesheet.css" %> 

Walabing!

+2

Il est préférable de placer le paramètre dans config/environments/development.rb –

+0

+1 En fonction du contexte, vous pouvez peut-être faire ActionController :: Base.asset_host = root_url [0 ..- 2] '(le' [0 ..- 2] 'pour couper la barre oblique finale – zelanix