Приложение Rails5 теряет сеанс после развертывания capistrano в Passenger / Apache env, отлично работает на Rails 4 - PullRequest
0 голосов
/ 21 апреля 2020

Я управляю дюжиной приложений Rails, которые используют Capistrano & Passenger.

Я заметил, что при развертывании обновления в приложении Rails 5 пользователи выходят из системы, то есть сеанс теряется. Приложения, использующие Rails 4 или более ранние версии, этого не делают, пользователи остаются в системе; обработка сеанса - это все куки во всех случаях (по умолчанию).

Это связано с различными версиями 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

Заранее спасибо за помощь. Patrick

1 Ответ

1 голос
/ 22 апреля 2020

Я думаю, что моя проблема была из-за изменения в 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 - который менялся всякий раз, когда сервер перезагружался.

Теперь я заново добавил config/secrets.yml в свой проект, и из моего тестирования кажется, что проблема исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...