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?
Simplest way to get your dynamic domain url using a Global variable in rails.
After just call this method into your header file
<% base_url %>
, Now you can access your domain url anywhere in your application.NSD's solution is how I do it, but I had to add a block to make it work with https:
You can easily set
:host
or/and:only_path
parameter for every url_helper.yours_url(params, :host => "http://example.com", :only_path => Rails.env.test?)
This way you are not setting global default_url_options in your environments, unless you want that.asset_host
doesn't work for urlsYou need to override
default_url_options
in yourApplicationController
(at least in Rails 3)http://edgeguides.rubyonrails.org/action_controller_overview.html#default-url-options
Define the default host in your environment config:
Then you can create a URL anywhere in your app:
Or include the URL helpers in your class:
If you don't define the default host, you will need to pass it as an option:
It's also useful to specify things like the protocol:
As far as I know, the
*_url
helpers use the server's configured host name. So for example if my Apache installation is accepting requests for this Rails app athttp://www.myapp.com/
then Rails will use that address. That's why the*_url
methods in a development environment point tohttp://localhost:3000
by default.The asset host suggested in the previous answer will only affect the
image_tag
,stylesheet_link_tag
andjavascript_link_tag
helpers.