このようなことをしたい
config.default_Host = 'www.subdomain.example.com'
一部の構成ファイルで、object_url
ヘルパー(ActionView::Helpers::UrlHelper
) http://www.subdomain.example.com で始まるリンクを作成します
私はドキュメントを検索しようとしましたが、ActionMailer
ドキュメントと http://api.rubyonrails.org/classes/Rails/Configuration.html 以外は何も見つかりませんでしたが、これは役に立ちません私にとって、どのパットを見るべきかわからないからです。 Rails :: Initializer.configの構造全体を説明する場所はありますか?
asset_Host
はURLでは機能しません
ApplicationController
でdefault_url_options
をオーバーライドする必要があります(少なくとも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
環境設定でデフォルトのホストを定義します。
# config/environments/staging.rb
MyApp::Application.configure do
# ...
Rails.application.routes.default_url_options[:Host] = 'preview.mydomain.com'
# ...
end
次に、アプリの任意の場所にURLを作成できます。
Rails.application.routes.url_helpers.widgets_url()
または、クラスにURLヘルパーを含めます。
class MyLib
include Rails.application.routes.url_helpers
def make_a_url
widgets_url
end
end
デフォルトのホストを定義しない場合は、オプションとして渡す必要があります。
widgets_url Host: (Rails.env.staging? ? 'preview.mydomain.com' : 'www.mydomain.com')
プロトコルのようなものを指定することも有用です:
widgets_url protocol: 'https'
別の方法は、このように設定することです
# config/production.rb
config.action_controller.default_url_options = { Host: 'myproduction.com' }
Url_helperごとに_:Host
_または/および_:only_path
_パラメーターを簡単に設定できます。 yours_url(params, :Host => "http://example.com", :only_path => Rails.env.test?)
この方法では、必要でない限り、グローバルなdefault_url_optionsを環境に設定しません。
私の知る限り、*_url
ヘルパーは、サーバーの構成済みのホスト名を使用します。たとえば、Apacheインストールがこのリクエストを受け入れている場合、Rails app at http://www.myapp.com/
then Railsはそのアドレスを使用します。だから*_url
開発環境のメソッドはhttp://localhost:3000
デフォルトでは。
前の回答で提案されたアセットホストは、image_tag
、stylesheet_link_tag
およびjavascript_link_tag
ヘルパー。