我在Rakefile中有一个任务,用于在Jekyll中创建一个新帖子。 (我是从Octopress借来的。)
我试图破解它,以便创建一个新的markdown文件,添加默认的标题信息,然后在IA Writer中打开它。它创建文件并添加信息,但它打开的不是文件。看起来文件名变量没有传递给系统命令,但我不知道我应该怎么写它。
以下是代码:
# Usage rake new_post['Title of the Post']
desc "Beginning a new post in _posts"
task :new_post, :title do |t, args|
args.with_defaults(:title => 'new-post')
title = args.title
filename = "_posts/#{Time.now.strftime('%Y-%m-%d')}-#{title.to_url}.markdown"
open_filename = "#{Time.now.strftime('%Y-%m-%d')}-#{title.to_url}.markdown"
if File.exist?(filename)
abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
end
puts "Creating new post: #{filename}"
open(filename, 'w') do |post|
post.puts "---"
post.puts "layout: post"
post.puts "title: \"#{title.gsub(/&/,'&')}\""
post.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
post.puts "categories: "
post.puts "---"
end
puts "Opening: #{filename}"
system('open -a IA\ Writer ~/Dropbox/Archive/jdb/#{filename}')
end
答案 0 :(得分:0)
在system...
行中,将'
更改为"
。在'
中,ruby不使用变量,例如:
001 > filename = "test"
=> "test"
002 > puts '#{filename}'
=> #{filename}
003 > puts "#{filename}"
=> test