С консоли вы можете попробовать:
mysqladmin version -u USER -p PASSWD
Проблема заключается в том, что файлы cookie являются клиентскими. Очевидно, что выполнение рейк-задачи на вашем сервере не будет удалять файлы cookie на всех компьютерах, посетивших веб-страницу.
Возможно, вы можете использовать session.clear
в своих контроллерах? Однако вы правы в изменении ключа cookie. Это приведет к аннулированию любого сеанса, принадлежащего старому ключу. Вы должны были бы избавиться от ActionController::StaleSession
(или что-то в этом роде), но это сработает.
Измените имя файла cookie сеанса. Он не удалит старые файлы cookie, но это заставит всех получить новый cookie сеанса.
Если вы выполняете это на рабочем сервере, я рекомендую:
rake secret
, который просто генерирует случайный защищенный токен. Задача rake в основном делает это, что вы можете сделать в консоли.
SecureRandom.hex(64)
Никогда не проверяйте производственный ключ в управлении версиями / GIT, но вместо этого используйте переменную окружения. Поэтому в вашем файле config/secrets.yml
используйте что-то вроде:
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Если вы используете сеансы на основе Cookie
, вы можете изменить secret_token вашего приложения rails. Это приведет к аннулированию всех существующих сеансов.
rake secret
Затем скопируйте значение в в
RAILS_ROOT/config/initializers/session_store.rb
. Это он. Не забудьте перезапустить приложение после этого;)
Если вы используете сеансы на базе базы данных
rake db:sessions:clear
Если вы используете сеансы на основе файлов
rake tmp:sessions:clear
Теперь мне кажется, что то, что я хочу, может быть невозможно в зависимости от того, как реализовано хранилище на основе файлов cookie. Если файлы cookie содержат всю информацию, необходимую серверу (включая подпись для целостности данных), то серверу не нужно хранить какую-либо информацию на своей стороне, поэтому нет возможности аннулировать существующие файлы cookie. Я предположил, что в файле cookie содержится ключ, который соответствует данным на стороне сервера, чтобы проверить, что файл cookie действителен, но теперь я понимаю, что это может быть не так.
Если это правда, то единственный способ очистить файлы cookie - это изменить секретный файл cookie на стороне сервера, используемый для подписания, а затем, предположительно, перезапустить серверный процесс.