我管理着十几个都使用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
谢谢您的帮助。帕特里克
[我认为我的问题是由于Rails 5.2的更改,master.key
和credentials.yml.enc
的引入以取代secrets.yml
的缘故
由于我创建的Rails 5应用程序使用的是5.2,因此生成器不再创建secrets.yml
文件-而且未启用master.key设置:
# config.require_master_key = true
我认为,由于这一原因,Rails使用了一些临时密钥来对cookie进行签名-每当重新启动服务器时,cookie就会更改。
我现在将config/secrets.yml
重新添加到我的项目中,并且从我的测试看来问题已经消失。