簡體   English   中英

在 capistrano 部署到乘客 / Apache 環境后,Rails5 應用程序丟失 session,在 Rails 4 上工作正常

[英]Rails5 app loses session after capistrano deploy to Passenger / Apache env, works fine on Rails 4

我管理着十幾個使用 Capistrano & Passenger 的 Rails 應用程序。

我注意到,當我將更新部署到 Rails 5 應用程序時,用戶會注銷,即 session 丟失了。 使用 Rails 4 或更早版本的應用程序不會,用戶保持登錄狀態; 在所有情況下,session 處理都是 cookies(默認值)。

我這與不同版本的 Rails 或乘客有關嗎? 任何想法如何解決它?

這是 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.keycredentials.yml.enc來接管secrets.yml

因為我創建的 Rails 5 應用程序使用的是 5.2,所以生成器不再創建secrets.yml文件——而且 master.key 設置也沒有啟用:

  # config.require_master_key = true

我假設由於這個原因,Rails 使用了一些臨時密鑰來簽署 cookies - 只要服務器重新啟動,它就會改變。

我現在已經將config/secrets.yml重新添加到我的項目中,從我的測試來看,問題似乎已經消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM