ro 4.2.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +57 -10
  3. data/LICENSE +1 -1
  4. data/MIGRATION.md +320 -0
  5. data/README.md +286 -111
  6. data/Rakefile +2 -2
  7. data/a.yml +60 -0
  8. data/bin/ro +10 -0
  9. data/lib/ro/_lib.rb +18 -6
  10. data/lib/ro/asset.rb +67 -16
  11. data/lib/ro/collection.rb +91 -10
  12. data/lib/ro/config.rb +4 -0
  13. data/lib/ro/error.rb +5 -2
  14. data/lib/ro/html.rb +23 -0
  15. data/lib/ro/html_safe.rb +143 -0
  16. data/lib/ro/methods.rb +95 -38
  17. data/lib/ro/migrator.rb +285 -0
  18. data/lib/ro/node.rb +128 -45
  19. data/lib/ro/path.rb +4 -0
  20. data/lib/ro/root.rb +75 -1
  21. data/lib/ro/script/migrate.rb +204 -0
  22. data/lib/ro/script/server.rb +1 -1
  23. data/lib/ro/template.rb +62 -22
  24. data/lib/ro/text.rb +120 -0
  25. data/lib/ro.rb +5 -0
  26. data/public/api/ro/index-1.json +997 -79
  27. data/public/api/ro/index.json +997 -79
  28. data/public/api/ro/nerd/fastest-possible-embeddings/index.json +90 -0
  29. data/public/api/ro/nerd/ima/index.json +49 -0
  30. data/public/api/ro/nerd/index/index.json +74 -0
  31. data/public/api/ro/nerd/index-1.json +204 -0
  32. data/public/api/ro/nerd/index.json +194 -0
  33. data/public/api/ro/pages/about/index.json +60 -0
  34. data/public/api/ro/pages/contact/index.json +50 -0
  35. data/public/api/ro/pages/cv/index.json +49 -0
  36. data/public/api/ro/pages/disco/index.json +117 -0
  37. data/public/api/ro/pages/index/index.json +30 -0
  38. data/public/api/ro/pages/index-1.json +366 -0
  39. data/public/api/ro/pages/index.json +356 -0
  40. data/public/api/ro/pages/jess/index.json +62 -0
  41. data/public/api/ro/pages/now/index.json +43 -0
  42. data/public/api/ro/posts/almost-died-in-an-ice-cave/index.json +265 -0
  43. data/public/api/ro/posts/facebook-and-global-extremism/index.json +90 -0
  44. data/public/api/ro/posts/index-1.json +461 -79
  45. data/public/api/ro/posts/index.json +461 -79
  46. data/public/api/ro/posts/lemmings-considered-harmful/index.json +49 -0
  47. data/public/api/ro/posts/lost-in-the-desert/index.json +49 -0
  48. data/public/api/ro/posts/mission/index.json +49 -0
  49. data/public/api/ro/posts/return-your-laptop/index.json +61 -0
  50. data/public/ro/nerd/fastest-possible-embeddings/assets/giraffe.jpeg +0 -0
  51. data/public/ro/nerd/fastest-possible-embeddings/assets/let-me-in.jpg +0 -0
  52. data/public/ro/nerd/fastest-possible-embeddings/assets/src/fastembed.js +70 -0
  53. data/public/ro/nerd/fastest-possible-embeddings/assets/src/fastembed.rs +68 -0
  54. data/public/ro/nerd/fastest-possible-embeddings/assets/terminal.jpg +0 -0
  55. data/public/ro/nerd/fastest-possible-embeddings/body.md +266 -0
  56. data/public/ro/nerd/fastest-possible-embeddings.yml +7 -0
  57. data/public/ro/nerd/ima/assets/og.jpeg +0 -0
  58. data/public/ro/nerd/ima/body.md +22 -0
  59. data/public/ro/nerd/ima.yml +8 -0
  60. data/public/ro/nerd/index/assets/giraffe.jpeg +0 -0
  61. data/public/ro/nerd/index/assets/let-me-in.jpg +0 -0
  62. data/public/ro/nerd/index/assets/terminal.jpg +0 -0
  63. data/public/ro/nerd/index/body.md +130 -0
  64. data/public/ro/nerd/index.yml +7 -0
  65. data/public/ro/pages/about/assets/og.jpeg +0 -0
  66. data/public/ro/pages/about/assets/speak-english-pulp-fiction.gif +0 -0
  67. data/public/ro/pages/about/body.md +40 -0
  68. data/public/ro/pages/contact/assets/giraffe.jpeg +0 -0
  69. data/public/ro/pages/contact/body.md +9 -0
  70. data/public/ro/pages/contact.yml +7 -0
  71. data/public/ro/pages/cv/assets/ara.jpg +0 -0
  72. data/public/ro/pages/cv/body.md +122 -0
  73. data/public/ro/pages/cv.yml +6 -0
  74. data/public/ro/pages/disco/assets/disco.jpg +0 -0
  75. data/public/ro/pages/disco/assets/disco.png +0 -0
  76. data/public/ro/pages/disco/assets/speak-english-pulp-fiction.gif +0 -0
  77. data/public/ro/pages/disco/assets/src/environment.md +2354 -0
  78. data/public/ro/pages/disco/assets/src/fortune-500.md +2518 -0
  79. data/public/ro/pages/disco/assets/src/greed.md +2703 -0
  80. data/public/ro/pages/disco/assets/src/up-at-night.md +2337 -0
  81. data/public/ro/pages/disco/body.md +99 -0
  82. data/public/ro/pages/disco/samples/environment.md +2354 -0
  83. data/public/ro/pages/disco/samples/fortune-500.md +2518 -0
  84. data/public/ro/pages/disco/samples/greed.md +2703 -0
  85. data/public/ro/pages/disco/samples/up-at-night.md +2337 -0
  86. data/public/ro/pages/disco.yml +9 -0
  87. data/public/ro/pages/index/body.md +15 -0
  88. data/public/ro/pages/index.yml +1 -0
  89. data/public/ro/pages/jess/assets/og.jpg +0 -0
  90. data/public/ro/pages/jess/assets/speak-english-pulp-fiction.gif +0 -0
  91. data/public/ro/pages/jess/body.md +3 -0
  92. data/public/ro/pages/jess.yml +7 -0
  93. data/public/ro/pages/now/assets/speak-english-pulp-fiction.gif +0 -0
  94. data/public/ro/pages/now/body.md +24 -0
  95. data/public/ro/pages/now.yml +1 -0
  96. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image1.png +0 -0
  97. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image10.png +0 -0
  98. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image11.png +0 -0
  99. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image12.png +0 -0
  100. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image13.png +0 -0
  101. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image14.png +0 -0
  102. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image15.png +0 -0
  103. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image2.png +0 -0
  104. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image3.png +0 -0
  105. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image4.png +0 -0
  106. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image5.png +0 -0
  107. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image6.png +0 -0
  108. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image7.png +0 -0
  109. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image8.png +0 -0
  110. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image9.png +0 -0
  111. data/public/ro/posts/almost-died-in-an-ice-cave/assets/josh-pointing.jpg +0 -0
  112. data/public/ro/posts/almost-died-in-an-ice-cave/assets/levi-rawr.png +0 -0
  113. data/public/ro/posts/almost-died-in-an-ice-cave/assets/og.jpg +0 -0
  114. data/public/ro/posts/almost-died-in-an-ice-cave/assets/purple-heart.jpg +0 -0
  115. data/public/ro/posts/almost-died-in-an-ice-cave/body.md +419 -0
  116. data/public/ro/posts/almost-died-in-an-ice-cave.yml +6 -0
  117. data/public/ro/posts/facebook-and-global-extremism/assets/background.html +125 -0
  118. data/public/ro/posts/facebook-and-global-extremism/assets/background.md +95 -0
  119. data/public/ro/posts/facebook-and-global-extremism/assets/og.jpg +0 -0
  120. data/public/ro/posts/facebook-and-global-extremism/assets/prompt.txt +122 -0
  121. data/public/ro/posts/facebook-and-global-extremism/assets/results.md +183 -0
  122. data/public/ro/posts/facebook-and-global-extremism/assets/survey.txt +190 -0
  123. data/public/ro/posts/facebook-and-global-extremism/body.md +393 -0
  124. data/public/ro/posts/facebook-and-global-extremism.yml +7 -0
  125. data/public/ro/posts/lemmings-considered-harmful/assets/lemming.jpeg +0 -0
  126. data/public/ro/posts/lemmings-considered-harmful/body.md +43 -0
  127. data/public/ro/posts/lemmings-considered-harmful.yml +6 -0
  128. data/public/ro/posts/lost-in-the-desert/assets/og.jpg +0 -0
  129. data/public/ro/posts/lost-in-the-desert/body.md +7 -0
  130. data/public/ro/posts/lost-in-the-desert.yml +6 -0
  131. data/public/ro/posts/mission/assets/og.jpg +0 -0
  132. data/public/ro/posts/mission/body.md +4 -0
  133. data/public/ro/posts/mission.yml +6 -0
  134. data/public/ro/posts/return-your-laptop/assets/og.jpg +0 -0
  135. data/public/ro/posts/return-your-laptop/assets/return-your-laptop.png +0 -0
  136. data/public/ro/posts/return-your-laptop/body.md +58 -0
  137. data/public/ro/posts/return-your-laptop.yml +6 -0
  138. data/ro.gemspec +369 -49
  139. data/scripts/speedtest.rb +324 -0
  140. data/specs/001-simplify-asset-structure/IMPLEMENTATION_SUMMARY.md +212 -0
  141. data/specs/001-simplify-asset-structure/checklists/requirements.md +36 -0
  142. data/specs/001-simplify-asset-structure/contracts/collection_api.md +407 -0
  143. data/specs/001-simplify-asset-structure/contracts/migrator_api.md +461 -0
  144. data/specs/001-simplify-asset-structure/contracts/node_api.md +294 -0
  145. data/specs/001-simplify-asset-structure/data-model.md +381 -0
  146. data/specs/001-simplify-asset-structure/plan.md +90 -0
  147. data/specs/001-simplify-asset-structure/quickstart.md +575 -0
  148. data/specs/001-simplify-asset-structure/research.md +333 -0
  149. data/specs/001-simplify-asset-structure/spec.md +127 -0
  150. data/specs/001-simplify-asset-structure/tasks.md +349 -0
  151. data/test/fixtures/new_structure/mixed/test-json.json +5 -0
  152. data/test/fixtures/new_structure/mixed/test-yaml.yml +3 -0
  153. data/test/fixtures/new_structure/posts/metadata-only.yml +7 -0
  154. data/test/fixtures/new_structure/posts/nested-test/assets/subdirectory/image.png +2 -0
  155. data/test/fixtures/new_structure/posts/nested-test.yml +7 -0
  156. data/test/fixtures/new_structure/posts/sample-post/assets/body.md +5 -0
  157. data/test/fixtures/new_structure/posts/sample-post/assets/image.jpg +2 -0
  158. data/test/fixtures/new_structure/posts/sample-post.yml +7 -0
  159. data/test/fixtures/old_structure/posts/assets-only/assets/test.txt +1 -0
  160. data/test/fixtures/old_structure/posts/sample-post/assets/body.md +5 -0
  161. data/test/fixtures/old_structure/posts/sample-post/assets/image.jpg +2 -0
  162. data/test/fixtures/old_structure/posts/sample-post/attributes.yml +2 -0
  163. data/test/integration/ro_integration_test.rb +165 -0
  164. data/test/test_helper.rb +149 -0
  165. data/test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/assets/image.jpg +2 -0
  166. data/test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/attributes.yml +7 -0
  167. data/test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/body.md +5 -0
  168. data/test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/assets/image.jpg +2 -0
  169. data/test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/attributes.yml +7 -0
  170. data/test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/body.md +5 -0
  171. data/test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/assets/image.jpg +2 -0
  172. data/test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/attributes.yml +7 -0
  173. data/test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/body.md +5 -0
  174. data/test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/assets/image.jpg +2 -0
  175. data/test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/attributes.yml +7 -0
  176. data/test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/body.md +5 -0
  177. data/test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/assets/image.jpg +2 -0
  178. data/test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/attributes.yml +7 -0
  179. data/test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/body.md +5 -0
  180. data/test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/assets/image.jpg +2 -0
  181. data/test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/attributes.yml +7 -0
  182. data/test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/body.md +5 -0
  183. data/test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post/body.md +5 -0
  184. data/test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post/image.jpg +2 -0
  185. data/test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post.yml +7 -0
  186. data/test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post/body.md +5 -0
  187. data/test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post/image.jpg +2 -0
  188. data/test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post.yml +7 -0
  189. data/test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/assets/body.md +5 -0
  190. data/test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/assets/image.jpg +2 -0
  191. data/test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/attributes.yml +2 -0
  192. data/test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/assets/body.md +5 -0
  193. data/test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/assets/image.jpg +2 -0
  194. data/test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/attributes.yml +2 -0
  195. data/test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/assets/body.md +5 -0
  196. data/test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/assets/image.jpg +2 -0
  197. data/test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/attributes.yml +2 -0
  198. data/test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/assets/body.md +5 -0
  199. data/test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/assets/image.jpg +2 -0
  200. data/test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/attributes.yml +2 -0
  201. data/test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/assets-only/assets/test.txt +1 -0
  202. data/test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/assets/body.md +5 -0
  203. data/test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/assets/image.jpg +2 -0
  204. data/test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/attributes.yml +2 -0
  205. data/test/tmp/migration_test_1760824728.backup.20251018215848/posts/assets-only/assets/test.txt +1 -0
  206. data/test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/assets/body.md +5 -0
  207. data/test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/assets/image.jpg +2 -0
  208. data/test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/attributes.yml +2 -0
  209. data/test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/assets-only/assets/test.txt +1 -0
  210. data/test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/assets/body.md +5 -0
  211. data/test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/assets/image.jpg +2 -0
  212. data/test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/attributes.yml +2 -0
  213. data/test/tmp/migration_test_1760844153.backup.20251019032233/posts/assets-only/assets/test.txt +1 -0
  214. data/test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/assets/body.md +5 -0
  215. data/test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/assets/image.jpg +2 -0
  216. data/test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/attributes.yml +2 -0
  217. data/test/tmp/new_structure_test_1760746452/mixed/test-json.json +5 -0
  218. data/test/tmp/new_structure_test_1760746452/mixed/test-yaml.yml +3 -0
  219. data/test/tmp/new_structure_test_1760746452/posts/metadata-only.yml +7 -0
  220. data/test/tmp/new_structure_test_1760746452/posts/nested-test/subdirectory/image.png +2 -0
  221. data/test/tmp/new_structure_test_1760746452/posts/nested-test.yml +7 -0
  222. data/test/tmp/new_structure_test_1760746452/posts/sample-post/body.md +5 -0
  223. data/test/tmp/new_structure_test_1760746452/posts/sample-post/image.jpg +2 -0
  224. data/test/tmp/new_structure_test_1760746452/posts/sample-post.yml +7 -0
  225. data/test/unit/asset_test.rb +90 -0
  226. data/test/unit/collection_test.rb +127 -0
  227. data/test/unit/migrator_test.rb +209 -0
  228. data/test/unit/node_test.rb +138 -0
  229. data/tmp/gem-details.oe +0 -0
  230. metadata +250 -33
  231. data/public/api/ro/posts/first_post/index.json +0 -52
  232. data/public/api/ro/posts/second_post/index.json +0 -51
  233. data/public/api/ro/posts/third_post/index.json +0 -51
  234. data/public/ro/posts/first_post/assets/foo/bar/baz.jpg +0 -0
  235. data/public/ro/posts/first_post/assets/foo.jpg +0 -0
  236. data/public/ro/posts/first_post/assets/src/foo/bar.rb +0 -3
  237. data/public/ro/posts/first_post/attributes.yml +0 -2
  238. data/public/ro/posts/first_post/blurb.erb.md +0 -7
  239. data/public/ro/posts/first_post/body.md +0 -16
  240. data/public/ro/posts/first_post/testing.txt +0 -3
  241. data/public/ro/posts/second_post/assets/foo/bar/baz.jpg +0 -0
  242. data/public/ro/posts/second_post/assets/foo.jpg +0 -0
  243. data/public/ro/posts/second_post/assets/src/foo/bar.rb +0 -3
  244. data/public/ro/posts/second_post/attributes.yml +0 -2
  245. data/public/ro/posts/second_post/blurb.erb.md +0 -5
  246. data/public/ro/posts/second_post/body.md +0 -16
  247. data/public/ro/posts/third_post/assets/foo/bar/baz.jpg +0 -0
  248. data/public/ro/posts/third_post/assets/foo.jpg +0 -0
  249. data/public/ro/posts/third_post/assets/src/foo/bar.rb +0 -3
  250. data/public/ro/posts/third_post/attributes.yml +0 -2
  251. data/public/ro/posts/third_post/blurb.erb.md +0 -5
  252. data/public/ro/posts/third_post/body.md +0 -16
