我在octopress的rakefile中创建了一个自定义部署方法。功能很简单,
我希望能够:
rake生成并将所有文件放在我的公共文件夹中(即:/ home / jeremy / website / wwwdata) 然后我希望能够“rake compress”并从输出文件夹中的文件中删除所有多余的空格和空白行(我将上传到我的服务器)。
到目前为止,我有这个:
desc "compress output files"
task :compress do
puts "## Compressing html"
# read every .htm and .html in a directory
#TODO: Find this directory!
puts public_dir
Dir.glob("public_dir/**/*.{htm,html}").each do|ourfile|
linedata = ""
#open the file and parse it
File.open(ourfile).readlines.each do |line|
#remove excess spaces and carraige returns
line = line.gsub(/\s+/, " ").strip.delete("\n")
#append to long string
linedata << line
end
#reopen the file
compfile = open(ourfile, "w")
#write the compressed string to file
compfile.write(linedata)
#close the file
compfile.close
end
end
我遇到的问题是找到输出目录。我知道它在_config.yml中指定,它显然在rakefile中使用,但每次我尝试使用任何这些变量时它都不起作用。
我用Google搜索并阅读了文档但找不到多少内容。有没有办法获得这些信息?我不想要一个硬编码的文件路径,因为当我完成它时,我想将它作为插件或拉取请求提交,以便其他人可以使用它。
答案 0 :(得分:1)
您可以通过以下方式访问Jekyll配置:
require 'jekyll'
conf = Jekyll.configuration({})
#=> {
# "source" => "/Users/me/some_project",
# "destination" => "/Users/me/some_project/_site",
# ...
# }
conf["destination"]
#=> "/Users/me/some_project/_site"
您可以这样在Rakefile中使用它:
require 'jekyll'
CONF = Jekyll.configuration({})
task :something do
public_dir = CONF["destination"]
Dir.glob("#{public_dir}/**/*.{htm,html}").each do |ourfile|
# ...
end
end
请注意,我在#{}
的参数中添加了public_dir
Dir.glob
,否则这将寻找文字目录public_dir/
而不是实际的目标目录。