utopia 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (290) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +1 -0
  3. data/.travis.yml +3 -1
  4. data/Gemfile +2 -0
  5. data/README.md +2 -2
  6. data/Rakefile +19 -7
  7. data/docs/.nojekyll +0 -0
  8. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +6 -0
  9. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +5 -0
  10. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +8 -0
  11. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +6 -0
  12. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +10 -0
  13. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +3 -0
  14. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.css.css +14 -0
  15. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +16 -0
  16. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.html.css +5 -0
  17. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +3 -0
  18. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +2 -0
  19. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.python.css +6 -0
  20. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +2 -0
  21. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +18 -0
  22. data/docs/_components/jquery-syntax/base/jquery.syntax.core.css +62 -0
  23. data/docs/_components/jquery-syntax/base/jquery.syntax.editor.css +6 -0
  24. data/docs/_components/jquery-syntax/base/theme.js +1 -0
  25. data/docs/_components/jquery-syntax/bright/jquery.syntax.core.css +27 -0
  26. data/docs/_components/jquery-syntax/bright/theme.js +1 -0
  27. data/docs/_components/jquery-syntax/jquery.syntax.brush.apache.js +41 -0
  28. data/docs/_components/jquery-syntax/jquery.syntax.brush.applescript.js +57 -0
  29. data/docs/_components/jquery-syntax/jquery.syntax.brush.assembly.js +37 -0
  30. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +67 -0
  31. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash.js +33 -0
  32. data/docs/_components/jquery-syntax/jquery.syntax.brush.basic.js +51 -0
  33. data/docs/_components/jquery-syntax/jquery.syntax.brush.clang.js +89 -0
  34. data/docs/_components/jquery-syntax/jquery.syntax.brush.csharp.js +47 -0
  35. data/docs/_components/jquery-syntax/jquery.syntax.brush.css.js +80 -0
  36. data/docs/_components/jquery-syntax/jquery.syntax.brush.diff.js +24 -0
  37. data/docs/_components/jquery-syntax/jquery.syntax.brush.go.js +47 -0
  38. data/docs/_components/jquery-syntax/jquery.syntax.brush.haskell.js +45 -0
  39. data/docs/_components/jquery-syntax/jquery.syntax.brush.html.js +66 -0
  40. data/docs/_components/jquery-syntax/jquery.syntax.brush.io.js +45 -0
  41. data/docs/_components/jquery-syntax/jquery.syntax.brush.java.js +45 -0
  42. data/docs/_components/jquery-syntax/jquery.syntax.brush.javascript.js +40 -0
  43. data/docs/_components/jquery-syntax/jquery.syntax.brush.kai.js +29 -0
  44. data/docs/_components/jquery-syntax/jquery.syntax.brush.lisp.js +34 -0
  45. data/docs/_components/jquery-syntax/jquery.syntax.brush.lua.js +44 -0
  46. data/docs/_components/jquery-syntax/jquery.syntax.brush.nginx.js +31 -0
  47. data/docs/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +73 -0
  48. data/docs/_components/jquery-syntax/jquery.syntax.brush.ooc.js +46 -0
  49. data/docs/_components/jquery-syntax/jquery.syntax.brush.pascal.js +51 -0
  50. data/docs/_components/jquery-syntax/jquery.syntax.brush.perl5.js +52 -0
  51. data/docs/_components/jquery-syntax/jquery.syntax.brush.php-script.js +48 -0
  52. data/docs/_components/jquery-syntax/jquery.syntax.brush.php.js +15 -0
  53. data/docs/_components/jquery-syntax/jquery.syntax.brush.plain.js +10 -0
  54. data/docs/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +43 -0
  55. data/docs/_components/jquery-syntax/jquery.syntax.brush.python.js +44 -0
  56. data/docs/_components/jquery-syntax/jquery.syntax.brush.ruby.js +77 -0
  57. data/docs/_components/jquery-syntax/jquery.syntax.brush.scala.js +44 -0
  58. data/docs/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +29 -0
  59. data/docs/_components/jquery-syntax/jquery.syntax.brush.sql.js +31 -0
  60. data/docs/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +57 -0
  61. data/docs/_components/jquery-syntax/jquery.syntax.brush.swift.js +55 -0
  62. data/docs/_components/jquery-syntax/jquery.syntax.brush.trenni.js +35 -0
  63. data/docs/_components/jquery-syntax/jquery.syntax.brush.xml.js +50 -0
  64. data/docs/_components/jquery-syntax/jquery.syntax.brush.yaml.js +29 -0
  65. data/docs/_components/jquery-syntax/jquery.syntax.cache.js +65 -0
  66. data/docs/_components/jquery-syntax/jquery.syntax.core.js +1098 -0
  67. data/docs/_components/jquery-syntax/jquery.syntax.editor.js +291 -0
  68. data/docs/_components/jquery-syntax/jquery.syntax.js +258 -0
  69. data/docs/_components/jquery-syntax/jquery.syntax.min.js +13 -0
  70. data/docs/_components/jquery-syntax/paper/jquery.syntax.core.css +31 -0
  71. data/docs/_components/jquery-syntax/paper/theme.js +1 -0
  72. data/docs/_components/jquery/core.js +482 -0
  73. data/docs/_components/jquery/jquery.js +10220 -0
  74. data/docs/_components/jquery/jquery.min.js +4 -0
  75. data/docs/_components/jquery/jquery.min.map +1 -0
  76. data/docs/_components/jquery/jquery.slim.js +8107 -0
  77. data/docs/_components/jquery/jquery.slim.min.js +4 -0
  78. data/docs/_components/jquery/jquery.slim.min.map +1 -0
  79. data/docs/_static/icon.png +0 -0
  80. data/docs/_static/site.css +205 -0
  81. data/docs/_static/utopia-background.svg +1 -0
  82. data/docs/_static/utopia.svg +1 -0
  83. data/docs/code/Utopia.html +511 -0
  84. data/docs/code/Utopia/Basename.html +654 -0
  85. data/docs/code/Utopia/Bootstrap.html +538 -0
  86. data/docs/code/Utopia/Command.html +207 -0
  87. data/docs/code/Utopia/Command/Environment.html +321 -0
  88. data/docs/code/Utopia/Command/Server.html +214 -0
  89. data/docs/code/Utopia/Command/Server/Create.html +222 -0
  90. data/docs/code/Utopia/Command/Server/Environment.html +236 -0
  91. data/docs/code/Utopia/Command/Server/Update.html +317 -0
  92. data/docs/code/Utopia/Command/Setup.html +145 -0
  93. data/docs/code/Utopia/Command/Setup/Server.html +298 -0
  94. data/docs/code/Utopia/Command/Setup/Site.html +180 -0
  95. data/docs/code/Utopia/Command/Site.html +279 -0
  96. data/docs/code/Utopia/Command/Site/Create.html +324 -0
  97. data/docs/code/Utopia/Command/Site/Update.html +407 -0
  98. data/docs/code/Utopia/Command/Top.html +279 -0
  99. data/docs/code/Utopia/Content.html +826 -0
  100. data/docs/code/Utopia/Content/Document.html +1818 -0
  101. data/docs/code/Utopia/Content/Document/State.html +1220 -0
  102. data/docs/code/Utopia/Content/Link.html +1286 -0
  103. data/docs/code/Utopia/Content/Links.html +841 -0
  104. data/docs/code/Utopia/Content/MarkupParser.html +881 -0
  105. data/docs/code/Utopia/Content/MarkupParser/ParsedTag.html +422 -0
  106. data/docs/code/Utopia/Content/MarkupParser/UnbalancedTagError.html +615 -0
  107. data/docs/code/Utopia/Content/Namespace.html +485 -0
  108. data/docs/code/Utopia/Content/Node.html +1188 -0
  109. data/docs/code/Utopia/Content/Node/Context.html +938 -0
  110. data/docs/code/Utopia/Content/Response.html +813 -0
  111. data/docs/code/Utopia/Content/SymbolicHash.html +419 -0
  112. data/docs/code/Utopia/Content/Tag.html +399 -0
  113. data/docs/code/Utopia/Content/Tags.html +136 -0
  114. data/docs/code/Utopia/Content/Tags/ContentTag.html +187 -0
  115. data/docs/code/Utopia/Content/Tags/DeferredTag.html +193 -0
  116. data/docs/code/Utopia/Content/Tags/Library.html +333 -0
  117. data/docs/code/Utopia/Content/Tags/NodeTag.html +193 -0
  118. data/docs/code/Utopia/Content/UnbalancedTagError.html +298 -0
  119. data/docs/code/Utopia/ContentLength.html +339 -0
  120. data/docs/code/Utopia/Controller.html +901 -0
  121. data/docs/code/Utopia/Controller/Actions.html +289 -0
  122. data/docs/code/Utopia/Controller/Actions/Action.html +978 -0
  123. data/docs/code/Utopia/Controller/Actions/ClassMethods.html +442 -0
  124. data/docs/code/Utopia/Controller/Base.html +1216 -0
  125. data/docs/code/Utopia/Controller/Respond.html +283 -0
  126. data/docs/code/Utopia/Controller/Respond/ClassMethods.html +236 -0
  127. data/docs/code/Utopia/Controller/Respond/Converter.html +256 -0
  128. data/docs/code/Utopia/Controller/Respond/Converter/Callback.html +484 -0
  129. data/docs/code/Utopia/Controller/Respond/Converter/ToJSON.html +375 -0
  130. data/docs/code/Utopia/Controller/Respond/Passthrough.html +291 -0
  131. data/docs/code/Utopia/Controller/Respond/Responder.html +529 -0
  132. data/docs/code/Utopia/Controller/Rewrite.html +290 -0
  133. data/docs/code/Utopia/Controller/Rewrite/ClassMethods.html +242 -0
  134. data/docs/code/Utopia/Controller/Rewrite/ExtractPrefixRule.html +364 -0
  135. data/docs/code/Utopia/Controller/Rewrite/Rewriter.html +464 -0
  136. data/docs/code/Utopia/Controller/Rewrite/Rule.html +209 -0
  137. data/docs/code/Utopia/Controller/Variables.html +550 -0
  138. data/docs/code/Utopia/Controllers.html +244 -0
  139. data/docs/code/Utopia/Exceptions.html +127 -0
  140. data/docs/code/Utopia/Exceptions/Handler.html +526 -0
  141. data/docs/code/Utopia/Exceptions/Mailer.html +476 -0
  142. data/docs/code/Utopia/Extensions.html +117 -0
  143. data/docs/code/Utopia/Extensions/ArraySplit.html +183 -0
  144. data/docs/code/Utopia/Extensions/DateTimeComparison.html +193 -0
  145. data/docs/code/Utopia/Extensions/TimeDateComparison.html +193 -0
  146. data/docs/code/Utopia/HTTP.html +244 -0
  147. data/docs/code/Utopia/HTTP/Status.html +415 -0
  148. data/docs/code/Utopia/Locale.html +606 -0
  149. data/docs/code/Utopia/Localization.html +1235 -0
  150. data/docs/code/Utopia/Localization/Wrapper.html +459 -0
  151. data/docs/code/Utopia/Logger.html +205 -0
  152. data/docs/code/Utopia/Logger/CompactFormatter.html +335 -0
  153. data/docs/code/Utopia/Path.html +3304 -0
  154. data/docs/code/Utopia/Path/Matcher.html +518 -0
  155. data/docs/code/Utopia/Path/Matcher/MatchData.html +475 -0
  156. data/docs/code/Utopia/Redirection.html +145 -0
  157. data/docs/code/Utopia/Redirection/ClientRedirect.html +717 -0
  158. data/docs/code/Utopia/Redirection/DirectoryIndex.html +298 -0
  159. data/docs/code/Utopia/Redirection/Errors.html +470 -0
  160. data/docs/code/Utopia/Redirection/Moved.html +312 -0
  161. data/docs/code/Utopia/Redirection/RequestFailure.html +226 -0
  162. data/docs/code/Utopia/Redirection/Rewrite.html +296 -0
  163. data/docs/code/Utopia/Session.html +883 -0
  164. data/docs/code/Utopia/Session/LazyHash.html +859 -0
  165. data/docs/code/Utopia/Setup.html +964 -0
  166. data/docs/code/Utopia/Static.html +690 -0
  167. data/docs/code/Utopia/Static/LocalFile.html +1098 -0
  168. data/docs/code/Utopia/Static/MimeTypeLoader.html +541 -0
  169. data/docs/code/Utopia/Static/MimeTypeLoader/ExpansionError.html +124 -0
  170. data/docs/code/Utopia/Tags.html +115 -0
  171. data/docs/code/Utopia/Tags/Environment.html +314 -0
  172. data/docs/code/Utopia/Tags/EnvironmentTag.html +314 -0
  173. data/docs/code/Utopia/Tags/Library.html +340 -0
  174. data/docs/code/_index.html +758 -0
  175. data/docs/code/class_list.html +51 -0
  176. data/docs/code/css/common.css +1 -0
  177. data/docs/code/css/full_list.css +58 -0
  178. data/docs/code/css/style.css +499 -0
  179. data/docs/code/file.README.html +169 -0
  180. data/docs/code/file_list.html +56 -0
  181. data/docs/code/frames.html +17 -0
  182. data/docs/code/index.html +169 -0
  183. data/docs/code/js/app.js +248 -0
  184. data/docs/code/js/full_list.js +216 -0
  185. data/docs/code/js/jquery.js +4 -0
  186. data/docs/code/materials/utopia.png +0 -0
  187. data/docs/code/materials/utopia.svg +1 -0
  188. data/docs/code/method_list.html +3443 -0
  189. data/docs/code/top-level-namespace.html +110 -0
  190. data/docs/index.html +92 -0
  191. data/docs/wiki.html +92 -0
  192. data/docs/wiki/bower-integration.html +74 -0
  193. data/docs/wiki/bower-integration/index.html +74 -0
  194. data/docs/wiki/development-environment-setup.html +60 -0
  195. data/docs/wiki/development-environment-setup/index.html +60 -0
  196. data/docs/wiki/edit.html +103 -0
  197. data/docs/wiki/faq/what-is-xnode.html +79 -0
  198. data/docs/wiki/faq/what-is-xnode/index.html +79 -0
  199. data/docs/wiki/middleware/content.html +64 -0
  200. data/docs/wiki/middleware/content/index.html +64 -0
  201. data/docs/wiki/middleware/controller.html +104 -0
  202. data/docs/wiki/middleware/controller/actions.html +117 -0
  203. data/docs/wiki/middleware/controller/actions/index.html +117 -0
  204. data/docs/wiki/middleware/controller/actions/rewrite/index.html +48 -0
  205. data/docs/wiki/middleware/controller/index.html +104 -0
  206. data/docs/wiki/middleware/controller/rewrite.html +111 -0
  207. data/docs/wiki/middleware/controller/rewrite/index.html +111 -0
  208. data/docs/wiki/middleware/localization.html +59 -0
  209. data/docs/wiki/middleware/localization/index.html +59 -0
  210. data/docs/wiki/middleware/redirection.html +61 -0
  211. data/docs/wiki/middleware/redirection/index.html +61 -0
  212. data/docs/wiki/middleware/session.html +71 -0
  213. data/docs/wiki/middleware/session/index.html +71 -0
  214. data/docs/wiki/middleware/static.html +57 -0
  215. data/docs/wiki/middleware/static/index.html +57 -0
  216. data/docs/wiki/server-setup.html +118 -0
  217. data/docs/wiki/server-setup/index.html +118 -0
  218. data/docs/wiki/testing.html +59 -0
  219. data/docs/wiki/testing/index.html +59 -0
  220. data/docs/wiki/updating-utopia.html +108 -0
  221. data/docs/wiki/updating-utopia/index.html +108 -0
  222. data/docs/wiki/your-first-page.html +80 -0
  223. data/docs/wiki/your-first-page/index.html +80 -0
  224. data/documentation/Guardfile +0 -12
  225. data/documentation/Rakefile +3 -0
  226. data/documentation/pages/_page.xnode +2 -0
  227. data/documentation/pages/wiki/content.md +1 -0
  228. data/documentation/pages/wiki/faq/what-is-xnode/content.md +37 -0
  229. data/documentation/pages/wiki/links.yaml +3 -1
  230. data/documentation/pages/wiki/server-setup/content.md +1 -1
  231. data/documentation/pages/wiki/show.xnode +2 -0
  232. data/documentation/pages/wiki/your-first-page/content.md +1 -1
  233. data/lib/utopia/command.rb +4 -4
  234. data/lib/utopia/command/environment.rb +73 -0
  235. data/lib/utopia/command/server.rb +19 -32
  236. data/lib/utopia/command/site.rb +26 -9
  237. data/lib/utopia/content/markup.rb +1 -1
  238. data/lib/utopia/setup.rb +49 -20
  239. data/lib/utopia/version.rb +1 -1
  240. data/setup/site/README.md +6 -7
  241. data/setup/site/Rakefile +3 -0
  242. data/setup/site/pages/_page.xnode +1 -1
  243. data/setup/site/public/_static/site.css +1 -1
  244. data/setup/site/tasks/bower.rake +3 -6
  245. data/setup/site/tasks/deploy.rake +1 -1
  246. data/setup/site/tasks/development.rake +1 -1
  247. data/setup/site/tasks/environment.rake +2 -2
  248. data/setup/site/tasks/static.rake +43 -0
  249. data/spec/utopia/command_spec.rb +170 -0
  250. data/spec/utopia/setup_spec.rb +20 -142
  251. metadata +225 -42
  252. data/documentation/public/_components/jquery-syntax/.sass-cache/040afc1428b286fb3c50151378b349a6149698d3/jquery.syntax.core.sassc +0 -0
  253. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.editor.sassc +0 -0
  254. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.fixed.sassc +0 -0
  255. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.inline.sassc +0 -0
  256. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.list.sassc +0 -0
  257. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.plain.sassc +0 -0
  258. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.table.sassc +0 -0
  259. data/documentation/public/_components/jquery-syntax/.sass-cache/10c58b30c53bf84f8360af8a864797092be26882/jquery.syntax.core.sassc +0 -0
  260. data/documentation/public/_components/jquery-syntax/.sass-cache/10c58b30c53bf84f8360af8a864797092be26882/jquery.syntax.layout.fixed.sassc +0 -0
  261. data/documentation/public/_components/jquery-syntax/.sass-cache/10c58b30c53bf84f8360af8a864797092be26882/jquery.syntax.layout.inline.sassc +0 -0
  262. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/_layout.scssc +0 -0
  263. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.apache.sassc +0 -0
  264. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.applescript.sassc +0 -0
  265. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.assembly.sassc +0 -0
  266. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.bash-script.sassc +0 -0
  267. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.bash.sassc +0 -0
  268. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.clang.sassc +0 -0
  269. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.css.sassc +0 -0
  270. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.diff.sassc +0 -0
  271. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.html.sassc +0 -0
  272. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.ocaml.sassc +0 -0
  273. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.protobuf.sassc +0 -0
  274. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.python.sassc +0 -0
  275. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.ruby.sassc +0 -0
  276. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.xml.sassc +0 -0
  277. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.core.sassc +0 -0
  278. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.editor.sassc +0 -0
  279. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.editor.sassc +0 -0
  280. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.fixed.sassc +0 -0
  281. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.list.sassc +0 -0
  282. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.plain.sassc +0 -0
  283. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.table.sassc +0 -0
  284. data/documentation/public/_components/jquery-syntax/.sass-cache/8638ad407c5ea29f6547cf8ac6983da587354889/master.sassc +0 -0
  285. data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.editor.sassc +0 -0
  286. data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.fixed.sassc +0 -0
  287. data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.inline.sassc +0 -0
  288. data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.plain.sassc +0 -0
  289. data/documentation/public/_components/jquery-syntax/.sass-cache/e82f8cf4c8436da086a4506e01ef78755ebab1ce/master.scssc +0 -0
  290. data/lib/utopia/command/setup.rb +0 -78
