同僚の CFP 作成の手引きをしたり、ふと思いついた Gem のプロトタイプを作ったりしていた。
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
やり方はいろいろとあると思うので、よりよいアプローチを思いついたら手を加えて行きたい。
1回休み
新刊のマンガを読んだり、近所に新しく出来たコンビニに行ったりした。
1回休み
タイミングによって落ちることのあるテストを見始めたり CFP を考えていたりした。
開発時に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 にインデックスしたデータを消せる (ローカル) 開発環境特有の手段となる。