在没有自定义域的情况下,子域会话在Heroku上的Rails 2.3和Rails 3中不起作用?
所以我有两个heroku应用程序:
- http://production-app.com (从http://production-app.heroku.com映射)
- http://development-app.heroku.com
在production-app.com
,我有几个子域使用Herer自定义域插件与Zerigo(不是通配符域插件):
- http://blog.production-app.com
- http://api.production-app.com
在development-app.heroku.com
,我也有这些自定义子域,但由于我没有自定义域,我只使用通配符插件 。
在我的routes.rb
,使用Subdomain-Fu ,我在本地和两个Heroku应用程序上都有子域名。
我现在面临的问题是, 如何在所有子域之间保持会话同步 ?
我已经尝试将其添加到production.rb
:
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => '.production-app.com')
甚至组合这个:
begin config.action_controller.session[:domain] = '.production-app.com' config.action_controller.session[:session_domain] = '.production-app.com' rescue config.action_controller.session = {:domain => '.production-app.com', :session_domain => ".production-app.com"} end
…对于开发站点,这两个:
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => '.heroku.com') # or ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => '.development-app.heroku.com')
这些都不会保持子域之间的会话。 如果我有自定义域名并且刚刚运行Heroku子域名,我该如何才能正常工作?
谢谢!
在config / initializers / session_store.rb中,告诉rails在所有域中设置cookie:
Rails.application.config.session_store :cookie_store, :key => '_yourapp_session', :domain=>:all
与此SO问题相同
如果您希望在“development-app.heroku.com”和“production-app.com”之间保持会话,除非这些代码库是相同的,否则无法完成。 如果它们是相同的代码库,则使用应用程序控制器上的before_filter重定向到production-app.com
在development-app.heroku.com上,我也有这些自定义子域,但由于我没有自定义域,我只使用通配符插件 。
此插件是否仍可用于使用自定义子域,如api.mydevdomain.herokuapp.com
?
- Rails / Heroku:致命:远程端意外挂断
- 我可以删除我当地的.git仓库吗?
- heroku rake db:migrate ERROR“gem install activerecord-mysql-adapter”
- heroku上rails应用程序中的sass错误:无法转储匿名类
- heroku运行db:migrate因rake中止而失败
- Heroku上用于登台服务器的不同robots.txt
- Rails3&Git&Heroku – 开发/登台服务器
- Heroku上的twitter-bootstrap-rails:Glyphicons显示为正方形
- phusion乘客是否使用分叉,如果是,在哪里设置after_fork配置?