@@ -19,5 +19,5 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  module Utopia
22
- VERSION = "2.2.0"
22
+ VERSION = "2.3.0"
23
23
  end
data/setup/site/README.md CHANGED
@@ -6,12 +6,11 @@ Welcome to Utopia, a Ruby framework for web site and application development. Fo
6
6
 
7
7
  To start the development server, simply execute
8
8
 
9
- > rake server
10
- Puma starting in single mode...
11
- * Version 2.15.3 (ruby 2.2.1-p85), codename: Autumn Arbor Airbrush
12
- * Min threads: 0, max threads: 16
13
- * Environment: development
14
- * Listening on tcp://0.0.0.0:9292
15
- Use Ctrl-C to stop
9
+ > rake
10
+ Generating transient session key for development...
11
+ 20:57:36 - INFO - Starting Falcon HTTP server on localhost:9292
12
+ 20:57:36 - INFO - Guard::RSpec is running
13
+ 20:57:36 - INFO - Guard is now watching at '...'
14
+ [1] guard(main)>
16
15
 
17
16
  Then browse http://localhost:9292 (or as specified) to see your new site.
data/setup/site/Rakefile CHANGED
@@ -1,4 +1,7 @@
1
1
 
2
+ require 'pathname'
3
+ SITE_ROOT = Pathname.new(__dir__).realpath
4
+
2
5
  # Load all rake tasks:
