Redisに対する並列テストの設定

以前 Qiita に書いたテストの並列化に関する続編もの。

Redis のインスタンス上で名前空間を使って、並列処理に対するリソース分割するのがリーズナブルなため、Gemfile に redis-namespace を使えるように指定する。

gem 'redis-namespace'

RSpec の場合は spec/spec_helper.rb に以下のような設定を書く。ここの例では、Rails.env の値と parallel_tests を使った際にもちいられる環境変数 ENV['TEST_ENV_NUMBER'] の値を並列分用意する名前空間としている。

config.before(:suite) do
  redis = Redis.new(host: host, port: port)
  Redis.current = Redis::Namespace.new("#{Rails.env}#{ENV['TEST_ENV_NUMBER']}", redis: redis)
end

...

config.after do
  redis = Redis.new(host: Settings.redis.host, port: Settings.redis.port)
  Redis::Namespace.new("#{Rails.env}#{ENV['TEST_ENV_NUMBER']}", redis: redis).flushdb
end

やり方はいろいろとあると思うので、よりよいアプローチを思いついたら手を加えて行きたい。

開発時にRailsからSolrに繋がらなくなったときの対処

Rails で Solr を使う Sunspot という Gem を使った際のトラブルシューティング的なトピックを記しておく。

rake sunspot:solr:start しているのに Rails アプリケーションから Solr サーバーへの接続に対して Connection refused (RSolr::Error::ConnectionRefused) が返る場合は、Rails.root 配下の solr ディレクトリ配下のデータディレクトリを消してみると良い (やれそうなことやってダメだったら) 。

雑に書くといったん solr ディレクトリ配下を全部消して、git 管理している設定ファイル群を復帰させるよう Rails.root となるディレクトリで rm -rf solr && git checkout といった操作が手早い。

Solr にインデックスしたデータを消せる (ローカル) 開発環境特有の手段となる。

表参道.rb #23

直前に思い立って表参道.rb #23に行った。会場は表参道の Sansan さんオフィス。

omotesandorb.connpass.com

Ruby / Rails を自分がどう学んだかという話が多かったところ、とりわけ After RailsRails をどう学んだかに焦点があたった内容が多かったように思う。中でもだいたい Rails Tutorial で入門している人が多い印象があって、さすが鉄板の登竜門だと思った。

RailsAdmin 1.2.0 がリリースされた

以前出していた Issue が Close されたことで気付いた。

github.com

以下 Full Changelog で、Kaminari 1.0 系や Haml 5.0 系が Gemfile での git 指定なく使えるようになったと思う。

github.com

リリースありがとうございます。