I would like to do something like this
config.default_host = 'www.subdomain.example.com'
in some of my configuration files, so that object_url
helpers (ActionView::Helpers::UrlHelper
) produce links beginning with http://www.subdomain.example.com
I have tried to search the docs but I did not find anything except ActionMailer
docs and http://api.rubyonrails.org/classes/Rails/Configuration.html which is not useful for me, because I do not know in which pat to look. Is there a place which describes the whole structure of Rails::Initializer.config?
asset_host
doesn't work for urls
You need to override default_url_options
in your ApplicationController
(at least 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
Define the default host in your environment config:
# config/environments/staging.rb MyApp::Application.configure do # ... Rails.application.routes.default_url_options[:host] = 'preview.mydomain.com' # ... end
Then you can create a URL anywhere in your app:
Rails.application.routes.url_helpers.widgets_url()
Or include the URL helpers in your class:
class MyLib include Rails.application.routes.url_helpers def make_a_url widgets_url end end
If you don't define the default host, you will need to pass it as an option:
widgets_url host: (Rails.env.staging? ? 'preview.mydomain.com' : 'www.mydomain.com')
It's also useful to specify things like the protocol:
widgets_url protocol: 'https'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With