gpt4 book ai didi

ruby-on-rails - 配置 session_store.rb 来处理登台和生产?

转载 作者:行者123 更新时间:2023-12-04 01:38:43 26 4
gpt4 key购买 nike

我在使用子域的 rails 3.1rc6 应用程序上有一个暂存环境和一个生产环境。我为这些环境购买并配置了不同的域名,因为默认的 something-something.herokuapp.com 不能很好地与子域配合使用。

当我将 session_store.rb 设置为一个环境时,一切正常:

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

但我似乎无法添加条件以允许特定于环境的域名。

我试过了
AppName::Application.config.session_store :cookie_store, :key => '_sample_app_session' , :domain => '.mystagingdomain.co.uk' if Rails.env.staging?
AppName::Application.config.session_store :cookie_store, :key => '_sample_app_session' , :domain => '.myproductiondomain.com' if Rails.env.production?

这不起作用。

最佳答案

您可以使用 :domain => :all选项。您也可以提供:tld_length ,如果不同于 1。

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

这是相关的 Rails 代码
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] }
end
end

否则,您还应该能够覆盖 config/environments/ENVIRONMENT.rb 中的设置。基于每个环境的文件。

关于ruby-on-rails - 配置 session_store.rb 来处理登台和生产?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7187447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com