Ich würde so etwas gerne machen
config.default_Host = 'www.subdomain.example.com'
in einigen meiner Konfigurationsdateien, so dass object_url
-Helfer (ActionView::Helpers::UrlHelper
) Links erzeugen, die mit http://www.subdomain.example.com beginnen
Ich habe versucht, die Dokumente zu durchsuchen, fand aber nichts außer ActionMailer
docs und http://api.rubyonrails.org/classes/Rails/Configuration.html , was für mich nicht nützlich ist, da ich es nicht weiß in welchen pat schauen. Gibt es einen Ort, der die gesamte Struktur von Rails :: Initializer.config beschreibt?
asset_Host
funktioniert nicht für URLs
Sie müssen default_url_options
in Ihrer ApplicationController
überschreiben (zumindest in 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
Definieren Sie den Standardhost in Ihrer Umgebungskonfiguration:
# config/environments/staging.rb
MyApp::Application.configure do
# ...
Rails.application.routes.default_url_options[:Host] = 'preview.mydomain.com'
# ...
end
Dann können Sie an beliebiger Stelle in Ihrer App eine URL erstellen:
Rails.application.routes.url_helpers.widgets_url()
Oder fügen Sie die URL-Helfer in Ihre Klasse ein:
class MyLib
include Rails.application.routes.url_helpers
def make_a_url
widgets_url
end
end
Wenn Sie den Standardhost nicht definieren, müssen Sie ihn als Option übergeben:
widgets_url Host: (Rails.env.staging? ? 'preview.mydomain.com' : 'www.mydomain.com')
Es ist auch nützlich, Dinge wie das Protokoll anzugeben:
widgets_url protocol: 'https'
Eine andere Möglichkeit ist es so einzustellen
# config/production.rb
config.action_controller.default_url_options = { Host: 'myproduction.com' }
Sie können einfach :Host
oder/und :only_path
-Parameter für jeden url_helper ..__ einstellen.
yours_url(params, :Host => "http://example.com", :only_path => Rails.env.test?)
.__ Auf diese Weise setzen Sie keine globalen default_url_options in Ihren Umgebungen, es sei denn, Sie möchten dies.
Soweit ich weiß, verwenden die *_url
-Helfer den konfigurierten Hostnamen des Servers. Wenn meine Apache-Installation beispielsweise Anforderungen für diese Rails-App unter http://www.myapp.com/
akzeptiert, verwendet Rails diese Adresse. Deshalb verweisen die *_url
-Methoden in einer Entwicklungsumgebung standardmäßig auf http://localhost:3000
.
Der in der vorherigen Antwort vorgeschlagene Asset-Host wirkt sich nur auf die Helfer image_tag
, stylesheet_link_tag
und javascript_link_tag
aus.