2009-07-28 5 views
0

J'envoie un courriel contenant un lien vers mon site Web. Je veux pouvoir le tester localement et être capable de déplacer facilement les scripts vers différents hôtes.localhost on rails

Dans mon e-mail en ce moment j'utilise les éléments suivants:

<%= url_for(:host => 'localhost:3000', :controller => "user_activations", :action => "show", :id=>@id, :confirm=>@passcode) %> 

Cela fonctionne pour lors du test au niveau local mais évidemment l'échec de la production. Existe-t-il un moyen facile d'avoir des rails (ou rubis) qui détectent l'hôte actuel? Je pense quelque chose comme $ _SERVER de php. Je réalise que je peux utiliser une certaine logique en utilisant ma variable d'environnement mais je voudrais éviter cela.

Merci

Répondre

1

dans des environnements/development.rb

config.action_mailer.default_url_options = { :host => "localhost", :port => 3000 } 

dans des environnements/production.rb

config.action_mailer.default_url_options = { :host => "www.xyu.at" } 

et des tests avec utilisation rspec-email :)

+0

juste pour noter, un moyen facile de faire ceci est d'utiliser un fichier de configuration de yaml, puis juste utilisateur default_url_o ptions = yml [ENV] – Ori

2

Je définis un « hôte » dans mon environment.rb constant qui définit mon hôte. Vous pouvez également utiliser request.host ou request.domain.

+0

Put HOST = "localhost: 3000" votre environnements/development.rb et le live dans les environnements/production.rb c.-à-d. HOST = "www.myhost.com" –