Fun in Octopress

Octopress是个很不错的东西,在下面的这篇blog中,则是用流水帐的方式介绍如何在本地构筑发布环境,以及如何发布blog。

Work to First

1)当然是取得Octopress的源码了,建议直接用git从github上clone回来一个。
2)ruby的版本是1.9.2,不然这套系统是不会工作的。(1.9.3没试过)
3)gem是必须的,初次构筑环境的话还需要先安装bundler,

gem install bundler

之后运行bundle来安装所依赖的gem

bundle install

使用rvm的注意:
在项目的根目录下会有一个叫的.rvmrc的文件,如果你想让它在指定的gemset下安装依赖的gem的话,需要把该gemset的名字给写上即可,like it

rvm use 1.9.2@octopress

How to Use

rake install              #生成默认的主题
rake new_post["title"]    #生成一篇文章

这时候会在source/_posts下生成一个markdown的文件,上半部分采用的yaml格式标注了该blog的一些属性,比如发布时间等,在下面的则是blog的正文。

当写完blog后可以通过

rake generate       #生成静态文件到public目录下
rake preview        #在服务器启动服务,端口号为4000

这两命令让自己在本地看看效果。Done。

修改了内容的话,修改完毕后即可直接在本地服务上看到效果,不用运行rake generate

创建页面(page)的话

rake new_page["about"] #生成一个页面,地址为octopress.com/about.html
rake new_page["about/index"] #生成一个页面,地址为octopress.com/about/

要把该页面的链接添加到导航栏上的话,则是在source/_includes/custom文件夹下的navigation.html文件中添加即可。

Configuration

该blog的所有配置都是在_config.yml文件中定义,主要修改的就是Main Config这一节下的东西了,比如blog的标题、作者等等,而其他配置在该文件里面有很详细的解释,想修改的话照着提示做就可以了。

Publish

gem install heroku
heroku create yourweb
git commit -m 'publish'
git push heroku master

记得在往heroku发布前,把.gitignore文件里面的public给去掉。

Tips

安装POW

POW对于本地调试来说是个很不错的东西

curl get.pow.cx | sh
cd ~/.pow
ln -s /path/to/octopress

这样不用每次都通过rake preview来启动服务,而且可以直接在本地通过访问urloctopress.dev来查看效果。

压缩js以及css代码

octopress使用自带的模板的话,生成的js代码是没经过压缩的,不过可以使用YUI Compressor来帮助我们完成这项工作。
首先先去这下载YUI Compressor并在本地解压出来,接着从build文件夹中复制yuicompressor的jar文件(最新的为yuicompressor-2.4.7.jar)到项目的tools文件夹中。
接下来在Rakefile文件中添加如下代码即可。

Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
desc "zip javascript and/or css file(s)."
task :zip, [:js, :css] do |t, args|
raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
default_type = {:js => 'js', :css => 'css'}
params = args.to_hash
params = default_type if params.empty?
params.each_value do |value|
value.downcase!
zip value if default_type.value?(value)
end
end

def zip(type)
if type.to_s == 'js'
zip_folder = 'javascripts'
zip_type = 'js'
else
zip_folder = 'stylesheets'
zip_type = 'css'
end

root_path = File.dirname(__FILE__)
Find.find("#{root_path}/public/#{zip_folder}") do |path|
if File.file?(path) and File.extname(path) == ".#{zip_type}"
puts "compressing #{path}"
system("java -jar #{root_path}/tools/yuicompressor-2.4.7.jar --type #{zip_type} -o #{path} #{path}")
end
end
end

使用方法

rake zip           #压缩javascript跟css文件
rake zip[js]       #只压缩javascript文件
rake zip[css]      #只css文件

Other Documentation

##Update
1)在Windows下出现以下类似的问题的时候,

D:/Ruby192/lib/ruby/gems/1.9.1/gems/jekyll-0.11.2/lib/jekyll/convertible.rb:29:in `read_yaml': invalid byte sequence in UTF-8 (ArgumentError)

请把生成的.markdown文件编码给改成”UTF-8无BOM格式”。