web-dev-qa-db-fra.com

Comment définir config.action_controller.default_url_options = {: Host = '#' '} par environnement

En ce moment, j'utilise ceci qui fonctionne pour l'hôte de développement, mais je dois changer manuellement le code {: Host => ""} lorsque je passe en production.

post.rb

def share_all
  url =  Rails.application.routes.url_helpers.post_url(self, :Host => 'localhost:3000')
  if user.authentications.where(:provider => 'Twitter').any?
    user.Twitter_share(url)  
  end
end

J'aimerais utiliser ceci et définir ensuite les options default_url_options par environnement:

post.rb

def share_all
  url =  Rails.application.routes.url_helpers.post_url(self)
  if user.authentications.where(:provider => 'Twitter').any?
    user.Twitter_share(url)  
  end
end

J'ai essayé d'ajouter ceci à mon config/environnements/development.rb mais j'obtiens toujours le message d'erreur "hôte manquant vers lequel créer un lien! Veuillez fournir: paramètre hôte ou définir default_url_options [: hôte]" 

développement.rb

config.action_controller.default_url_options = {:Host => "localhost:3000"}

Et j'ai même essayé de cette façon:

développement.rb

config.action_controller.default_url_options = {:Host => "localhost", :port => "3000"}

MODIFIER:

J'ai maintenant aussi suivi ceci et toujours le même guide d'erreur http://edgeguides.rubyonrails.org/action_controller_overview.html#default_url_options

contrôleur d'application

class ApplicationController < ActionController::Base
  protect_from_forgery
  include ApplicationHelper
  def default_url_options
    if Rails.env.production?
      { :Host => "example.com"}
    else
      {:Host => "example1.com"}
    end
  end
end

Cela me rend fou, qu'est-ce qui me manque ici ???

55
trying_hal9000

Ok je l'ai compris la bonne façon de l'écrire est 

Rails.application.routes.default_url_options[:Host] = 'localhost:3000'

:)

111
trying_hal9000

Vous devez redémarrer votre serveur avant que les modifications apportées à ce fichier prennent effet.

6
Ryan Bigg

Héritez du default_url_options de votre application de ActionMailer.

Vous souhaitez conserver les éléments DRY le plus possible. Idéalement, vous ne souhaitez pas coder en dur votre hôte et votre port dans plusieurs endroits pour le même environnement, à moins que votre ActionMailer en fait utilise un hôte différent port que le reste de votre Application.

Pour définir le default_url_options pour votre Application entière, ajoutez simplement la ligne suivante à votre fichier config/environment.rb (en changeant MyApp en nom de votre application): 

# Set the default Host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options

Cela résoudra votre problème et définira automatiquement votre default_url_options de Application sur la même chose que votre config.action_mailer.default_url_options:

$ MyApp::Application.config.action_mailer.default_url_options
#=> {:Host=>"lvh.me", :port=>"3000"}

$ MyApp::Application.default_url_options
#=> {:Host=>"lvh.me", :port=>"3000"}
5
Joshua Pinter

config.action_mailer.default_url_options = {: Hôte => "votre hôte"}

par exemple votre hôte localhost: 3000

vous pouvez le mettre dans test.rb, development.rb, fichiers de production.rb. L'hôte peut différer d'un environnement à l'autre.

0
Ashok Reddy Reddem