LoginSignup
2
2

More than 5 years have passed since last update.

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

Posted at

はじめに

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

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

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

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

rake generate_only

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

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

Rakefile
# 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 が古いために、次のパッチが入ってない可能性が高いです。

参考

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

ブログやってます。

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

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2