Skip to content

Commit 3b4d33f

Browse files
ThomasArdalclaude
andcommitted
Add Gemfile pinning the github-pages gem, document native local setup
Without a lockfile, a native local Jekyll install could silently drift from what GitHub Pages actually builds with. The github-pages gem resolves to the same Jekyll/kramdown/plugin versions GitHub uses. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fhp7zVUFQLn7SQKdvu8mXV
1 parent 2ede87c commit 3b4d33f

3 files changed

Lines changed: 329 additions & 2 deletions

File tree

Gemfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
source "https://rubygems.org"
2+
3+
# Pins the exact Jekyll/kramdown/plugin versions GitHub Pages itself builds with,
4+
# so local `bundle exec jekyll serve` behaves the same as the real deploy.
5+
gem "github-pages", group: :jekyll_plugins

Gemfile.lock

Lines changed: 314 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,314 @@
1+
GEM
2+
remote: https://rubygems.org/
3+
specs:
4+
activesupport (8.1.3.1)
5+
base64
6+
bigdecimal
7+
concurrent-ruby (~> 1.0, >= 1.3.1)
8+
connection_pool (>= 2.2.5)
9+
drb
10+
i18n (>= 1.6, < 2)
11+
json
12+
logger (>= 1.4.2)
13+
minitest (>= 5.1)
14+
securerandom (>= 0.3)
15+
tzinfo (~> 2.0, >= 2.0.5)
16+
uri (>= 0.13.1)
17+
addressable (2.9.0)
18+
public_suffix (>= 2.0.2, < 8.0)
19+
base64 (0.3.0)
20+
bigdecimal (4.1.2)
21+
coffee-script (2.4.1)
22+
coffee-script-source
23+
execjs
24+
coffee-script-source (1.12.2)
25+
colorator (1.1.0)
26+
commonmarker (0.23.12)
27+
concurrent-ruby (1.3.8)
28+
connection_pool (3.0.2)
29+
csv (3.3.6)
30+
dnsruby (1.74.0)
31+
base64 (>= 0.2)
32+
logger (~> 1.6)
33+
simpleidn (~> 0.2.1)
34+
drb (2.2.3)
35+
em-websocket (0.5.3)
36+
eventmachine (>= 0.12.9)
37+
http_parser.rb (~> 0)
38+
ethon (0.18.0)
39+
ffi (>= 1.15.0)
40+
logger
41+
eventmachine (1.2.7)
42+
execjs (2.10.2)
43+
json (>= 2)
44+
faraday (2.14.3)
45+
faraday-net_http (>= 2.0, < 3.5)
46+
json
47+
logger
48+
faraday-net_http (3.4.4)
49+
net-http (~> 0.5)
50+
ffi (1.17.4-aarch64-linux-gnu)
51+
ffi (1.17.4-aarch64-linux-musl)
52+
ffi (1.17.4-arm-linux-gnu)
53+
ffi (1.17.4-arm-linux-musl)
54+
ffi (1.17.4-arm64-darwin)
55+
ffi (1.17.4-x86_64-darwin)
56+
ffi (1.17.4-x86_64-linux-gnu)
57+
ffi (1.17.4-x86_64-linux-musl)
58+
forwardable-extended (2.6.0)
59+
gemoji (4.1.0)
60+
github-pages (232)
61+
github-pages-health-check (= 1.18.2)
62+
jekyll (= 3.10.0)
63+
jekyll-avatar (= 0.8.0)
64+
jekyll-coffeescript (= 1.2.2)
65+
jekyll-commonmark-ghpages (= 0.5.1)
66+
jekyll-default-layout (= 0.1.5)
67+
jekyll-feed (= 0.17.0)
68+
jekyll-gist (= 1.5.0)
69+
jekyll-github-metadata (= 2.16.1)
70+
jekyll-include-cache (= 0.2.1)
71+
jekyll-mentions (= 1.6.0)
72+
jekyll-optional-front-matter (= 0.3.2)
73+
jekyll-paginate (= 1.1.0)
74+
jekyll-readme-index (= 0.3.0)
75+
jekyll-redirect-from (= 0.16.0)
76+
jekyll-relative-links (= 0.6.1)
77+
jekyll-remote-theme (= 0.4.3)
78+
jekyll-sass-converter (= 1.5.2)
79+
jekyll-seo-tag (= 2.8.0)
80+
jekyll-sitemap (= 1.4.0)
81+
jekyll-swiss (= 1.0.0)
82+
jekyll-theme-architect (= 0.2.0)
83+
jekyll-theme-cayman (= 0.2.0)
84+
jekyll-theme-dinky (= 0.2.0)
85+
jekyll-theme-hacker (= 0.2.0)
86+
jekyll-theme-leap-day (= 0.2.0)
87+
jekyll-theme-merlot (= 0.2.0)
88+
jekyll-theme-midnight (= 0.2.0)
89+
jekyll-theme-minimal (= 0.2.0)
90+
jekyll-theme-modernist (= 0.2.0)
91+
jekyll-theme-primer (= 0.6.0)
92+
jekyll-theme-slate (= 0.2.0)
93+
jekyll-theme-tactile (= 0.2.0)
94+
jekyll-theme-time-machine (= 0.2.0)
95+
jekyll-titles-from-headings (= 0.5.3)
96+
jemoji (= 0.13.0)
97+
kramdown (= 2.4.0)
98+
kramdown-parser-gfm (= 1.1.0)
99+
liquid (= 4.0.4)
100+
mercenary (~> 0.3)
101+
minima (= 2.5.1)
102+
nokogiri (>= 1.16.2, < 2.0)
103+
rouge (= 3.30.0)
104+
terminal-table (~> 1.4)
105+
webrick (~> 1.8)
106+
github-pages-health-check (1.18.2)
107+
addressable (~> 2.3)
108+
dnsruby (~> 1.60)
109+
octokit (>= 4, < 8)
110+
public_suffix (>= 3.0, < 6.0)
111+
typhoeus (~> 1.3)
112+
html-pipeline (2.14.3)
113+
activesupport (>= 2)
114+
nokogiri (>= 1.4)
115+
http_parser.rb (0.8.1)
116+
i18n (1.15.2)
117+
concurrent-ruby (~> 1.0)
118+
jekyll (3.10.0)
119+
addressable (~> 2.4)
120+
colorator (~> 1.0)
121+
csv (~> 3.0)
122+
em-websocket (~> 0.5)
123+
i18n (>= 0.7, < 2)
124+
jekyll-sass-converter (~> 1.0)
125+
jekyll-watch (~> 2.0)
126+
kramdown (>= 1.17, < 3)
127+
liquid (~> 4.0)
128+
mercenary (~> 0.3.3)
129+
pathutil (~> 0.9)
130+
rouge (>= 1.7, < 4)
131+
safe_yaml (~> 1.0)
132+
webrick (>= 1.0)
133+
jekyll-avatar (0.8.0)
134+
jekyll (>= 3.0, < 5.0)
135+
jekyll-coffeescript (1.2.2)
136+
coffee-script (~> 2.2)
137+
coffee-script-source (~> 1.12)
138+
jekyll-commonmark (1.4.0)
139+
commonmarker (~> 0.22)
140+
jekyll-commonmark-ghpages (0.5.1)
141+
commonmarker (>= 0.23.7, < 1.1.0)
142+
jekyll (>= 3.9, < 4.0)
143+
jekyll-commonmark (~> 1.4.0)
144+
rouge (>= 2.0, < 5.0)
145+
jekyll-default-layout (0.1.5)
146+
jekyll (>= 3.0, < 5.0)
147+
jekyll-feed (0.17.0)
148+
jekyll (>= 3.7, < 5.0)
149+
jekyll-gist (1.5.0)
150+
octokit (~> 4.2)
151+
jekyll-github-metadata (2.16.1)
152+
jekyll (>= 3.4, < 5.0)
153+
octokit (>= 4, < 7, != 4.4.0)
154+
jekyll-include-cache (0.2.1)
155+
jekyll (>= 3.7, < 5.0)
156+
jekyll-mentions (1.6.0)
157+
html-pipeline (~> 2.3)
158+
jekyll (>= 3.7, < 5.0)
159+
jekyll-optional-front-matter (0.3.2)
160+
jekyll (>= 3.0, < 5.0)
161+
jekyll-paginate (1.1.0)
162+
jekyll-readme-index (0.3.0)
163+
jekyll (>= 3.0, < 5.0)
164+
jekyll-redirect-from (0.16.0)
165+
jekyll (>= 3.3, < 5.0)
166+
jekyll-relative-links (0.6.1)
167+
jekyll (>= 3.3, < 5.0)
168+
jekyll-remote-theme (0.4.3)
169+
addressable (~> 2.0)
170+
jekyll (>= 3.5, < 5.0)
171+
jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
172+
rubyzip (>= 1.3.0, < 3.0)
173+
jekyll-sass-converter (1.5.2)
174+
sass (~> 3.4)
175+
jekyll-seo-tag (2.8.0)
176+
jekyll (>= 3.8, < 5.0)
177+
jekyll-sitemap (1.4.0)
178+
jekyll (>= 3.7, < 5.0)
179+
jekyll-swiss (1.0.0)
180+
jekyll-theme-architect (0.2.0)
181+
jekyll (> 3.5, < 5.0)
182+
jekyll-seo-tag (~> 2.0)
183+
jekyll-theme-cayman (0.2.0)
184+
jekyll (> 3.5, < 5.0)
185+
jekyll-seo-tag (~> 2.0)
186+
jekyll-theme-dinky (0.2.0)
187+
jekyll (> 3.5, < 5.0)
188+
jekyll-seo-tag (~> 2.0)
189+
jekyll-theme-hacker (0.2.0)
190+
jekyll (> 3.5, < 5.0)
191+
jekyll-seo-tag (~> 2.0)
192+
jekyll-theme-leap-day (0.2.0)
193+
jekyll (> 3.5, < 5.0)
194+
jekyll-seo-tag (~> 2.0)
195+
jekyll-theme-merlot (0.2.0)
196+
jekyll (> 3.5, < 5.0)
197+
jekyll-seo-tag (~> 2.0)
198+
jekyll-theme-midnight (0.2.0)
199+
jekyll (> 3.5, < 5.0)
200+
jekyll-seo-tag (~> 2.0)
201+
jekyll-theme-minimal (0.2.0)
202+
jekyll (> 3.5, < 5.0)
203+
jekyll-seo-tag (~> 2.0)
204+
jekyll-theme-modernist (0.2.0)
205+
jekyll (> 3.5, < 5.0)
206+
jekyll-seo-tag (~> 2.0)
207+
jekyll-theme-primer (0.6.0)
208+
jekyll (> 3.5, < 5.0)
209+
jekyll-github-metadata (~> 2.9)
210+
jekyll-seo-tag (~> 2.0)
211+
jekyll-theme-slate (0.2.0)
212+
jekyll (> 3.5, < 5.0)
213+
jekyll-seo-tag (~> 2.0)
214+
jekyll-theme-tactile (0.2.0)
215+
jekyll (> 3.5, < 5.0)
216+
jekyll-seo-tag (~> 2.0)
217+
jekyll-theme-time-machine (0.2.0)
218+
jekyll (> 3.5, < 5.0)
219+
jekyll-seo-tag (~> 2.0)
220+
jekyll-titles-from-headings (0.5.3)
221+
jekyll (>= 3.3, < 5.0)
222+
jekyll-watch (2.2.1)
223+
listen (~> 3.0)
224+
jemoji (0.13.0)
225+
gemoji (>= 3, < 5)
226+
html-pipeline (~> 2.2)
227+
jekyll (>= 3.0, < 5.0)
228+
json (3.0.2)
229+
kramdown (2.4.0)
230+
rexml
231+
kramdown-parser-gfm (1.1.0)
232+
kramdown (~> 2.0)
233+
liquid (4.0.4)
234+
listen (3.10.0)
235+
logger
236+
rb-fsevent (~> 0.10, >= 0.10.3)
237+
rb-inotify (~> 0.9, >= 0.9.10)
238+
logger (1.7.0)
239+
mercenary (0.3.6)
240+
minima (2.5.1)
241+
jekyll (>= 3.5, < 5.0)
242+
jekyll-feed (~> 0.9)
243+
jekyll-seo-tag (~> 2.1)
244+
minitest (6.0.6)
245+
drb (~> 2.0)
246+
prism (~> 1.5)
247+
net-http (0.9.1)
248+
uri (>= 0.11.1)
249+
nokogiri (1.19.4-aarch64-linux-gnu)
250+
racc (~> 1.4)
251+
nokogiri (1.19.4-aarch64-linux-musl)
252+
racc (~> 1.4)
253+
nokogiri (1.19.4-arm-linux-gnu)
254+
racc (~> 1.4)
255+
nokogiri (1.19.4-arm-linux-musl)
256+
racc (~> 1.4)
257+
nokogiri (1.19.4-arm64-darwin)
258+
racc (~> 1.4)
259+
nokogiri (1.19.4-x86_64-darwin)
260+
racc (~> 1.4)
261+
nokogiri (1.19.4-x86_64-linux-gnu)
262+
racc (~> 1.4)
263+
nokogiri (1.19.4-x86_64-linux-musl)
264+
racc (~> 1.4)
265+
octokit (4.25.1)
266+
faraday (>= 1, < 3)
267+
sawyer (~> 0.9)
268+
pathutil (0.16.2)
269+
forwardable-extended (~> 2.6)
270+
prism (1.9.0)
271+
public_suffix (5.1.1)
272+
racc (1.8.1)
273+
rb-fsevent (0.11.2)
274+
rb-inotify (0.11.1)
275+
ffi (~> 1.0)
276+
rexml (3.4.4)
277+
rouge (3.30.0)
278+
rubyzip (2.4.1)
279+
safe_yaml (1.0.5)
280+
sass (3.7.4)
281+
sass-listen (~> 4.0.0)
282+
sass-listen (4.0.0)
283+
rb-fsevent (~> 0.9, >= 0.9.4)
284+
rb-inotify (~> 0.9, >= 0.9.7)
285+
sawyer (0.9.3)
286+
addressable (>= 2.3.5)
287+
faraday (>= 0.17.3, < 3)
288+
securerandom (0.4.1)
289+
simpleidn (0.2.3)
290+
terminal-table (1.8.0)
291+
unicode-display_width (~> 1.1, >= 1.1.1)
292+
typhoeus (1.6.0)
293+
ethon (>= 0.18.0)
294+
tzinfo (2.0.6)
295+
concurrent-ruby (~> 1.0)
296+
unicode-display_width (1.8.0)
297+
uri (1.1.1)
298+
webrick (1.9.2)
299+
300+
PLATFORMS
301+
aarch64-linux-gnu
302+
aarch64-linux-musl
303+
arm-linux-gnu
304+
arm-linux-musl
305+
arm64-darwin
306+
x86_64-darwin
307+
x86_64-linux-gnu
308+
x86_64-linux-musl
309+
310+
DEPENDENCIES
311+
github-pages
312+
313+
BUNDLED WITH
314+
2.6.9

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,18 @@ referenced with a root-relative path, e.g. `/images/my-new-feature/screenshot.pn
2424

2525
## Local preview
2626

27-
Requires Docker (avoids installing Ruby locally):
27+
### Option A: install Jekyll natively
28+
29+
1. Install Ruby via [rubyinstaller.org](https://rubyinstaller.org/) - pick the **Ruby+Devkit**
30+
version, and accept the MSYS2/build-tools step at the end of setup.
31+
2. From this folder: `bundle install` (uses the `Gemfile`, which pins the exact Jekyll/kramdown/
32+
plugin versions GitHub Pages itself builds with, via the `github-pages` gem).
33+
3. `bundle exec jekyll serve`, then open http://localhost:4000.
34+
35+
### Option B: Docker (no local Ruby install)
2836

2937
```sh
30-
docker run --rm -it -v "${PWD}:/srv/jekyll" -p 4000:4000 jekyll/jekyll jekyll serve
38+
docker run --rm -it -v "${PWD}:/srv/jekyll" -p 4000:4000 jekyll/jekyll sh -c "bundle install && bundle exec jekyll serve --host 0.0.0.0"
3139
```
3240

3341
Then open http://localhost:4000.

0 commit comments

Comments
 (0)