使用Heroku Redis作为Rails的会话存储
请提供下列内容的中文本机翻译只需要提供一个选项:
-
- Heroku Redis – Add-ons – Heroku Elements
- Heroku Redis | Heroku Dev Center
使用 Heroku 命令行界面添加附加组件。
使用 Heroku CLI 添加 Heroku Redis 插件。
$ heroku addons:create heroku-redis:hobby-dev
Creating heroku-redis:hobby-dev on ⬢ xxxxx... free
Your add-on should be available in a few minutes.
! WARNING: Data stored in hobby plans on Heroku Redis are not persisted.
redis-xxxxx-xxxxx is being created in the background. The app will restart when complete...
Use heroku addons:info redis-xxxxx-xxxxx to check creation progress
Use heroku addons:docs heroku-redis to view documentation
请确认 Heroku CLI 中是否已添加环境变量 REDIS_URL(Redis 终端点)。
$ heroku config
=== shakestagram Config Vars
...
REDIS_URL: redis://xxxxx@xxxxx:xxxxx
...
2. 配置 Rails 中的会话存储。
在Gemfile中引入redis-rails。
# Gemfile
gem 'redis-rails'
将Redis的端点设置为从环境变量REDIS_URL获取。
# config/initializers/session_store.rb
if Rails.env.production?
# Production では session_store に Redis を利用する
Rails.application.config.session_store :redis_store, {
servers: ENV['REDIS_URL'],
expire_after: 1.week
}
else
# Production以外 では session_store に cookie_store(default) を利用する
Rails.application.config.session_store :cookie_store, expire_after: 1.week
end