3
6
  import(*Dir.glob('tasks/**/*.rake'))
4
7
 
@@ -1,7 +1,6 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <?r response.content_type = "text/html; charset=utf-8" ?>
5
4
  <?r response.cache! ?>
6
5
 
7
6
  <?r if title = self[:title] ?>
@@ -11,6 +10,7 @@
11
10
  <?r end ?>
12
11
 
13
12
  <base href="#{first.node.uri_path}"/>
13
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
14
14
 
15
15
  <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous" />
16
16
 
@@ -40,7 +40,7 @@ body > header {
40
40
 
41
41
  background-color: white;
42
42
 
43
- background-image: url(/_static/utopia-background.svg);
43
+ background-image: url(utopia-background.svg);
44
44
 
45
45
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
46
46
  }
@@ -3,15 +3,12 @@ namespace :bower do
3
3
  desc 'Load the .bowerrc file and setup the environment for other tasks.'
4
4
  task :bowerrc do
5
5
  require 'json'
6
- require 'pathname'
7
6
 
8
- root = Pathname.new(__dir__).dirname
9
-
10
- bowerrc_path = root + ".bowerrc"
7
+ bowerrc_path = SITE_ROOT + ".bowerrc"
11
8
  bowerrc = JSON.load(File.read(bowerrc_path))
