jekylog

All doggs wanna be a Geek

ブログ用にRakefile使ってみた

ちなみに最新版は地味にちょこちょこ変えてる

Rubyが分からんから参考サイトから拝借しながらやってみた。 今のところあんまり楽とは感じない。 楽だった。

jekyllの起動

コマンドラインでrake previewするとjekyllが起動する。jekyll --auto --serverよりはタイプが減る。

# Usage: rake preveiw
desc "Launch preview environment"
task :preview do
    sh "jekyll --server --auto"
end

Githubへpush

コマンドラインでrake releaseするとGithubにpush。毎回コミットメッセージ書かなくて済む。 一応新規投稿用なんで他ファイルの修正を施したときは使わないようにしたほうが良いのかな。 エラー処理とかはよく分からんからとりあえず無視してる。 ちょっと修正した

# Usage: rake release
desc "Pushing repository to Github"
task :release do
    message = "Site updated at #{Time.now.strftime('%Y-%m-%d')}"
    sh "git add ."
    sh "git commit -m \"#{message}\""
    sh "git push origin master"
end

新規投稿用のファイルを作成

コマンドラインでrake post['記事のタイトル']でファイルを作成。 同じファイル名があったらエラーが出て終了する。 何ならエディタ開くところまで自動化したかったけど分からんので諦めた。 作成されるとパスを出力するのでvimとかで開いて編集する。 ちょっと修正した

# Usage: rake post["new-post-name"]
desc "Given a title as an argument, create a new post file"
task :post, [:title] do |t, args|
    dirname = File.join(".", "_posts")
    if not FileTest.directory?(dirname)
        abort("rake aborted: #{dirname} directory is not found.")
    end
    date = Time.now.strftime('%Y-%m-%d')
    slug = args.title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
    filename = "#{date}-#{slug}.md"
    fullpath = File.join(dirname, filename)
    if File.exist?(fullpath)
        abort("rake aborted: #{fullpath} already exists.")
    end
    File.open(fullpath, 'w') do |post|
        post.puts "---"
        post.puts "layout: post"
        post.puts "category: "
        post.puts "title: #{args.title}"
        post.puts "date: #{date}"
        post.puts "summary: "
        post.puts "---"
    end
    puts "Open #{fullpath} in an editor."
end

ScoutかCodekit立ちあげてscssからcssにコンバートしてたけどそれすら面倒くさくなってきたのでコマンドから立ち上げるために下記を追記した。

# Usage: rake watch
desc "Watch scss"
task :watch do
    sh "sass --style compressed --watch scss:css"
end

なんなら.sass-cacheが邪魔だったから消そうとしたけどこれがあることによってパフォーマンスが上がるらしいからどうしよっかな。

SASS_REFERENCE

Fork me on GitHub