在用github写博客的时候发现很多蛮有意思的东西,但这些东西都还需要自己慢慢的研究。这里主要对ruby的安装和本地jekyll的构建做一个简单的介绍,方便自己今后查阅。
##Ruby Install
可怜的mac用户,自从升级了Mac OS 10.9.2,我的ruby的bundler安装jekyll的依赖包就一直编译不过,花了点时间研究,发现是gcc的问题,没细致的去解决,实在是没时间。干脆就在Mac上安装了一个CentOS的虚拟机,在跑ruby,什么问题都没有,简单介绍一下安装过程和bundler的介绍。
###CentOS安装基础依赖包
kevinzhang:~ kevin# yum install gcc-c++ patch readline readline-devel zlib zlib-devel
kevinzhang:~ kevin# yum install libyaml-devel libffi-devel openssl-devel make
kevinzhang:~ kevin# yum install bzip2 autoconf automake libtool bison iconv-devel
###安装RVM
安装最新稳定版本的RVM对Ruby进行包进行管理和安装。
kevinzhang:~ kevin# curl -L get.rvm.io | bash -s stable
###设置RVM环境变量
kevinzhang:~ kevin# source /etc/profile.d/rvm.sh
###安装Ruby
kevinzhang:~ kevin# rvm install 2.1.1
###设置默认Ruby版本
kevinzhang:~ kevin# rvm use 2.1.1 default
Using /usr/local/rvm/gems/ruby-2.1.1
[ root@dev ~]# rvm list
rvm rubies
= * ruby-2.1.1 [ x86_64 ]
###检查Ruby版本是否正确
kevinzhang:~ kevin# ruby -v
ruby 2.1.1p76 ( 2014-02-24 revision 45161) [ x86_64-linux]
##bundle
在Ruby中引入了bundle来管理Ruby项目的gem依赖,可以看到jekyll项目也是采用这样的方式组织项目的gem依赖。那么如何采用bundle来管理gitpage的gem包依赖。可以查看blog根目录下的Gemfile和Gemfile.lock文件,文件内容如下:
Gemfile
[ root@dev topshare.github.com]# cat Gemfile
source 'https://rubygems.org'
gem 'github-pages'
Gemfile.lock
[ root@dev topshare.github.com]# cat Gemfile.lock
GEM
remote: https://rubygems.org/
specs:
RedCloth ( 4.2.9)
activesupport ( 4.0.4)
i18n ( ~> 0.6, >= 0.6.9)
minitest ( ~> 4.2)
multi_json ( ~> 1.3)
thread_safe ( ~> 0.1)
tzinfo ( ~> 0.3.37)
atomic ( 1.1.16)
blankslate ( 2.1.2.4)
classifier ( 1.3.4)
fast-stemmer (>= 1.0.0)
colorator ( 0.1)
commander ( 4.1.6)
highline ( ~> 1.6.11)
fast-stemmer ( 1.0.2)
ffi ( 1.9.3)
gemoji ( 1.5.0)
github-pages ( 17)
RedCloth (= 4.2.9)
jekyll (= 1.5.1)
jekyll-mentions (= 0.0.6)
jekyll-redirect-from (= 0.3.1)
jemoji (= 0.1.0)
kramdown (= 1.3.1)
liquid (= 2.5.5)
maruku (= 0.7.0)
rdiscount (= 2.1.7)
redcarpet (= 2.3.0)
highline ( 1.6.21)
html-pipeline ( 1.5.0)
activesupport (>= 2)
nokogiri ( ~> 1.4)
i18n ( 0.6.9)
jekyll ( 1.5.1)
classifier ( ~> 1.3)
colorator ( ~> 0.1)
commander ( ~> 4.1.3)
liquid ( ~> 2.5.5)
listen ( ~> 1.3)
maruku (= 0.7.0)
pygments.rb ( ~> 0.5.0)
redcarpet ( ~> 2.3.0)
safe_yaml ( ~> 1.0)
toml ( ~> 0.1.0)
jekyll-mentions ( 0.0.6)
html-pipeline ( ~> 1.5.0)
jekyll ( ~> 1.4)
jekyll-redirect-from ( 0.3.1)
jekyll ( ~> 1.4)
jemoji ( 0.1.0)
gemoji ( ~> 1.5.0)
html-pipeline ( ~> 1.5.0)
jekyll ( ~> 1.4)
kramdown ( 1.3.1)
liquid ( 2.5.5)
listen ( 1.3.1)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
rb-kqueue (>= 0.2)
maruku ( 0.7.0)
mini_portile ( 0.5.3)
minitest ( 4.7.5)
multi_json ( 1.9.2)
nokogiri ( 1.6.1)
mini_portile ( ~> 0.5.0)
parslet ( 1.5.0)
blankslate ( ~> 2.0)
posix-spawn ( 0.3.8)
pygments.rb ( 0.5.4)
posix-spawn ( ~> 0.3.6)
yajl-ruby ( ~> 1.1.0)
rb-fsevent ( 0.9.4)
rb-inotify ( 0.9.3)
ffi (>= 0.5.0)
rb-kqueue ( 0.2.2)
ffi (>= 0.5.0)
rdiscount ( 2.1.7)
redcarpet ( 2.3.0)
safe_yaml ( 1.0.1)
thread_safe ( 0.3.1)
atomic (>= 1.1.7, < 2)
toml ( 0.1.1)
parslet ( ~> 1.5.0)
tzinfo ( 0.3.39)
yajl-ruby ( 1.1.0)
PLATFORMS
ruby
DEPENDENCIES
github-pages
所有project的信赖包都在Gemfile中进行配置,不再像以往那样,通过require来查找。这里可以看到整个项目依赖github-pages,如果github-pages有新的更新,可以通过bundle去更新依赖。
ot@dev topshare.github.com]# bundle update
Fetching gem metadata from https://rubygems.org/.........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Using RedCloth 4.2.9
Using i18n 0.6.9
Using json 1.8.1
Using minitest 5.3.3
Using thread_safe 0.3.3
Using tzinfo 1.1.0
Installing activesupport 4.1.1 ( was 4.1.0)
Using blankslate 2.1.2.4
Using fast-stemmer 1.0.2
Using classifier 1.3.4
Using colorator 0.1
Using highline 1.6.21
Using commander 4.1.6
Using ffi 1.9.3
Using gemoji 1.5.0
Using liquid 2.5.5
Using rb-fsevent 0.9.4
Using rb-inotify 0.9.4
Using rb-kqueue 0.2.2
Using listen 1.3.1
Using maruku 0.7.0
Using posix-spawn 0.3.8
Using yajl-ruby 1.1.0
Using pygments.rb 0.5.4
Using redcarpet 2.3.0
Using safe_yaml 1.0.3
Using parslet 1.5.0
Using toml 0.1.1
Using jekyll 1.5.1
Using mini_portile 0.5.3
Using nokogiri 1.6.1
Using html-pipeline 1.5.0
Using jekyll-mentions 0.0.6
Using jekyll-redirect-from 0.3.1
Using jekyll-sitemap 0.2.0
Using jemoji 0.1.0
Using kramdown 1.3.1
Using rdiscount 2.1.7
Using github-pages 18
Using bundler 1.6.2
Your bundle is updated!
这样bundle会去检查 http://rubygems.org/ 上 gem的最新版本,如果本地旧的话,会去更新到最近版本。然后同步更新Gemfile.lock
Gemfile.lock 则用来记录本机目前所有依赖的 RubyGems 和其版本,所以强烈建议将该文件放入版本控制器,从而保证大家基于同一环境下工作。
如果你需要锁定某个开发环境采用bundle lock锁定,使用bundle unlock解锁,不过貌似最新的bundle已经去除了这两个功能。
These commands are obsolete and should no longer be used
o bundle lock( 1)
o bundle unlock( 1)
o bundle cache( 1)
如果缺少gem包,如果检查:
[ root@dev topshare.github.com]# bundle check
The Gemfile's dependencies are satisfied
##jekyll使用
新建一个jekyll:
[ root@dev ~]# jekyll new abc
启动一个jekyll本地服务:
[ root@dev topshare.github.com]# bundle exec jekyll serve -w
Configuration file: /root/code/topshare.github.com/_config.yml
Source: /root/code/topshare.github.com
Destination: /root/code/topshare.github.com/_site
Generating... Maruku#to_s is deprecated and will be removed or changed in a near-future version of Maruku.
Maruku#to_s is deprecated and will be removed or changed in a near-future version of Maruku.
Maruku#to_s is deprecated and will be removed or changed in a near-future version of Maruku.
Maruku#to_s is deprecated and will be removed or changed in a near-future version of Maruku.
___________________________________________________________________________
| Maruku tells you:
+---------------------------------------------------------------------------
| Could not find ref_id = "indentifty" for md_link( "compute" , "indentifty" )
| Available refs are []
+---------------------------------------------------------------------------
! /usr/local/rvm/gems/ruby-2.1.1/gems/maruku-0.7.0/lib/maruku/output/to_html.rb:649:in ` to_html_link'
!/usr/local/rvm/gems/ruby-2.1.1/gems/maruku-0.7.0/lib/maruku/output/to_html.rb:882:in `block in array_to_html'
! /usr/local/rvm/gems/ruby-2.1.1/gems/maruku-0.7.0/lib/maruku/output/to_html.rb:870:in ` each'
!/usr/local/rvm/gems/ruby-2.1.1/gems/maruku-0.7.0/lib/maruku/output/to_html.rb:870:in `array_to_html'
\_ __________________________________________________________________________
Not creating a link for ref_id = "indentifty" .
done .
Auto-regeneration: enabled
Server address: http://0.0.0.0:4000
Server running... press ctrl-c to stop.
##发个文章
[ root@dev topshare.github.com]# rake post title = "abc"
Creating new post: ./_posts/2014-05-06-abc.md
根据markdown编辑2014-05-06-abc.md文件最后提交到github即可。
##References
http://rvm.io/rubies/installing
Please enable JavaScript to view the comments powered by Disqus.
blog comments powered by