12
9
 
13
- @bower_package_root = root + bowerrc['directory']
14
- @bower_install_root = root + bowerrc['public']
10
+ @bower_package_root = SITE_ROOT + bowerrc['directory']
11
+ @bower_install_root = SITE_ROOT + bowerrc['public']
15
12
  @bower_install_method = (bowerrc['install'] || :copy).to_sym
16
13
  end
17
14
 
@@ -8,6 +8,6 @@ desc 'Restart the application server'
8
8
  task :restart do
9
9
  # This task is run after the deployment task above.
10
10
  if passenger_config = `which passenger-config`.chomp!
11
- sh(passenger_config, 'restart-app', '--ignore-passenger-not-running', File.dirname(__dir__))
11
+ sh(passenger_config, 'restart-app', '--ignore-passenger-not-running', SITE_ROOT.to_s)
12
12
  end
13
13
  end
@@ -27,7 +27,7 @@ task :console => :environment do
27
27
  include Rack::Test::Methods
28
28
 
29
29
  def app
30
- @app ||= Rack::Builder.parse_file(File.expand_path("../config.ru", __dir__)).first
30
+ @app ||= Rack::Builder.parse_file(SITE_ROOT + 'config.ru').first
31
31
  end
32
32
 
33
33
  Pry.start
@@ -1,7 +1,7 @@
1
1
 
