Je voudrais faire quelque chose comme ça
config.default_Host = 'www.subdomain.example.com'
dans certains de mes fichiers de configuration, de sorte que object_url
helpers (ActionView::Helpers::UrlHelper
) produise des liens commençant par http://www.subdomain.example.com
J'ai essayé de chercher dans la documentation mais je n'ai rien trouvé à part les documents ActionMailer
et http://api.rubyonrails.org/classes/Rails/Configuration.html qui ne me sont pas utiles, car je ne sais pas dans quelle patte à regarder. Existe-t-il un endroit décrivant la structure complète de Rails :: Initializer.config?
asset_Host
ne fonctionne pas pour les URL
Vous devez remplacer default_url_options
dans votre ApplicationController
(au moins dans Rails 3)
http://edgeguides.rubyonrails.org/action_controller_overview.html#default-url-options
class ApplicationController < ActionController::Base
def default_url_options
if Rails.env.production?
{:Host => "myproduction.com"}
else
{}
end
end
end
Définissez l'hôte par défaut dans la configuration de votre environnement:
# config/environments/staging.rb
MyApp::Application.configure do
# ...
Rails.application.routes.default_url_options[:Host] = 'preview.mydomain.com'
# ...
end
Ensuite, vous pouvez créer une URL n'importe où dans votre application:
Rails.application.routes.url_helpers.widgets_url()
Ou incluez les aides URL dans votre classe:
class MyLib
include Rails.application.routes.url_helpers
def make_a_url
widgets_url
end
end
Si vous ne définissez pas l'hôte par défaut, vous devrez le transmettre en tant qu'option:
widgets_url Host: (Rails.env.staging? ? 'preview.mydomain.com' : 'www.mydomain.com')
Il est également utile de spécifier des éléments tels que le protocole:
widgets_url protocol: 'https'
Une autre façon est de le définir comme ceci
# config/production.rb
config.action_controller.default_url_options = { Host: 'myproduction.com' }
Vous pouvez facilement définir les paramètres :Host
ou/et :only_path
pour chaque url_helper .
yours_url(params, :Host => "http://example.com", :only_path => Rails.env.test?)
Ainsi, vous ne définissez pas d'options par défaut default_url_options dans vos environnements, sauf si vous le souhaitez.
Autant que je sache, les assistants *_url
utilisent le nom d'hôte configuré du serveur. Ainsi, par exemple, si mon installation Apache accepte les demandes pour cette application Rails à http://www.myapp.com/
, Rails utilisera cette adresse. C'est pourquoi les méthodes *_url
dans un environnement de développement pointent par défaut sur http://localhost:3000
.
L'hôte de ressource suggéré dans la réponse précédente n'affectera que les assistants image_tag
, stylesheet_link_tag
et javascript_link_tag
.