SqaleではMemcachedが使えるのですが、SASL認証が必要なので、単にURIを設定するだけでは動きません。
Rack::CacheのストレージにMemcachedを使おうとすると、READMEなどを読んだだけではやり方が分からなかったのでメモ。
1. Memcachedの起動&設定確認
Memcachedの起動とホストなどの設定確認は公式サイトを見てください。
2. 設定を.env
に書く
上で確認した設定を.env
に書いてコミットします。
MEMCACHE_SERVERS=memcached001.sqale.lan
MEMCACHE_PORT=11211
MEMCACHE_USERNAME=kyanny-memkun
MEMCACHE_PASSWORD=6b5af17e19f746bdd891bc076bf75ec73dda6a792b61d66a
3. 必要なRubyGemsをバンドルする
Gemfileに追記します。
Gemfile
gem 'dalli'
gem 'rack-cache'
4. config.ru
でRack::Cache
の設定をする
config.ru
のRack::Cache
を使いたいアプリケーションのところで設定をします。
config.ru
# :
# :
# :
require 'dalli'
require 'rack-cache'
# :
# :
# :
map "#{base_dir}/recent.atom" do
memcached_stem = "memcached://#{ENV['MEMCACHE_SERVERS']}:#{ENV['MEMCACHE_PORT']}"
memcached_query = "username=#{ENV['MEMCACHE_USERNAME']};password=#{ENV['MEMCACHE_PASSWORD']}"
use Rack::Cache,
:verbose => true,
:metastore => "#{memcached_stem}/meta?#{memcached_query}",
:entitystore => "#{memcached_stem}/body?#{memcached_query}"
run TDiary::Feed.new('atom')
end
これでRack::Cache
が使えるはずです。
ポイントは、username
などのパラメーターを、URIのクエリーパラメーターとして渡すところですね。Rack::Cache
のソースのコメントに書いてありました。