@@ -0,0 +1,58 @@
1
+ following is an AI generated summary of this article, so you won't have to read it!
2
+
3
+ > ### "
4
+ > A user on LinkedIn suggested that terminated employees should **always**
5
+ > return thier laptops, and that issue was cut and dried.
6
+ >
7
+ > [disco](/disco), a tool for bringing real human subjectivity to AI was then
8
+ > used to examine public sentiment about this statement.
9
+ >
10
+ > The responses varied, with some people feeling that employees should keep the
11
+ > laptops as a small consolation or to help with job searching, while others felt
12
+ > that keeping company property was unethical or a security risk.
13
+ >
14
+ > Some people suggested that companies offer a buyout option for the laptops,
15
+ > while others felt that a clean break was best.
16
+ >
17
+ > The responses highlight the complex and multifaceted nature of the issue, with
18
+ > no easy answers or universal agreement.
19
+ > ### "
20
+
21
+ i recently saw this unsolicited and undirected "suggestion" on linked-in (home
22
+ of the weak sauce), suggesting that the **only** ethical move is to return your
23
+ laptop when you've been fired.
24
+
25
+ ![return your laptop](./assets/return-your-laptop.png)
26
+
27
+ while i do not condone brazen theft or just being a jerk, i personally
28
+ considered this post astonishingly tone deaf, in light of the fear so many who
29
+ have recently been laid off are feeling. for many, a computer, and the
30
+ internet, are their only lifelines to a potential future.
31
+
32
+ this situation is one i have experienced personally. i've been laid off, a
33
+ few years back, and went through a very, very difficult period (still to some
34
+ degree) where getting a job was a strangely recursive scenario - that is to
35
+ say, i needed money to buy a computer capable enough, to keep up with the
36
+ times, to stay sharp, to get a job. this is a real phenomenon experienced by
37
+ many. a nice laptop for a developer costs a cool $4k.
38
+
39
+ dan seemed pretty sure of himself so, i decided to run his theory through my
40
+ new thing, which i am calling [disco](/disco). as you can read for yourself,
41
+ i think the issue is more nuanced than he suggests, and that, in this period
42
+ of history, considering the massive ill will the general public is
43
+ snowballing, and getting ready to toss at corporations, it's worth seeing what
44
+ others might think. fwiw, [disco](/disco) lets you ask any question, and then
45
+ get back answers that are informed by real human beings, at scale.
46
+
47
+ it's my little attempt to use their weapons against them.
48
+
49
+ take some time, to review [these results](https://gist.github.com/ahoward/9696f63c118f7b9f102b04e5b4196ca5)
50
+
51
+ [what do you think?](/contact)
52
+
53
+ ps. in a future post, i'll show you how you can do way, way, way better with
54
+ your development environment by ditching apple, microsoft, etc. and moving to
55
+ linux and a chromebook. my current dev box costs me $320 at best buy and i'm
56
+ more productive than ever.
57
+
58
+ ![](./assets/og.jpg)
@@ -0,0 +1,6 @@
1
+ og:
2
+ image:
3
+ url: ./assets/og.jpg
4
+ title: Free Laptops For The Very Sacked
5
+ description: |-
6
+ Gotten axed recently? Should you keep your laptop? #eat-the-rich
data/ro.gemspec CHANGED
@@ -3,20 +3,22 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "ro"
6
- spec.version = "4.2.0"
6
+ spec.version = "5.0.0"
7
7
  spec.required_ruby_version = '>= 3.0'
8
8
  spec.platform = Gem::Platform::RUBY
9
9
  spec.summary = "all your content in github, as god intended"
10
- spec.description = "all your content in github, as god intended"
11
- spec.license = "Ruby"
10
+ spec.description = "the worlds tiniest, bestest, most minmialist headless cms - powered by github\n\nro is a minimalist toolkit for managing heterogeneous collections of rich web\ncontent on github, and providing both programatic and api access to it with zero\nheavy lifting"
11
+ spec.license = "Nonstandard"
12
12
 
13
13
  spec.files =
14
14
  ["Gemfile",
15
15
  "Gemfile.lock",
16
16
  "LICENSE",
17
+ "MIGRATION.md",
17
18
  "README.md",
18
19
  "README.md.erb",
19
20
  "Rakefile",
21
+ "a.yml",
20
22
  "bin",
21
23
  "bin/ro",
22
24
  "lib",
@@ -29,8 +31,11 @@ Gem::Specification::new do |spec|
29
31
  "lib/ro/collection/list.rb",
30
32
  "lib/ro/config.rb",
31
33
  "lib/ro/error.rb",
34
+ "lib/ro/html.rb",
35
+ "lib/ro/html_safe.rb",
32
36
  "lib/ro/klass.rb",
33
37
  "lib/ro/methods.rb",
38
+ "lib/ro/migrator.rb",
34
39
  "lib/ro/model.rb",
35
40
  "lib/ro/node.rb",
36
41
  "lib/ro/pagination.rb",
@@ -40,65 +45,376 @@ Gem::Specification::new do |spec|
40
45
  "lib/ro/script.rb",
41
46
  "lib/ro/script/builder.rb",
42
47
  "lib/ro/script/console.rb",
48
+ "lib/ro/script/migrate.rb",
43
49
  "lib/ro/script/server.rb",
44
50
  "lib/ro/slug.rb",
45
51
  "lib/ro/template",
46
52
  "lib/ro/template.rb",
47
53
  "lib/ro/template/rouge_formatter.rb",
54
+ "lib/ro/text.rb",
48
55
  "public",
49
56
  "public/api",
50
57
  "public/api/ro",
51
58
  "public/api/ro/index-1.json",
52
59
  "public/api/ro/index.json",
60
+ "public/api/ro/nerd",
61
+ "public/api/ro/nerd/fastest-possible-embeddings",
62
+ "public/api/ro/nerd/fastest-possible-embeddings/index.json",
63
+ "public/api/ro/nerd/ima",
64
+ "public/api/ro/nerd/ima/index.json",
65
+ "public/api/ro/nerd/index",
66
+ "public/api/ro/nerd/index-1.json",
67
+ "public/api/ro/nerd/index.json",
68
+ "public/api/ro/nerd/index/index.json",
69
+ "public/api/ro/pages",
70
+ "public/api/ro/pages/about",
71
+ "public/api/ro/pages/about/index.json",
72
+ "public/api/ro/pages/contact",
73
+ "public/api/ro/pages/contact/index.json",
74
+ "public/api/ro/pages/cv",
75
+ "public/api/ro/pages/cv/index.json",
76
+ "public/api/ro/pages/disco",
77
+ "public/api/ro/pages/disco/index.json",
78
+ "public/api/ro/pages/index",
79
+ "public/api/ro/pages/index-1.json",
80
+ "public/api/ro/pages/index.json",
81
+ "public/api/ro/pages/index/index.json",
82
+ "public/api/ro/pages/jess",
83
+ "public/api/ro/pages/jess/index.json",
84
+ "public/api/ro/pages/now",
85
+ "public/api/ro/pages/now/index.json",
53
86
  "public/api/ro/posts",
54
- "public/api/ro/posts/first_post",
55
- "public/api/ro/posts/first_post/index.json",
87
+ "public/api/ro/posts/almost-died-in-an-ice-cave",
88
+ "public/api/ro/posts/almost-died-in-an-ice-cave/index.json",
89
+ "public/api/ro/posts/facebook-and-global-extremism",
90
+ "public/api/ro/posts/facebook-and-global-extremism/index.json",
56
91
  "public/api/ro/posts/index-1.json",
57
92
  "public/api/ro/posts/index.json",
58
- "public/api/ro/posts/second_post",
59
- "public/api/ro/posts/second_post/index.json",
60
- "public/api/ro/posts/third_post",
61
- "public/api/ro/posts/third_post/index.json",
93
+ "public/api/ro/posts/lemmings-considered-harmful",
94
+ "public/api/ro/posts/lemmings-considered-harmful/index.json",
95
+ "public/api/ro/posts/lost-in-the-desert",
96
+ "public/api/ro/posts/lost-in-the-desert/index.json",
97
+ "public/api/ro/posts/mission",
98
+ "public/api/ro/posts/mission/index.json",
99
+ "public/api/ro/posts/return-your-laptop",
100
+ "public/api/ro/posts/return-your-laptop/index.json",
62
101
  "public/ro",
102
+ "public/ro/nerd",
103
+ "public/ro/nerd/fastest-possible-embeddings",
104
+ "public/ro/nerd/fastest-possible-embeddings.yml",
105
+ "public/ro/nerd/fastest-possible-embeddings/assets",
106
+ "public/ro/nerd/fastest-possible-embeddings/assets/giraffe.jpeg",
107
+ "public/ro/nerd/fastest-possible-embeddings/assets/let-me-in.jpg",
108
+ "public/ro/nerd/fastest-possible-embeddings/assets/src",
109
+ "public/ro/nerd/fastest-possible-embeddings/assets/src/fastembed.js",
110
+ "public/ro/nerd/fastest-possible-embeddings/assets/src/fastembed.rs",
111
+ "public/ro/nerd/fastest-possible-embeddings/assets/terminal.jpg",
112
+ "public/ro/nerd/fastest-possible-embeddings/body.md",
113
+ "public/ro/nerd/ima",
114
+ "public/ro/nerd/ima.yml",
115
+ "public/ro/nerd/ima/assets",
116
+ "public/ro/nerd/ima/assets/og.jpeg",
117
+ "public/ro/nerd/ima/body.md",
118
+ "public/ro/nerd/index",
119
+ "public/ro/nerd/index.yml",
120
+ "public/ro/nerd/index/assets",
121
+ "public/ro/nerd/index/assets/giraffe.jpeg",
122
+ "public/ro/nerd/index/assets/let-me-in.jpg",
123
+ "public/ro/nerd/index/assets/terminal.jpg",
124
+ "public/ro/nerd/index/body.md",
125
+ "public/ro/pages",
126
+ "public/ro/pages/about",
127
+ "public/ro/pages/about/assets",
128
+ "public/ro/pages/about/assets/og.jpeg",
129
+ "public/ro/pages/about/assets/speak-english-pulp-fiction.gif",
130
+ "public/ro/pages/about/body.md",
131
+ "public/ro/pages/contact",
132
+ "public/ro/pages/contact.yml",
133
+ "public/ro/pages/contact/assets",
134
+ "public/ro/pages/contact/assets/giraffe.jpeg",
135
+ "public/ro/pages/contact/body.md",
136
+ "public/ro/pages/cv",
137
+ "public/ro/pages/cv.yml",
138
+ "public/ro/pages/cv/assets",
139
+ "public/ro/pages/cv/assets/ara.jpg",
140
+ "public/ro/pages/cv/body.md",
141
+ "public/ro/pages/disco",
142
+ "public/ro/pages/disco.yml",
143
+ "public/ro/pages/disco/assets",
144
+ "public/ro/pages/disco/assets/disco.jpg",
145
+ "public/ro/pages/disco/assets/disco.png",
146
+ "public/ro/pages/disco/assets/speak-english-pulp-fiction.gif",
147
+ "public/ro/pages/disco/assets/src",
148
+ "public/ro/pages/disco/assets/src/environment.md",
149
+ "public/ro/pages/disco/assets/src/fortune-500.md",
150
+ "public/ro/pages/disco/assets/src/greed.md",
151
+ "public/ro/pages/disco/assets/src/up-at-night.md",
152
+ "public/ro/pages/disco/body.md",
153
+ "public/ro/pages/disco/samples",
154
+ "public/ro/pages/disco/samples/environment.md",
155
+ "public/ro/pages/disco/samples/fortune-500.md",
156
+ "public/ro/pages/disco/samples/greed.md",
157
+ "public/ro/pages/disco/samples/up-at-night.md",
158
+ "public/ro/pages/index",
159
+ "public/ro/pages/index.yml",
160
+ "public/ro/pages/index/body.md",
161
+ "public/ro/pages/jess",
162
+ "public/ro/pages/jess.yml",
163
+ "public/ro/pages/jess/assets",
164
+ "public/ro/pages/jess/assets/og.jpg",
165
+ "public/ro/pages/jess/assets/speak-english-pulp-fiction.gif",
166
+ "public/ro/pages/jess/body.md",
167
+ "public/ro/pages/now",
168
+ "public/ro/pages/now.yml",
169
+ "public/ro/pages/now/assets",
170
+ "public/ro/pages/now/assets/speak-english-pulp-fiction.gif",
171
+ "public/ro/pages/now/body.md",
63
172
  "public/ro/posts",
64
- "public/ro/posts/first_post",
65
- "public/ro/posts/first_post/assets",
66
- "public/ro/posts/first_post/assets/foo",
67
- "public/ro/posts/first_post/assets/foo.jpg",
68
- "public/ro/posts/first_post/assets/foo/bar",
69
- "public/ro/posts/first_post/assets/foo/bar/baz.jpg",
70
- "public/ro/posts/first_post/assets/src",
71
- "public/ro/posts/first_post/assets/src/foo",
72
- "public/ro/posts/first_post/assets/src/foo/bar.rb",
73
- "public/ro/posts/first_post/attributes.yml",
74
- "public/ro/posts/first_post/blurb.erb.md",
75
- "public/ro/posts/first_post/body.md",
76
- "public/ro/posts/first_post/testing.txt",
77
- "public/ro/posts/second_post",
78
- "public/ro/posts/second_post/assets",
79
- "public/ro/posts/second_post/assets/foo",
80
- "public/ro/posts/second_post/assets/foo.jpg",
81
- "public/ro/posts/second_post/assets/foo/bar",
82
- "public/ro/posts/second_post/assets/foo/bar/baz.jpg",
83
- "public/ro/posts/second_post/assets/src",
84
- "public/ro/posts/second_post/assets/src/foo",
85
- "public/ro/posts/second_post/assets/src/foo/bar.rb",
86
- "public/ro/posts/second_post/attributes.yml",
87
- "public/ro/posts/second_post/blurb.erb.md",
88
- "public/ro/posts/second_post/body.md",
89
- "public/ro/posts/third_post",
90
- "public/ro/posts/third_post/assets",
91
- "public/ro/posts/third_post/assets/foo",
92
- "public/ro/posts/third_post/assets/foo.jpg",
93
- "public/ro/posts/third_post/assets/foo/bar",
94
- "public/ro/posts/third_post/assets/foo/bar/baz.jpg",
95
- "public/ro/posts/third_post/assets/src",
96
- "public/ro/posts/third_post/assets/src/foo",
97
- "public/ro/posts/third_post/assets/src/foo/bar.rb",
98
- "public/ro/posts/third_post/attributes.yml",
99
- "public/ro/posts/third_post/blurb.erb.md",
100
- "public/ro/posts/third_post/body.md",
101
- "ro.gemspec"]
173
+ "public/ro/posts/almost-died-in-an-ice-cave",
174
+ "public/ro/posts/almost-died-in-an-ice-cave.yml",
175
+ "public/ro/posts/almost-died-in-an-ice-cave/assets",
176
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image1.png",
177
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image10.png",
178
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image11.png",
179
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image12.png",
180
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image13.png",
181
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image14.png",
182
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image15.png",
183
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image2.png",
184
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image3.png",
185
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image4.png",
186
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image5.png",
187
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image6.png",
188
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image7.png",
189
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image8.png",
190
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/image9.png",
191
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/josh-pointing.jpg",
192
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/levi-rawr.png",
193
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/og.jpg",
194
+ "public/ro/posts/almost-died-in-an-ice-cave/assets/purple-heart.jpg",
195
+ "public/ro/posts/almost-died-in-an-ice-cave/body.md",
196
+ "public/ro/posts/facebook-and-global-extremism",
197
+ "public/ro/posts/facebook-and-global-extremism.yml",
198
+ "public/ro/posts/facebook-and-global-extremism/assets",
199
+ "public/ro/posts/facebook-and-global-extremism/assets/background.html",
200
+ "public/ro/posts/facebook-and-global-extremism/assets/background.md",
201
+ "public/ro/posts/facebook-and-global-extremism/assets/og.jpg",
202
+ "public/ro/posts/facebook-and-global-extremism/assets/prompt.txt",
203
+ "public/ro/posts/facebook-and-global-extremism/assets/results.md",
204
+ "public/ro/posts/facebook-and-global-extremism/assets/survey.txt",
205
+ "public/ro/posts/facebook-and-global-extremism/body.md",
206
+ "public/ro/posts/lemmings-considered-harmful",
207
+ "public/ro/posts/lemmings-considered-harmful.yml",
208
+ "public/ro/posts/lemmings-considered-harmful/assets",
209
+ "public/ro/posts/lemmings-considered-harmful/assets/lemming.jpeg",
210
+ "public/ro/posts/lemmings-considered-harmful/body.md",
211
+ "public/ro/posts/lost-in-the-desert",
212
+ "public/ro/posts/lost-in-the-desert.yml",
213
+ "public/ro/posts/lost-in-the-desert/assets",
214
+ "public/ro/posts/lost-in-the-desert/assets/og.jpg",
215
+ "public/ro/posts/lost-in-the-desert/body.md",
216
+ "public/ro/posts/mission",
217
+ "public/ro/posts/mission.yml",
218
+ "public/ro/posts/mission/assets",
219
+ "public/ro/posts/mission/assets/og.jpg",
220
+ "public/ro/posts/mission/body.md",
221
+ "public/ro/posts/return-your-laptop",
222
+ "public/ro/posts/return-your-laptop.yml",
223
+ "public/ro/posts/return-your-laptop/assets",
224
+ "public/ro/posts/return-your-laptop/assets/og.jpg",
225
+ "public/ro/posts/return-your-laptop/assets/return-your-laptop.png",
226
+ "public/ro/posts/return-your-laptop/body.md",
227
+ "ro.gemspec",
228
+ "scripts",
229
+ "scripts/speedtest.rb",
230
+ "specs",
231
+ "specs/001-simplify-asset-structure",
232
+ "specs/001-simplify-asset-structure/IMPLEMENTATION_SUMMARY.md",
233
+ "specs/001-simplify-asset-structure/checklists",
234
+ "specs/001-simplify-asset-structure/checklists/requirements.md",
235
+ "specs/001-simplify-asset-structure/contracts",
236
+ "specs/001-simplify-asset-structure/contracts/collection_api.md",
237
+ "specs/001-simplify-asset-structure/contracts/migrator_api.md",
238
+ "specs/001-simplify-asset-structure/contracts/node_api.md",
239
+ "specs/001-simplify-asset-structure/data-model.md",
240
+ "specs/001-simplify-asset-structure/plan.md",
241
+ "specs/001-simplify-asset-structure/quickstart.md",
242
+ "specs/001-simplify-asset-structure/research.md",
243
+ "specs/001-simplify-asset-structure/spec.md",
244
+ "specs/001-simplify-asset-structure/tasks.md",
245
+ "test",
246
+ "test/fixtures",
247
+ "test/fixtures/new_structure",
248
+ "test/fixtures/new_structure/mixed",
249
+ "test/fixtures/new_structure/mixed/test-json.json",
250
+ "test/fixtures/new_structure/mixed/test-yaml.yml",
251
+ "test/fixtures/new_structure/posts",
252
+ "test/fixtures/new_structure/posts/metadata-only.yml",
253
+ "test/fixtures/new_structure/posts/nested-test",
254
+ "test/fixtures/new_structure/posts/nested-test.yml",
255
+ "test/fixtures/new_structure/posts/nested-test/assets",
256
+ "test/fixtures/new_structure/posts/nested-test/assets/subdirectory",
257
+ "test/fixtures/new_structure/posts/nested-test/assets/subdirectory/image.png",
258
+ "test/fixtures/new_structure/posts/sample-post",
259
+ "test/fixtures/new_structure/posts/sample-post.yml",
260
+ "test/fixtures/new_structure/posts/sample-post/assets",
261
+ "test/fixtures/new_structure/posts/sample-post/assets/body.md",
262
+ "test/fixtures/new_structure/posts/sample-post/assets/image.jpg",
263
+ "test/fixtures/old_structure",
264
+ "test/fixtures/old_structure/posts",
265
+ "test/fixtures/old_structure/posts/assets-only",
266
+ "test/fixtures/old_structure/posts/assets-only/assets",
267
+ "test/fixtures/old_structure/posts/assets-only/assets/test.txt",
268
+ "test/fixtures/old_structure/posts/sample-post",
269
+ "test/fixtures/old_structure/posts/sample-post/assets",
270
+ "test/fixtures/old_structure/posts/sample-post/assets/body.md",
271
+ "test/fixtures/old_structure/posts/sample-post/assets/image.jpg",
272
+ "test/fixtures/old_structure/posts/sample-post/attributes.yml",
273
+ "test/integration",
274
+ "test/integration/ro_integration_test.rb",
275
+ "test/test_helper.rb",
276
+ "test/tmp/migration_test_1760746513.backup.20251018001513",
277
+ "test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513",
278
+ "test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts",
279
+ "test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post",
280
+ "test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/assets",
281
+ "test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/assets/image.jpg",
282
+ "test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/attributes.yml",
283
+ "test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/body.md",
284
+ "test/tmp/migration_test_1760746513.backup.20251018001513/posts",
285
+ "test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post",
286
+ "test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/assets",
287
+ "test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/assets/image.jpg",
288
+ "test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/attributes.yml",
289
+ "test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/body.md",
290
+ "test/tmp/migration_test_1760746556.backup.20251018001556",
291
+ "test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556",
292
+ "test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts",
293
+ "test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post",
294
+ "test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/assets",
295
+ "test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/assets/image.jpg",
296
+ "test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/attributes.yml",
297
+ "test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/body.md",
298
+ "test/tmp/migration_test_1760746556.backup.20251018001556/posts",
299
+ "test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post",
300
+ "test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/assets",
301
+ "test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/assets/image.jpg",
302
+ "test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/attributes.yml",
303
+ "test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/body.md",
304
+ "test/tmp/migration_test_1760755248.backup.20251018024048",
305
+ "test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248",
306
+ "test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts",
307
+ "test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post",
308
+ "test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/assets",
309
+ "test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/assets/image.jpg",
310
+ "test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/attributes.yml",
311
+ "test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/body.md",
312
+ "test/tmp/migration_test_1760755248.backup.20251018024048/posts",
313
+ "test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post",
314
+ "test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/assets",
315
+ "test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/assets/image.jpg",
316
+ "test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/attributes.yml",
317
+ "test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/body.md",
318
+ "test/tmp/migration_test_1760758803.backup.20251018034003",
319
+ "test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803",
320
+ "test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts",
321
+ "test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post",
322
+ "test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post.yml",
323
+ "test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post/body.md",
324
+ "test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post/image.jpg",
325
+ "test/tmp/migration_test_1760758803.backup.20251018034003/posts",
326
+ "test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post",
327
+ "test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post.yml",
328
+ "test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post/body.md",
329
+ "test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post/image.jpg",
330
+ "test/tmp/migration_test_1760758869.backup.20251018034109",
331
+ "test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869",
332
+ "test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts",
333
+ "test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post",
334
+ "test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/assets",
335
+ "test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/assets/body.md",
336
+ "test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/assets/image.jpg",
337
+ "test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/attributes.yml",
338
+ "test/tmp/migration_test_1760758869.backup.20251018034109/posts",
339
+ "test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post",
340
+ "test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/assets",
341
+ "test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/assets/body.md",
342
+ "test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/assets/image.jpg",
343
+ "test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/attributes.yml",
344
+ "test/tmp/migration_test_1760758920.backup.20251018034200",
345
+ "test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920",
346
+ "test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts",
347
+ "test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post",
348
+ "test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/assets",
349
+ "test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/assets/body.md",
350
+ "test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/assets/image.jpg",
351
+ "test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/attributes.yml",
352
+ "test/tmp/migration_test_1760758920.backup.20251018034200/posts",
353
+ "test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post",
354
+ "test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/assets",
355
+ "test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/assets/body.md",
356
+ "test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/assets/image.jpg",
357
+ "test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/attributes.yml",
358
+ "test/tmp/migration_test_1760824728.backup.20251018215848",
359
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728",
360
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts",
361
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/assets-only",
362
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/assets-only/assets",
363
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/assets-only/assets/test.txt",
364
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post",
365
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/assets",
366
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/assets/body.md",
367
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/assets/image.jpg",
368
+ "test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/attributes.yml",
369
+ "test/tmp/migration_test_1760824728.backup.20251018215848/posts",
370
+ "test/tmp/migration_test_1760824728.backup.20251018215848/posts/assets-only",
371
+ "test/tmp/migration_test_1760824728.backup.20251018215848/posts/assets-only/assets",
372
+ "test/tmp/migration_test_1760824728.backup.20251018215848/posts/assets-only/assets/test.txt",
373
+ "test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post",
374
+ "test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/assets",
375
+ "test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/assets/body.md",
376
+ "test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/assets/image.jpg",
377
+ "test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/attributes.yml",
378
+ "test/tmp/migration_test_1760844153.backup.20251019032233",
379
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153",
380
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts",
381
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/assets-only",
382
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/assets-only/assets",
383
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/assets-only/assets/test.txt",
384
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post",
385
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/assets",
386
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/assets/body.md",
387
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/assets/image.jpg",
388
+ "test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/attributes.yml",
389
+ "test/tmp/migration_test_1760844153.backup.20251019032233/posts",
390
+ "test/tmp/migration_test_1760844153.backup.20251019032233/posts/assets-only",
391
+ "test/tmp/migration_test_1760844153.backup.20251019032233/posts/assets-only/assets",
392
+ "test/tmp/migration_test_1760844153.backup.20251019032233/posts/assets-only/assets/test.txt",
393
+ "test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post",
394
+ "test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/assets",
395
+ "test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/assets/body.md",
396
+ "test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/assets/image.jpg",
397
+ "test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/attributes.yml",
398
+ "test/tmp/new_structure_test_1760746452",
399
+ "test/tmp/new_structure_test_1760746452/mixed",
400
+ "test/tmp/new_structure_test_1760746452/mixed/test-json.json",
401
+ "test/tmp/new_structure_test_1760746452/mixed/test-yaml.yml",
402
+ "test/tmp/new_structure_test_1760746452/posts",
403
+ "test/tmp/new_structure_test_1760746452/posts/metadata-only.yml",
404
+ "test/tmp/new_structure_test_1760746452/posts/nested-test",
405
+ "test/tmp/new_structure_test_1760746452/posts/nested-test.yml",
406
+ "test/tmp/new_structure_test_1760746452/posts/nested-test/subdirectory",
407
+ "test/tmp/new_structure_test_1760746452/posts/nested-test/subdirectory/image.png",
408
+ "test/tmp/new_structure_test_1760746452/posts/sample-post",
409
+ "test/tmp/new_structure_test_1760746452/posts/sample-post.yml",
410
+ "test/tmp/new_structure_test_1760746452/posts/sample-post/body.md",
411
+ "test/tmp/new_structure_test_1760746452/posts/sample-post/image.jpg",
412
+ "test/unit",
413
+ "test/unit/asset_test.rb",
414
+ "test/unit/collection_test.rb",
415
+ "test/unit/migrator_test.rb",
416
+ "test/unit/node_test.rb",
417
+ "tmp/gem-details.oe"]
102
418
 
103
419
  spec.executables = ["ro"]
104
420
 
@@ -113,9 +429,13 @@ Gem::Specification::new do |spec|
113
429
 
114
430
  spec.add_dependency(*["rouge", "~> 4.1", " >= 4.1.1"])
115
431
 
116
- spec.add_dependency(*["ak47", "~> 0.2"])
432
+ spec.add_dependency(*["front_matter_parser", "~> 1.0"])
117
433
 
118
- spec.add_dependency(*["webrick", "~> 1.8.1"])
434
+ spec.add_dependency(*["rinku", "~> 2.0"])
435
+
436
+ spec.add_dependency(*["image_size", "~> 3.4"])
437
+
438
+ spec.add_dependency(*["nokogiri", "~> 1"])
119
439
 
120
440
 
121
441
  spec.extensions.push(*[])