Photo by Kelly Sikkema on Unsplash

Railsのキャッシュ管理用の画面を提供してくれるGem「FastEntry」

Tatsuya Tobioka
Ruffnote
Published in
4 min readMar 22, 2019

--

少し前にGitHubで見かけて気になっていたので使ってみました。

Rubyの環境はこちら。

$ ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin17]
$ rails -v
Rails 5.2.2.1

Railsのプロジェクトを作成して、Gemを入れます。

$ rails new fastentry-example
$ cd fastentry-example/
# Gemfile
gem 'fastentry'
gem 'redis'
$ bundle install

redis はこのあと redis_cache_storeを使うため入れていますが、FastEntryを使うために必須なわけではありません。

では必要な設定をしていきます。

# config/routes.rb
require 'fastentry/engine'
mount Fastentry::Engine, at: '/fastentry'
# config/environments/development.rb
config.cache_store = :redis_cache_store, { url: 'redis://localhost:6379/15' }
$ ./bin/rails dev:cache

メモリストアだと確認しづらいので、Rails 5.2からデフォルトで使えるようになった redis_cache_storeにします。
15の部分は使ってないDB番号にしておきます。(使っているDBだと他のプロジェクトのデータが見えてしまいます。)

今回はサンプルなので認証はしませんが、READMEにはDevise向けの設定方法が書いてあります。

準備は終わったので /fastentry にアクセスします。

空っぽですね。
コンソールからいくつかキャッシュを追加してみます。

> Rails.cache.write('test-key-1', '無期限です')
=> true
> Rails.cache.read('test-key-1')
=> "無期限です"
> Rails.cache.write('test-key-2', '1時間で無効です', expires_in: 1.hour)
=> true
> Rails.cache.read('test-key-2')
=> "1時間で無効です"

画面をリロードすると登録されたキャッシュが表示されます。

消してみます。

コンソールからも取得できなくなりました。

> Rails.cache.read('test-key-1')
=> nil
> Rails.cache.read('test-key-2')
=> nil

管理画面系のGemは結局カスタマイズしたくなって、独自実装が一番、となりがちですが、
こういう単機能なものであれば、そのままの形で便利に使えるかもしれませんね。

--

--