2
2
  desc 'Set up the environment for running your web application'
3
- task :environment do
4
- require_relative '../config/environment'
3
+ task :environment do |task|
4
+ require SITE_ROOT + 'config/environment'
5
5
 
6
6
  # We ensure this is part of the shell environment so if other commands are invoked they will work correctly.
7
7
  ENV['RACK_ENV'] = RACK_ENV.to_s if defined?(RACK_ENV)
@@ -0,0 +1,43 @@
1
+
2
+ namespace :static do
3
+ task :static_environment do
4
+ RACK_ENV ||= :static
5
+ DATABASE_ENV ||= :production
6
+ SERVER_PORT ||= 9291
7
+ end
8
+
9
+ desc "Generate a static copy of the site."
10
+ task :generate => [:static_environment, :environment] do
11
+ require 'falcon/server'
12
+ require 'async/io'
13
+ require 'async/container'
14
+
15
+ config_path = SITE_ROOT + 'config.ru'
16
+ container_class = Async::Container::Threaded
17
+
18
+ app, options = Rack::Builder.parse_file(config_path.to_s)
19
+
20
+ container = container_class.new(concurrency: 2) do
21
+ server = Falcon::Server.new(app, [
22
+ Async::IO::Endpoint.parse("tcp://localhost:#{SERVER_PORT}", reuse_port: true)
23
+ ])
24
+
25
+ server.run
26
+ end
27
+
28
+ output_path = ENV.fetch('OUTPUT_PATH') {SITE_ROOT + 'static'}
29
+
30
+ # Delete any existing stuff:
31
+ FileUtils.rm_rf(output_path)
32
+
33
+ # Copy all public assets:
34
+ Dir.glob(SITE_ROOT + 'public/*').each do |path|
35
+ FileUtils.cp_r(path, output_path)
36
+ end
37
+
38
+ # Generate HTML pages:
39
+ system("wget", "--mirror", "--recursive", "--continue", "--convert-links", "--adjust-extension", "--no-host-directories", "--directory-prefix", output_path.to_s, "http://localhost:#{SERVER_PORT}")
40
+
41
+ container.stop
42
+ end
43
+ end
@@ -0,0 +1,170 @@
1
+ # Copyright, 2016, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ require 'fileutils'
22
+ require 'tmpdir'
23
+ require 'yaml'
24
+
25
+ require 'open3'
26
+
27
+ RSpec.describe "utopia command" do
28
+ let(:utopia) {File.expand_path("../../bin/utopia", __dir__)}
29
+ let(:gemspec) {Gem::Specification.load File.expand_path("../../utopia.gemspec", __dir__)}
30
+ let(:package_path) {File.expand_path("../../pkg/#{gemspec.file_name}", __dir__)}
31
+
32
+ before(:all) do
33
+ # We need to build a package to test deployment:
34
+ system("rake", "build") or abort("Could not build package for setup spec!")
35
+
36
+ ENV['DEPLOY_USER'] = 'http'
37
+ ENV['DEPLOY_GROUP'] = 'http'
38
+ end
39
+
40
+ around(:each) do |example|
41
+ Bundler.with_clean_env do
42
+ # If we don't delete this, when running on travis, it will try submit the coverage report.
43
+ ENV.delete('COVERAGE')
44
+
45
+ # This allows the utopia command to load the correct library:
46
+ ENV['RUBYLIB'] = File.expand_path("../../lib", __dir__)
47
+
48
+ example.run
49
+ end
50
+ end
51
+
52
+ def sh_status(*args)
53
+ system(*args) ? 0 : false
54
+ end
55
+
56
+ def sh_stdout(*args)
57
+ output, status = Open3.capture2(*args)
58
+ return output
59
+ end
60
+
61
+ def git_config(name, value=nil)
62
+ unless value.nil?
63
+ return sh_status('git', 'config', name, value)
64
+ else
65
+ return sh_stdout('git', 'config', name).chomp
66
+ end
67
+ end
68
+
69
+ def group_rw(path)
70
+ gaccess = File.stat(path).mode.to_s(8)[-2]
71
+ return gaccess == '6' || gaccess == '7'
72
+ end
73
+
74
+ def install_packages(dir)
75
+ # We do a bit of a hack here to ensure the package is available:
76
+ FileUtils.mkpath File.join(dir, "vendor/cache")
77
+ FileUtils.cp package_path, File.join(dir, "vendor/cache")
78
+ end
79
+
80
+ it "should generate sample site" do
81
+ Dir.mktmpdir('test-site') do |dir|
82
+ install_packages(dir)
83
+
84
+ result = sh_status(utopia, "--in", dir, "site", "create")
85
+ expect(result).to be == 0
86
+
87
+ expect(Dir.entries(dir)).to include(".bowerrc", ".git", "Gemfile", "Gemfile.lock", "README.md", "Rakefile", "config.ru", "lib", "pages", "public", "spec")
88
+
89
+ Dir.chdir(dir) do
90
+ result = sh_status("rake", "test")
91
+ expect(result).to be == 0
92
+ end
93
+ end
94
+ end
95
+
96
+ it "should generate a sample server" do
97
+ Dir.mktmpdir('test-server') do |dir|
98
+ install_packages(dir)
99
+
100
+ result = sh_status(utopia, "--in", dir, "server", "create")
101
+ expect(result).to be == 0
102
+
103
+ expect(Dir.entries(dir)).to include(".git")
104
+
105
+ # make sure git is set up properly
106
+ Dir.chdir(dir) do
107
+ expect(git_config 'core.sharedRepository').to be == '1'
108
+ expect(git_config 'receive.denyCurrentBranch').to be == 'ignore'
109
+ expect(git_config 'core.worktree').to be == dir
110
+ end
111
+
112
+ environment = YAML.load_file(File.join(dir, 'config/environment.yaml'))
113
+ expect(environment).to include('RACK_ENV', 'UTOPIA_SESSION_SECRET')
114
+ end
115
+ end
116
+
117
+ it "should not trash the sample server during update" do
118
+ Dir.mktmpdir('test-server') do |dir|
119
+ install_packages(dir)
120
+
121
+ result = sh_status(utopia, "--in", dir, "server", "create")
122
+ expect(result).to be == 0
123
+
124
+ Dir.chdir(dir) do
125
+ # make the repository look a bit like like it's an old one
126
+ git_config 'core.sharedRepository', 'false'
127
+ sh_status 'chmod', '-Rf', 'g-x', '.git'
128
+ sh_status 'rm', '-f', '.git/hooks/post-receive'
129
+ end
130
+
131
+ result = sh_status(utopia, "--in", dir, "server", "update")
132
+ expect(result).to be == 0
133
+
134
+ # check a couple of files to make sure they have group read and write access
135
+ # after the update
136
+ Dir.glob(File.join(dir, '.git/**/*')).each do |path|
137
+ expect(group_rw path).to be == true
138
+ end
139
+ end
140
+ end
141
+
142
+ it "can generate sample site, server and push to the server" do
143
+ Dir.mktmpdir('test') do |dir|
144
+ site_path = File.join(dir, 'site')
145
+
146
+ install_packages(site_path)
147
+
148
+ server_path = File.join(dir, 'server')
149
+
150
+ result = sh_status(utopia, "--in", site_path, "site", "create")
151
+ expect(result).to be == 0
152
+
153
+ result = sh_status(utopia, "--in", server_path, "server", "create")
154
+ expect(result).to be == 0
155
+
156
+ Dir.chdir(site_path) do
157
+ result = sh_status("git", "push", "--set-upstream", server_path, "master")
158
+ expect(result).to be == 0
159
+ end
160
+
161
+ files = %W[.bowerrc .git Gemfile Gemfile.lock README.md Rakefile config.ru lib pages public]
162
+
163
+ expect(Dir.entries(server_path)).to include(*files)
164
+
165
+ expect(File.executable? File.join(server_path, 'config.ru')).to be == true
166
+
167
+ puts File.stat(File.join(dir, 'server', '.git')).mode
168
+ end
169
+ end
170
+ end
@@ -1,4 +1,4 @@
1
- # Copyright, 2016, by Samuel G. D. Williams. <http://www.codeotaku.com>
1
+ # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  # of this software and associated documentation files (the "Software"), to deal
@@ -18,153 +18,31 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
- require 'fileutils'
22
- require 'tmpdir'
23
- require 'yaml'
21
+ require 'utopia/setup'
24
22
 
