使用Rakefile实现文章生成器

使用Rakefile实现文章生成器

2018, Dec 04    

使用github.io来写blog

本就是件很棒的事情,但是每次在想写新的文章的时候,都需要重新复制title和开头的标签,如果能够自动化地完成这件事就好了(重复性的东西工作)

About Rakefile

Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.

摘自http://docs.seattlerb.org/rake/

安装Rake

sudo gem install rake

即可

创建Rakefile

在项目的根目录下

touch Rakefile
vim Rakefile

然后添加如下代码

task :default => :new

require 'fileutils'

desc "创建新 post"
task :new do
  puts "请输入要创建的文章文件文件名字:"
    @url = STDIN.gets.chomp
    puts "请输入文章的标题:"
    @name = STDIN.gets.chomp
    puts "请输入文章的子标题:"
    @subtitle = STDIN.gets.chomp
    puts "请输入文章的分类,以空格分隔:"
    @categories = STDIN.gets.chomp
    puts "请输入文章的标签:"
    @tag = STDIN.gets.chomp
    @slug = "#{@url}"
    @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: #{@name}"
            file.puts "subtitle: #{@subtitle}"
            file.puts "author: ymkNK"
            file.puts "date: #{Time.now}"
            file.puts "categories: #{@categories}"
            file.puts "tag: #{@tag}"
            file.puts "img: 1.jpg"
            file.puts "---"
    end
    exec "vim #{@post_name}"
end

代码中的author等属性可以自行进行修改

使用Rakefile生成文章

在项目的根目录下打开命令行

rake new

依次输入相关的信息就可以在_post下看见新生成的文件啦