Я придумал решение для rake routes
, для которого каждый раз требовалось около 8 секунд.Это простой файловый кеш, который запускает bundle exec rake routes
, хранит вывод в файле под tmp.Имя файла - это хэш md5 config/routes.rb
, поэтому, если вы внесете изменение и вернете его обратно, оно будет использовать старый кэшированный файл.
Я поместил следующие функции bash в исполняемый файл, который я называю fastroutes
:
if [ ! -f config/routes.rb ]; then
echo "Not in root of rails app"
exit 1
fi
cached_routes_filename="tmp/cached_routes_$(md5 -q config/routes.rb).txt"
function cache_routes {
bundle exec rake routes > $cached_routes_filename
}
function clear_cache {
for old_file in $(ls tmp/cache_routes*.txt); do
rm $old_file
done
}
function show_cache {
cat $cached_routes_filename
}
function show_current_filename {
echo $cached_routes_filename
}
function main {
if [ ! -f $cached_routes_filename ]; then
cache_routes
fi
show_cache
}
if [[ "$1" == "-f" ]]
then
show_current_filename
elif [[ "$1" == "-r" ]]
then
rm $cached_routes_filename
cache_routes
else
main
fi
Вот ссылка github тоже.
Таким образом, вам нужно будет сгенерировать маршруты только один раз, и тогда fastroutes
будет использовать кэшированныйзначения.