main
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<!-- Sep 03, 2024 -->
5<meta charset="utf-8" />
6<meta name="viewport" content="width=device-width, initial-scale=1" />
7<title>Jekyll Forman Guard Bundler</title>
8<meta name="author" content="Vincent Demeester" />
9<meta name="generator" content="Org Mode" />
10<link rel='icon' type='image/x-icon' href='/images/favicon.ico'/>
11<meta name='viewport' content='width=device-width, initial-scale=1'>
12<link rel='stylesheet' href='/css/new.css' type='text/css'/>
13<link rel='stylesheet' href='/css/syntax.css' type='text/css'/>
14<link href='/index.xml' rel='alternate' type='application/rss+xml' title='Vincent Demeester' />
15</head>
16<body>
17<main id="content" class="content">
18<header>
19<h1 class="title">Jekyll Forman Guard Bundler</h1>
20</header><section id="outline-container-Introduction" class="outline-2">
21<h2 id="Introduction">Introduction</h2>
22<div class="outline-text-2" id="text-Introduction">
23<p>
24This post is a quick “How did I setup my Jekyll environnement ?”. We are
25going all the tools that are quite awesome in Ruby.
26</p>
27</div>
28</section>
29<section id="outline-container-goal" class="outline-2">
30<h2 id="goal">Goal</h2>
31<div class="outline-text-2" id="text-goal">
32<p>
33The goal is simple :
34</p>
35
36<ol class="org-ol">
37<li>I want to be able to install any dependent
38<a href="http://rubygems.org">Gem</a> with a <i>on-liner</i> command</li>
39<li>I want to be able to run a <i>Jekyll server</i> that auto updates.</li>
40</ol>
41
42<p>
43We are going to play with : <a href="http://gembundler.com/">Bundler</a>,
44<a href="https://github.com/guard/guard">Guard</a> and
45<a href="https://github.com/ddollar/foreman">foreman</a>.
46</p>
47</div>
48</section>
49<section id="outline-container-bundler" class="outline-2">
50<h2 id="bundler">Bundler</h2>
51<div class="outline-text-2" id="text-bundler">
52<p>
53Bundler let us run <code>bundle install</code> to get all Ruby Gems we will need ;
54It use a file name <code>Gemfile</code>. The gems we need are simple : <code>jekyll</code>,
55<code>guard</code> and some Guard extensions.
56</p>
57
58<div class="org-src-container">
59<pre class="src src-ruby">source "http://rubygems.org"
60
61gem 'jekyll'
62gem 'guard'
63gem 'guard-jekyll2'
64gem 'guard-shell'
65gem 'guard-bundler'
66</pre>
67</div>
68</div>
69</section>
70<section id="outline-container-guard" class="outline-2">
71<h2 id="guard">Guard</h2>
72<div class="outline-text-2" id="text-guard">
73<blockquote>
74<p>
75Guard is a command line tool to easily handle events on file system
76modifications.
77</p>
78</blockquote>
79
80<p>
81Guard will be watching file we told him and run action in consequence ;
82The file is name <code>Guardfile</code>.
83</p>
84
85<div class="org-src-container">
86<pre class="src src-ruby">guard 'jekyll2' do
87 watch %r{.*}
88end
89
90guard :bundler do
91 watch('Gemfile')
92end
93# vim:filetype=ruby
94</pre>
95</div>
96</div>
97</section>
98<section id="outline-container-foreman" class="outline-2">
99<h2 id="foreman">Foreman</h2>
100<div class="outline-text-2" id="text-foreman">
101<p>
102Finally, foreman will let us declare our processes and will handle the
103start, forward the output and handle the shutdown. It can then export
104its configuration into more <i>production-ready</i> file (<code>init</code>, <code>upstard</code>,
105…) ; It uses a file named <code>Procfile</code>.
106</p>
107
108<p>
109We will tell foreman to run :
110</p>
111
112<ul class="org-ul">
113<li>The jekyll build-in server : <code>jekyll --server</code></li>
114<li>Guard, to handle file changes <i>in background</i>.</li>
115</ul>
116
117<div class="org-src-container">
118<pre class="src src-bash">web: bundle exec jekyll --server
119guard: bundle exec guard
120</pre>
121</div>
122
123<p>
124And that’s all folk. Now, you just need to run foreman in the
125Jekyll-powered directory and edit your files.
126</p>
127</div>
128</section>
129</main>
130<footer id="postamble" class="status">
131<footer>
132 <small><a href="/" rel="history">Index</a> • <a href="/sitemap.html">Sitemap</a> • <a href="https://dl.sbr.pm/">Files</a></small><br/>
133 <small class='questions'>Questions, comments ? Please use my <a href="https://lists.sr.ht/~vdemeester/public-inbox">public inbox</a> by sending a plain-text email to <a href="mailto:~vdemeester/public-inbox@lists.sr.ht">~vdemeester/public-inbox@lists.sr.ht</a>.</small><br/>
134 <small class='copyright'>
135 Content and design by Vincent Demeester
136 (<a rel='licence' href='http://creativecommons.org/licenses/by-nc-sa/3.0/'>Some rights reserved</a>)
137 </small><br />
138</footer>
139</footer>
140</body>
141</html>