Capistrano部署到Passenger / Apache env后,Rails5应用失去会话,在Rails 4上可以正常工作

问题描述 投票:0回答:1

我管理着十几个都使用Capistrano&Passenger的Rails应用程序。

[我注意到,当我向Rails 5应用程序部署更新时,用户被注销,即会话丢失。使用Rails 4或更早版本的应用程序不运行,用户保持登录状态;在所有情况下,会话处理都是cookie(默认设置)。

这与不同版本的Rails或Passenger有关吗?任何想法如何解决?

这是deploy.rb片段:

namespace :deploy do

  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      execute :mkdir, '-p', "#{release_path}/tmp"
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end

  after :publishing, :restart
end

并且我正在使用

  * capistrano (3.13.0)
  * capistrano-bundler (1.6.0)
  * capistrano-rails (1.1.8)
  * capistrano-rails-console (2.3.0)
  * capistrano-rvm (0.1.2)

要部署:cap production deploy

谢谢您的帮助。帕特里克

ruby-on-rails apache capistrano passenger rvm-capistrano
1个回答
0
投票

[我认为我的问题是由于Rails 5.2的更改,master.keycredentials.yml.enc的引入以取代secrets.yml的缘故

由于我创建的Rails 5应用程序使用的是5.2,因此生成器不再创建secrets.yml文件-而且未启用master.key设置:

  # config.require_master_key = true

我认为,由于这一原因,Rails使用了一些临时密钥来对cookie进行签名-每当重新启动服务器时,cookie就会更改。

我现在将config/secrets.yml重新添加到我的项目中,并且从我的测试看来问题已经消失。

© www.soinside.com 2019 - 2024. All rights reserved.