Configure session_store.rb to handle staging and production? Configure session_store.rb to handle staging and production? ruby-on-rails ruby-on-rails

Configure session_store.rb to handle staging and production?


The following settings has been working fine for me:

config/environments/staging.rb

AppName::Application.config.session_store :cookie_store, :key => '_sample_app_session' , :domain => '.mystagingdomain.co.uk'

config/environments/production.rb

AppName::Application.config.session_store :cookie_store, :key => '_sample_app_session' , :domain => '.myproductiondomain.com'


You can use the :domain => :all option. You can also provide a :tld_length, if different than 1.

AppName::Application.config.session_store :cookie_store, :key => '_sample_app_session' , :domain => :all

Here's the relevant Rails code

def handle_options(options) #:nodoc:  options[:path] ||= "/"  if options[:domain] == :all    # if there is a provided tld length then we use it otherwise default domain regexp    domain_regexp = options[:tld_length] ? /([^.]+\.?){#{options[:tld_length]}}$/ : DOMAIN_REGEXP    # if host is not ip and matches domain regexp    # (ip confirms to domain regexp so we explicitly check for ip)    options[:domain] = if (@host !~ /^[\d.]+$/) && (@host =~ domain_regexp)      ".#{$&}"    end  elsif options[:domain].is_a? Array    # if host matches one of the supplied domains without a dot in front of it    options[:domain] = options[:domain].find {|domain| @host.include? domain[/^\.?(.*)$/, 1] }  endend

Otherwise, you should also be able to override the settings in the config/environments/ENVIRONMENT.rb file on a per-environment basis.