Octopressで最後に編集した記事だけをgenerate

はじめに

以前、Octopressのpreviewを高速化するという記事を書きました。

この記事では、rake isolaterake integrate を使って特定の記事だけを generate することによって、 rake generate を高速化していました。

しかしながら、この方法は手順が複雑で使うコマンドが多く、面倒だし使い方を忘れるという問題がありました。

通常、最後に保存したファイルを generate することが多いので、これを利用してもっと便利な Rake の task を作ります。

rake generate_only

Rakefilegenerate_only という task を追加します。頻繁に使うので、goというaliasも定義しました。

使い方は、rake generate_only [filename] という形式で使います。 filenameを省略すると、最後に保存されたファイルが自動的に設定されます。

# usage rake generate_only[my-post]
# thanks to http://rcmdnk.github.io/blog/2013/12/06/blog-octopress-rake/
desc "Generate only the specified post (much faster)"
task :generate_only, :filename do |t, args|
  if args.filename
    filename = args.filename
  else
    filename = Dir.glob("#{source_dir}/#{posts_dir}/*.#{new_post_ext}").sort_by{|f| File.mtime(f)}.last
  end
  puts "## Test build for #{filename}"
  puts "## Stashing other posts"
  Rake::Task[:isolate].invoke(filename)
  Rake::Task[:generate].execute
  puts "## Restoring stashed posts"
  Rake::Task[:integrate].execute
end
task go: :generate_only

補足

rake generate_only を実行した後に _stash にファイルが退避されたままだとしたら、 Octopress が古いために、次のパッチが入ってない可能性が高いです。

参考

以下の記事がとても参考になりました!ありがとうございます!

Qiita やってます

全く同じ内容ですが、こちらにもポストしました。

comments powered by Disqus

gam0022.net's Tag Cloud