博客

通过开源的Jekyll并在github上找到一个开源的Jekyll Themes(Hyde),搭建了自己的一个小博客。在这里,记录自己在技术,生活上的点点滴滴。博客搭建之后,通过Rake创建文章,然后在这里卡了一点时间。

之前一直认为Rake就是Jekyll框架中的一个小工具,其实不然。Rake是一个构建工具,和Make、Ant很相似。其中使用了特定的DSL(domain-specific language,领域专用语言),在保持Ruby强大功能时提供很高的可读性。Rails用Rake扩展来完成完成不同的任务。这里用Rake来创建一个新的文章。

task :default => ['post']

desc "Help rake useage:"
task :usage do
end

desc "默认创建post文章"
task :post do
  @title = ENV['title']

  Rake::Task['over'].invoke
end

desc "详细指定文章信息"
task :new do
  
  puts "文章的标题:"
  @title = STDIN.gets.chomp
  
  puts "文章分类(工具|资源|生活|技术|读书)用空格分割:"
  @categories = STDIN.gets.chomp
  
  puts "设置tag(用,分割):"
  @tags = STDIN.gets.chomp
    
  Rake::Task["over"].invoke
end

desc "format info, create file and open post"
task :over do

  abort("title没有指定") if @title.nil?
  
  @slug = "#{@title}"
  @slug = @slug.downcase.strip.gsub(' ', '-')
  @date = Time.now.strftime("%F")
  @post_name = "_posts/#{@date}-#{@slug}.md"
  if File.exist?(@post_name)
    abort("已经存在相同的文章了!,(请取不同的名字)")
  end
  
  FileUtils.touch(@post_name)
  open(@post_name, 'a') do |file|
    file.puts "---"
    file.puts "layout: post"
    file.puts "title: #{@title}"
    file.puts "date: #{Time.now}"
    if not @categories.nil? then
      file.puts "categories: #{@categories}"
    end

    if not @tags.nil? then
      file.puts "tags: #{@tags}"
    end
    file.puts "---"
  end

  # open file
  exec "emacs #{@post_name}"  
end

使用

把上面的代码保存为rakefile.rb,放在博客的根目录。执行:

rake title=测试标题

rake new

aliyun