25
- require 'open3'
26
-
27
- RSpec.describe "utopia executable" do
28
- let(:utopia) {File.expand_path("../../bin/utopia", __dir__)}
29
- let(:gemspec) {Gem::Specification.load File.expand_path("../../utopia.gemspec", __dir__)}
30
- let(:package_path) {File.expand_path("../../pkg/#{gemspec.file_name}", __dir__)}
23
+ RSpec.describe Utopia::Setup do
24
+ let(:config_root) {File.expand_path('setup_spec/config', __dir__)}
25
+ subject{Utopia::Setup.new(config_root)}
31
26
 
32
- before(:all) do
33
- # We need to build a package to test deployment:
34
- system("rake", "build") or abort("Could not build package for setup spec!")
27
+ it "should load specified environment" do
28
+ stub_const("Utopia::Setup::ENV", {'UTOPIA_ENV' => 'production'})
35
29
 
36
- ENV['DEPLOY_USER'] = 'http'
37
- ENV['DEPLOY_GROUP'] = 'http'
38
- end
39
-
40
- around(:each) do |example|
41
- Bundler.with_clean_env do
42
- # If we don't delete this, when running on travis, it will try submit the coverage report.
43
- ENV.delete('COVERAGE')
44
-
45
- # This allows the utopia command to load the correct library:
46
- ENV['RUBYLIB'] = File.expand_path("../../lib", __dir__)
47
-
48
- example.run
49
- end
50
- end
51
-
52
- def sh_status(*args)
53
- system(*args) ? 0 : false
54
- end
55
-
56
- def sh_stdout(*args)
57
- output, status = Open3.capture2(*args)
58
- return output
59
- end
60
-
61
- def git_config(name, value=nil)
62
- unless value.nil?
63
- return sh_status('git', 'config', name, value)
64
- else
65
- return sh_stdout('git', 'config', name).chomp
66
- end
67
- end
68
-
69
- def group_rw(path)
70
- gaccess = File.stat(path).mode.to_s(8)[-2]
71
- return gaccess == '6' || gaccess == '7'
72
- end
73
-
74
- def install_packages(dir)
75
- # We do a bit of a hack here to ensure the package is available:
76
- FileUtils.mkpath File.join(dir, "vendor/cache")
77
- FileUtils.cp package_path, File.join(dir, "vendor/cache")
78
- end
79
-
80
- it "should generate sample site" do
81
- Dir.mktmpdir('test-site') do |dir|
82
- install_packages(dir)
83
-
84
- result = sh_status(utopia, "--in", dir, "site", "create")
85
- expect(result).to be == 0
86
-
87
- expect(Dir.entries(dir)).to include(".bowerrc", ".git", "Gemfile", "Gemfile.lock", "README.md", "Rakefile", "config.ru", "lib", "pages", "public", "spec")
88
-
89
- Dir.chdir(dir) do
90
- result = sh_status("rake", "test")
91
- expect(result).to be == 0
92
- end
93
- end
94
- end
95
-
96
- it "should generate a sample server" do
97
- Dir.mktmpdir('test-server') do |dir|
98
- install_packages(dir)
99
-
100
- result = sh_status(utopia, "--in", dir, "server", "create")
101
- expect(result).to be == 0
102
-
103
- expect(Dir.entries(dir)).to include(".git")
104
-
105
- # make sure git is set up properly
106
- Dir.chdir(dir) do
107
- expect(git_config 'core.sharedRepository').to be == '1'
108
- expect(git_config 'receive.denyCurrentBranch').to be == 'ignore'
109
- expect(git_config 'core.worktree').to be == dir
110
- end
111
-
112
- environment = YAML.load_file(File.join(dir, 'config/environment.yaml'))
113
- expect(environment).to include('RACK_ENV', 'UTOPIA_SESSION_SECRET')
114
- end
30
+ expect(subject).to receive(:load_environment).with('production')
31
+
32
+ subject.apply_environment
115
33
  end
