Пишу для себя, впрочем, вдруг кому ещё пригодится. Сам, пока нашёл ответы на эти вопросы чуть не поломал гугль.
1. скорее мой прикол: когда настраиваешь окружение, которое будет работать через postgresql в database.yml по ошибке вместо username: юзверь указал user: юзверь, страшно подумать, сколько часов убил на то, чтобы это обнаружить.
2. WBRick не найдёт закешированные файлы, если в конце пути к папке с кэшем по ошибке поставить слэш. Чревато тем, что включив кеширование вместо офигенного прироста производительности тесты покажут его незначительное снижение.То бишь вот здесь config.action_controller.page_cache_directory = «#{::Rails.root.to_s}/public/cache/» жирный слэш убрать нафиг!!!
3. Штатные perfomance тесты не работают с ruby 1.9.x, судя по всему вообще. Возможные выходы: использовать ruby 1.8.7 и/либо apache benchmart.
4. К сожалению пока нет простого и кошерного способа убить page_cache не из контроллера. Например из демона. Возможно оно и оправдано, но жутко неудобно. Поэтому я переношу кэш из папки public в другую (тот же public/cache) и, по совету Оби Фернандеса, когда это нужно, грохаю всю папку:
cached_files = Dir[File.join(Rails.configuration.action_controller.page_cache_directory, "*")]
FileUtils.rm_rf cached_files
5. Никогда не используйте simple-rss для парсинга rss. Ни при каких обстоятельствах. Собака может повиснуть, ни о чём не сказав. Ну и … кто-же использует для парсинга rss regexp’ы, когда есть в разы более производительный string-scanner.
6. Где-то на сайте passenger’а написана жуткая вещь, дескать, если уж вы пользуетесь passenger’ом с nginx’ом, вы обязаны хранить файлы page_cache’а в папке public. Что чревато, скажем, тем, что рецепт №4 применять нельзя, если нет желания каждый раз доставать стили из репозитория. Так же после каждого deploy’а мы будем получать новый кэш (сохраняя нафиг не нужный старый) и т.п. Оправдывается это тем, что иначе nginx их не найдёт. Люди, не верьте этому, это неправда. Всё можно, всё работает:
# Rewrite index.html.
if (-f $document_root/cache/$uri/index.html) {
rewrite .? /cache/$uri/index.html break;
}
# Rewrite other *.html requests.
if (-f $document_root/cache/$uri.html) {
rewrite .? /cache/$uri.html break;
}
# Rewrite everything else.
if (-f $document_root/cache/$uri) {
rewrite .? /cache/$uri break;
}
passenger_enabled on;
rails_env production;
Есть у меня подозрение, что достаточно только 3-го блока настроек, но пока толком не вникал, не проверял. Так что пусть будет так.
Update
7. Да, в development’е у меня рельсы понимали «.:format» в настройках маршрутов (читай роутов), в продакшне нет. Подозреваю что причина в особенностях Webrick’а и passenger’а, но доказать не могу. В любом случае оно там не нужно.