116
34
 
117
- it "should not trash the sample server during update" do
118
- Dir.mktmpdir('test-server') do |dir|
119
- install_packages(dir)
120
-
121
- result = sh_status(utopia, "--in", dir, "server", "create")
122
- expect(result).to be == 0
123
-
124
- Dir.chdir(dir) do
125
- # make the repository look a bit like like it's an old one
126
- git_config 'core.sharedRepository', 'false'
127
- sh_status 'chmod', '-Rf', 'g-x', '.git'
128
- sh_status 'rm', '-f', '.git/hooks/post-receive'
129
- end
130
-
131
- result = sh_status(utopia, "--in", dir, "server", "update")
132
- expect(result).to be == 0
133
-
134
- # check a couple of files to make sure they have group read and write access
135
- # after the update
136
- Dir.glob(File.join(dir, '.git/**/*')).each do |path|
137
- expect(group_rw path).to be == true
138
- end
139
- end
35
+ it "should load default environment" do
36
+ stub_const("Utopia::Setup::ENV", {})
37
+
38
+ expect(subject).to receive(:load_environment).with('environment')
39
+
40
+ subject.apply_environment
140
41
  end
141
42
 
142
- it "can generate sample site, server and push to the server" do
143
- Dir.mktmpdir('test') do |dir|
144
- site_path = File.join(dir, 'site')
145
-
146
- install_packages(site_path)
147
-
148
- server_path = File.join(dir, 'server')
149
-
150
- result = sh_status(utopia, "--in", site_path, "site", "create")
151
- expect(result).to be == 0
152
-
153
- result = sh_status(utopia, "--in", server_path, "server", "create")
154
- expect(result).to be == 0
155
-
156
- Dir.chdir(site_path) do
157
- result = sh_status("git", "push", "--set-upstream", server_path, "master")
158
- expect(result).to be == 0
159
- end
160
-
161
- files = %W[.bowerrc .git Gemfile Gemfile.lock README.md Rakefile config.ru lib pages public]
162
-
163
- expect(Dir.entries(server_path)).to include(*files)
164
-
165
- expect(File.executable? File.join(server_path, 'config.ru')).to be == true
166
-
167
- puts File.stat(File.join(dir, 'server', '.git')).mode
168
- end
43
+ it "should add load path" do
44
+ subject.add_load_path('lib')
45
+
46
+ expect($LOAD_PATH).to include(File.expand_path('lib', subject.site_root))
169
47
  end
170
48
  end