rbcli 0.2.10 → 0.3.1

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 (444) hide show
  1. checksums.yaml +4 -4
  2. data/.rakeTasks +7 -0
  3. data/.rbenv-gemsets +1 -0
  4. data/CHANGELOG.md +46 -0
  5. data/Gemfile.lock +66 -48
  6. data/README.md +4 -4
  7. data/docs/404.html +54 -670
  8. data/docs/advanced/automatic_updates/index.html +998 -651
  9. data/docs/advanced/command_types/index.html +1022 -742
  10. data/docs/advanced/distributed_state_locking/index.html +998 -635
  11. data/docs/advanced/hooks/index.html +1011 -691
  12. data/docs/advanced/index.html +1140 -0
  13. data/docs/advanced/index.xml +113 -0
  14. data/docs/advanced/interactive_commands/index.html +1001 -653
  15. data/docs/advanced/logging/index.html +1006 -655
  16. data/docs/advanced/remote_execution/index.html +1010 -666
  17. data/docs/advanced/state_storage/index.html +1009 -721
  18. data/docs/advanced/user_config_files/index.html +981 -626
  19. data/docs/categories/index.html +1146 -0
  20. data/docs/categories/index.xml +10 -0
  21. data/docs/css/atom-one-dark-reasonable.css +77 -0
  22. data/docs/css/auto-complete.css +47 -0
  23. data/docs/css/featherlight.min.css +8 -0
  24. data/docs/css/fontawesome-all.min.css +1 -0
  25. data/docs/css/hugo-theme.css +254 -0
  26. data/docs/css/hybrid.css +102 -0
  27. data/docs/css/nucleus.css +615 -0
  28. data/docs/css/perfect-scrollbar.min.css +2 -0
  29. data/docs/css/tags.css +49 -0
  30. data/docs/css/theme-blue.css +111 -0
  31. data/docs/css/theme-green.css +111 -0
  32. data/docs/css/theme-red.css +111 -0
  33. data/docs/css/theme.css +1136 -0
  34. data/docs/development/changelog/index.html +1389 -0
  35. data/docs/development/code_of_conduct/index.html +973 -670
  36. data/docs/development/contributing/index.html +989 -583
  37. data/docs/development/index.html +1140 -0
  38. data/docs/development/index.xml +50 -0
  39. data/docs/development/license/index.html +973 -559
  40. data/docs/fonts/Inconsolata.eot +0 -0
  41. data/docs/fonts/Inconsolata.svg +1 -0
  42. data/docs/fonts/Inconsolata.ttf +0 -0
  43. data/docs/fonts/Inconsolata.woff +0 -0
  44. data/docs/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
  45. data/docs/fonts/Novecentosanswide-Normal-webfont.svg +1 -0
  46. data/docs/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
  47. data/docs/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
  48. data/docs/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
  49. data/docs/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
  50. data/docs/fonts/Novecentosanswide-UltraLight-webfont.svg +1 -0
  51. data/docs/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
  52. data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
  53. data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
  54. data/docs/fonts/Work_Sans_200.eot +0 -0
  55. data/docs/fonts/Work_Sans_200.svg +1 -0
  56. data/docs/fonts/Work_Sans_200.ttf +0 -0
  57. data/docs/fonts/Work_Sans_200.woff +0 -0
  58. data/docs/fonts/Work_Sans_200.woff2 +0 -0
  59. data/docs/fonts/Work_Sans_300.eot +0 -0
  60. data/docs/fonts/Work_Sans_300.svg +1 -0
  61. data/docs/fonts/Work_Sans_300.ttf +0 -0
  62. data/docs/fonts/Work_Sans_300.woff +0 -0
  63. data/docs/fonts/Work_Sans_300.woff2 +0 -0
  64. data/docs/fonts/Work_Sans_500.eot +0 -0
  65. data/docs/fonts/Work_Sans_500.svg +1 -0
  66. data/docs/fonts/Work_Sans_500.ttf +0 -0
  67. data/docs/fonts/Work_Sans_500.woff +0 -0
  68. data/docs/fonts/Work_Sans_500.woff2 +0 -0
  69. data/docs/images/clippy.svg +1 -0
  70. data/docs/images/favicon.png +0 -0
  71. data/docs/images/gopher-404.jpg +0 -0
  72. data/docs/imported/changelog/index.html +1208 -1020
  73. data/docs/imported/index.html +1191 -0
  74. data/docs/imported/index.xml +23 -0
  75. data/docs/index.html +925 -558
  76. data/docs/index.json +183 -0
  77. data/docs/index.xml +208 -0
  78. data/docs/js/auto-complete.js +3 -0
  79. data/docs/js/clipboard.min.js +7 -0
  80. data/docs/js/featherlight.min.js +9 -0
  81. data/docs/js/highlight.pack.js +6 -0
  82. data/docs/js/html5shiv-printshiv.min.js +4 -0
  83. data/docs/js/hugo-learn.js +94 -0
  84. data/docs/js/jquery-3.3.1.min.js +2 -0
  85. data/docs/js/jquery.sticky.js +288 -0
  86. data/docs/js/learn.js +459 -0
  87. data/docs/js/lunr.min.js +6 -0
  88. data/docs/js/modernizr.custom-3.6.0.js +3 -0
  89. data/docs/js/perfect-scrollbar.jquery.min.js +2 -0
  90. data/docs/js/perfect-scrollbar.min.js +2 -0
  91. data/docs/js/search.js +93 -0
  92. data/docs/mermaid/mermaid.css +277 -0
  93. data/docs/mermaid/mermaid.dark.css +278 -0
  94. data/docs/mermaid/mermaid.forest.css +356 -0
  95. data/docs/mermaid/mermaid.js +8 -0
  96. data/docs/quick_reference/index.html +1246 -0
  97. data/docs/quick_reference/index.xml +11 -0
  98. data/docs/sitemap.xml +82 -108
  99. data/docs/tags/index.html +1146 -0
  100. data/docs/tags/index.xml +10 -0
  101. data/docs/tutorial/10-getting_started/index.html +994 -662
  102. data/docs/tutorial/20-project_layout/index.html +1013 -722
  103. data/docs/tutorial/30-your_first_command/index.html +1055 -734
  104. data/docs/tutorial/40-options_parameters_and_arguments/index.html +1139 -881
  105. data/docs/tutorial/50-publishing/index.html +984 -671
  106. data/docs/tutorial/index.html +1140 -0
  107. data/docs/tutorial/index.xml +67 -0
  108. data/docs/webfonts/fa-brands-400.eot +0 -0
  109. data/docs/webfonts/fa-brands-400.svg +1 -0
  110. data/docs/webfonts/fa-brands-400.ttf +0 -0
  111. data/docs/webfonts/fa-brands-400.woff +0 -0
  112. data/docs/webfonts/fa-brands-400.woff2 +0 -0
  113. data/docs/webfonts/fa-regular-400.eot +0 -0
  114. data/docs/webfonts/fa-regular-400.svg +1 -0
  115. data/docs/webfonts/fa-regular-400.ttf +0 -0
  116. data/docs/webfonts/fa-regular-400.woff +0 -0
  117. data/docs/webfonts/fa-regular-400.woff2 +0 -0
  118. data/docs/webfonts/fa-solid-900.eot +0 -0
  119. data/docs/webfonts/fa-solid-900.svg +1 -0
  120. data/docs/webfonts/fa-solid-900.ttf +0 -0
  121. data/docs/webfonts/fa-solid-900.woff +0 -0
  122. data/docs/webfonts/fa-solid-900.woff2 +0 -0
  123. data/docs/whoami/index.html +965 -555
  124. data/docs/whoami/index.xml +11 -0
  125. data/docs-src/archetypes/default.md +6 -0
  126. data/docs-src/config.toml +37 -0
  127. data/docs-src/{docs/index.md → content/_index.md} +4 -4
  128. data/docs-src/content/advanced/_index.md +11 -0
  129. data/docs-src/{docs → content}/advanced/automatic_updates.md +6 -2
  130. data/docs-src/{docs → content}/advanced/command_types.md +8 -4
  131. data/docs-src/{docs → content}/advanced/distributed_state_locking.md +6 -2
  132. data/docs-src/{docs → content}/advanced/hooks.md +6 -2
  133. data/docs-src/{docs → content}/advanced/interactive_commands.md +5 -1
  134. data/docs-src/{docs → content}/advanced/logging.md +6 -2
  135. data/docs-src/{docs → content}/advanced/remote_execution.md +5 -1
  136. data/docs-src/{docs → content}/advanced/state_storage.md +6 -3
  137. data/docs-src/{docs → content}/advanced/user_config_files.md +5 -1
  138. data/docs-src/content/development/_index.md +11 -0
  139. data/docs-src/{docs/imported → content/development}/changelog.md +82 -6
  140. data/docs-src/{docs → content}/development/code_of_conduct.md +8 -1
  141. data/docs-src/{docs → content}/development/contributing.md +16 -1
  142. data/docs-src/{docs → content}/development/license.md +9 -2
  143. data/docs-src/{docs/imported/quick_reference.md → content/quick_reference/_index.md} +10 -3
  144. data/docs-src/{docs → content}/tutorial/10-getting_started.md +7 -1
  145. data/docs-src/{docs → content}/tutorial/20-project_layout.md +10 -2
  146. data/docs-src/{docs → content}/tutorial/30-your_first_command.md +10 -4
  147. data/docs-src/{docs → content}/tutorial/40-options_parameters_and_arguments.md +9 -3
  148. data/docs-src/{docs → content}/tutorial/50-publishing.md +9 -3
  149. data/docs-src/content/tutorial/_index.md +11 -0
  150. data/docs-src/{docs/whoami.md → content/whoami/_index.md} +11 -5
  151. data/docs-src/layouts/partials/logo.html +3 -0
  152. data/docs-src/makesite.sh +33 -7
  153. data/docs-src/mkdocs-archived.tar.gz +0 -0
  154. data/docs-src/runsite.sh +6 -1
  155. data/docs-src/themes/hugo-theme-learn/.editorconfig +16 -0
  156. data/docs-src/themes/hugo-theme-learn/.gitignore +3 -0
  157. data/docs-src/themes/hugo-theme-learn/.grenrc.yml +25 -0
  158. data/docs-src/themes/hugo-theme-learn/CHANGELOG.md +226 -0
  159. data/docs-src/themes/hugo-theme-learn/LICENSE.md +22 -0
  160. data/docs-src/themes/hugo-theme-learn/README.md +97 -0
  161. data/docs-src/themes/hugo-theme-learn/archetypes/chapter.md +13 -0
  162. data/docs-src/themes/hugo-theme-learn/archetypes/default.md +7 -0
  163. data/docs-src/themes/hugo-theme-learn/exampleSite/LICENSE.md +20 -0
  164. data/docs-src/themes/hugo-theme-learn/exampleSite/config.toml +102 -0
  165. data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.en.md +41 -0
  166. data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.fr.md +43 -0
  167. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.en.md +12 -0
  168. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.fr.md +12 -0
  169. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.zh.md +12 -0
  170. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.en.md +60 -0
  171. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.fr.md +56 -0
  172. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.en.md +102 -0
  173. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.fr.md +100 -0
  174. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/images/chapter.png +0 -0
  175. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.en.md +11 -0
  176. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.fr.md +11 -0
  177. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/images/magic.gif +0 -0
  178. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.en.md +194 -0
  179. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.fr.md +194 -0
  180. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/blue-variant.png +0 -0
  181. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/green-variant.png +0 -0
  182. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/red-variant.png +0 -0
  183. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.en.md +12 -0
  184. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.fr.md +12 -0
  185. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.en.md +57 -0
  186. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.fr.md +57 -0
  187. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.en.md +78 -0
  188. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.fr.md +78 -0
  189. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/images/i18n-menu.gif +0 -0
  190. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/icons.en.md +41 -0
  191. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.en.md +692 -0
  192. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.fr.md +666 -0
  193. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.en.md +109 -0
  194. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.fr.md +109 -0
  195. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.en.md +166 -0
  196. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.fr.md +146 -0
  197. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/frontmatter-icon.png +0 -0
  198. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-chapter.png +0 -0
  199. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-default.png +0 -0
  200. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/syntaxhighlight.en.md +89 -0
  201. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.en.md +39 -0
  202. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.fr.md +40 -0
  203. data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.en.md +28 -0
  204. data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.fr.md +28 -0
  205. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.en.md +16 -0
  206. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.fr.md +16 -0
  207. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3 +0 -0
  208. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
  209. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf +0 -0
  210. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png +0 -0
  211. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
  212. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.md +85 -0
  213. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3 +0 -0
  214. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
  215. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf +0 -0
  216. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png +0 -0
  217. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
  218. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.md +85 -0
  219. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.en.md +16 -0
  220. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.fr.md +16 -0
  221. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.en.md +45 -0
  222. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.fr.md +45 -0
  223. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.en.md +6 -0
  224. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md +6 -0
  225. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md +6 -0
  226. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md +6 -0
  227. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.en.md +6 -0
  228. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.fr.md +6 -0
  229. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.en.md +6 -0
  230. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.fr.md +6 -0
  231. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.en.md +6 -0
  232. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.fr.md +6 -0
  233. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.en.md +11 -0
  234. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md +11 -0
  235. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.en.md +6 -0
  236. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md +6 -0
  237. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.en.md +6 -0
  238. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md +6 -0
  239. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.en.md +7 -0
  240. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md +7 -0
  241. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.en.md +6 -0
  242. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.fr.md +6 -0
  243. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.en.md +45 -0
  244. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.fr.md +45 -0
  245. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.en.md +283 -0
  246. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.fr.md +283 -0
  247. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.en.md +62 -0
  248. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.fr.md +62 -0
  249. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.en.md +23 -0
  250. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.fr.md +23 -0
  251. data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.en.md +13 -0
  252. data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.fr.md +14 -0
  253. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/custom-footer.html +10 -0
  254. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/logo.html +39 -0
  255. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/menu-footer.html +14 -0
  256. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/shortcodes/ghcontributors.html +31 -0
  257. data/docs-src/themes/hugo-theme-learn/exampleSite/static/css/theme-mine.css +104 -0
  258. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.eot +0 -0
  259. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.svg +1 -0
  260. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.ttf +0 -0
  261. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff +0 -0
  262. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff2 +0 -0
  263. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/inteliver_docs.png +0 -0
  264. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tat.png +0 -0
  265. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tshark_dev.png +0 -0
  266. data/docs-src/themes/hugo-theme-learn/i18n/ar.toml +26 -0
  267. data/docs-src/themes/hugo-theme-learn/i18n/de.toml +26 -0
  268. data/docs-src/themes/hugo-theme-learn/i18n/en.toml +26 -0
  269. data/docs-src/themes/hugo-theme-learn/i18n/es.toml +26 -0
  270. data/docs-src/themes/hugo-theme-learn/i18n/fr.toml +26 -0
  271. data/docs-src/themes/hugo-theme-learn/i18n/hi.toml +26 -0
  272. data/docs-src/themes/hugo-theme-learn/i18n/id.toml +26 -0
  273. data/docs-src/themes/hugo-theme-learn/i18n/ja.toml +26 -0
  274. data/docs-src/themes/hugo-theme-learn/i18n/nl.toml +26 -0
  275. data/docs-src/themes/hugo-theme-learn/i18n/pt.toml +26 -0
  276. data/docs-src/themes/hugo-theme-learn/i18n/ru.toml +26 -0
  277. data/docs-src/themes/hugo-theme-learn/i18n/tr.toml +26 -0
  278. data/docs-src/themes/hugo-theme-learn/i18n/zh-cn.toml +26 -0
  279. data/docs-src/themes/hugo-theme-learn/images/screenshot.png +0 -0
  280. data/docs-src/themes/hugo-theme-learn/images/tn.png +0 -0
  281. data/docs-src/themes/hugo-theme-learn/layouts/404.html +56 -0
  282. data/docs-src/themes/hugo-theme-learn/layouts/_default/list.html +22 -0
  283. data/docs-src/themes/hugo-theme-learn/layouts/_default/single.html +12 -0
  284. data/docs-src/themes/hugo-theme-learn/layouts/index.html +31 -0
  285. data/docs-src/themes/hugo-theme-learn/layouts/index.json +12 -0
  286. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-comments.html +3 -0
  287. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-footer.html +5 -0
  288. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-header.html +5 -0
  289. data/docs-src/themes/hugo-theme-learn/layouts/partials/favicon.html +1 -0
  290. data/docs-src/themes/hugo-theme-learn/layouts/partials/footer.html +77 -0
  291. data/docs-src/themes/hugo-theme-learn/layouts/partials/header.html +111 -0
  292. data/docs-src/themes/hugo-theme-learn/layouts/partials/logo.html +19 -0
  293. data/docs-src/themes/hugo-theme-learn/layouts/partials/menu-footer.html +1 -0
  294. data/docs-src/themes/hugo-theme-learn/layouts/partials/menu.html +151 -0
  295. data/docs-src/themes/hugo-theme-learn/layouts/partials/meta.html +2 -0
  296. data/docs-src/themes/hugo-theme-learn/layouts/partials/search.html +16 -0
  297. data/docs-src/themes/hugo-theme-learn/layouts/partials/tags.html +7 -0
  298. data/docs-src/themes/hugo-theme-learn/layouts/partials/toc.html +5 -0
  299. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/attachments.html +36 -0
  300. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/button.html +14 -0
  301. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/children.html +101 -0
  302. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/expand.html +17 -0
  303. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/mermaid.html +2 -0
  304. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/notice.html +2 -0
  305. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/ref.html +14 -0
  306. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/relref.html +14 -0
  307. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/siteparam.html +7 -0
  308. data/docs-src/themes/hugo-theme-learn/netlify.toml +23 -0
  309. data/docs-src/themes/hugo-theme-learn/static/css/atom-one-dark-reasonable.css +77 -0
  310. data/docs-src/themes/hugo-theme-learn/static/css/auto-complete.css +47 -0
  311. data/docs-src/themes/hugo-theme-learn/static/css/featherlight.min.css +8 -0
  312. data/docs-src/themes/hugo-theme-learn/static/css/fontawesome-all.min.css +1 -0
  313. data/docs-src/themes/hugo-theme-learn/static/css/hugo-theme.css +254 -0
  314. data/docs-src/themes/hugo-theme-learn/static/css/hybrid.css +102 -0
  315. data/docs-src/themes/hugo-theme-learn/static/css/nucleus.css +615 -0
  316. data/docs-src/themes/hugo-theme-learn/static/css/perfect-scrollbar.min.css +2 -0
  317. data/docs-src/themes/hugo-theme-learn/static/css/tags.css +49 -0
  318. data/docs-src/themes/hugo-theme-learn/static/css/theme-blue.css +111 -0
  319. data/docs-src/themes/hugo-theme-learn/static/css/theme-green.css +111 -0
  320. data/docs-src/themes/hugo-theme-learn/static/css/theme-red.css +111 -0
  321. data/docs-src/themes/hugo-theme-learn/static/css/theme.css +1136 -0
  322. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.eot +0 -0
  323. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.svg +1 -0
  324. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.ttf +0 -0
  325. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.woff +0 -0
  326. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
  327. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.svg +1 -0
  328. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
  329. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
  330. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
  331. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
  332. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.svg +1 -0
  333. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
  334. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
  335. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
  336. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.eot +0 -0
  337. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.svg +1 -0
  338. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.ttf +0 -0
  339. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff +0 -0
  340. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff2 +0 -0
  341. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.eot +0 -0
  342. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.svg +1 -0
  343. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.ttf +0 -0
  344. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff +0 -0
  345. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff2 +0 -0
  346. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.eot +0 -0
  347. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.svg +1 -0
  348. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.ttf +0 -0
  349. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff +0 -0
  350. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff2 +0 -0
  351. data/docs-src/themes/hugo-theme-learn/static/images/clippy.svg +1 -0
  352. data/docs-src/themes/hugo-theme-learn/static/images/favicon.png +0 -0
  353. data/docs-src/themes/hugo-theme-learn/static/images/gopher-404.jpg +0 -0
  354. data/docs-src/themes/hugo-theme-learn/static/js/auto-complete.js +3 -0
  355. data/docs-src/themes/hugo-theme-learn/static/js/clipboard.min.js +7 -0
  356. data/docs-src/themes/hugo-theme-learn/static/js/featherlight.min.js +9 -0
  357. data/docs-src/themes/hugo-theme-learn/static/js/highlight.pack.js +6 -0
  358. data/docs-src/themes/hugo-theme-learn/static/js/hugo-learn.js +94 -0
  359. data/docs-src/themes/hugo-theme-learn/static/js/jquery-3.3.1.min.js +2 -0
  360. data/docs-src/themes/hugo-theme-learn/static/js/jquery.sticky.js +288 -0
  361. data/docs-src/themes/hugo-theme-learn/static/js/learn.js +459 -0
  362. data/docs-src/themes/hugo-theme-learn/static/js/lunr.min.js +6 -0
  363. data/docs-src/themes/hugo-theme-learn/static/js/modernizr.custom-3.6.0.js +3 -0
  364. data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.jquery.min.js +2 -0
  365. data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.min.js +2 -0
  366. data/docs-src/themes/hugo-theme-learn/static/js/search.js +93 -0
  367. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.css +277 -0
  368. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.dark.css +278 -0
  369. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.forest.css +356 -0
  370. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.js +8 -0
  371. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.eot +0 -0
  372. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.svg +1 -0
  373. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.ttf +0 -0
  374. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff +0 -0
  375. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff2 +0 -0
  376. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.eot +0 -0
  377. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.svg +1 -0
  378. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.ttf +0 -0
  379. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff +0 -0
  380. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff2 +0 -0
  381. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.eot +0 -0
  382. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.svg +1 -0
  383. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.ttf +0 -0
  384. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff +0 -0
  385. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff2 +0 -0
  386. data/docs-src/themes/hugo-theme-learn/theme.toml +21 -0
  387. data/docs-src/themes/hugo-theme-learn/wercker.yml +16 -0
  388. data/exe/rbcli +1 -0
  389. data/lib/rbcli/configuration/configurate_blocks/me.rb +5 -5
  390. data/lib/rbcli/engine/command.rb +3 -2
  391. data/lib/rbcli/util/deprecation_warning.rb +21 -4
  392. data/lib/rbcli/util/msg.rb +0 -1
  393. data/lib/rbcli/version.rb +1 -1
  394. data/lib/rbcli-tool/project.rb +6 -2
  395. data/rbcli.gemspec +12 -13
  396. data/skeletons/project/.rakeTasks +7 -0
  397. data/skeletons/project/Gemfile +1 -1
  398. data/skeletons/project/application/commands/scripts/script.sh +6 -1
  399. data/skeletons/project/config/general.rb +1 -1
  400. data/skeletons/project/exe/executable +1 -3
  401. data/skeletons/project/lib/lib.erb +9 -0
  402. data/skeletons/project/spec/spec_helper.rb +7 -7
  403. data/skeletons/project/spec/untitled_spec.rb +6 -6
  404. data/skeletons/project/untitled.gemspec +30 -30
  405. metadata +384 -98
  406. data/docs/assets/fonts/font-awesome.css +0 -4
  407. data/docs/assets/fonts/material-icons.css +0 -13
  408. data/docs/assets/fonts/specimen/FontAwesome.ttf +0 -0
  409. data/docs/assets/fonts/specimen/FontAwesome.woff +0 -0
  410. data/docs/assets/fonts/specimen/FontAwesome.woff2 +0 -0
  411. data/docs/assets/fonts/specimen/MaterialIcons-Regular.ttf +0 -0
  412. data/docs/assets/fonts/specimen/MaterialIcons-Regular.woff +0 -0
  413. data/docs/assets/fonts/specimen/MaterialIcons-Regular.woff2 +0 -0
  414. data/docs/assets/images/favicon.png +0 -0
  415. data/docs/assets/images/icons/bitbucket.1b09e088.svg +0 -20
  416. data/docs/assets/images/icons/github.f0b8504a.svg +0 -18
  417. data/docs/assets/images/icons/gitlab.6dd19c00.svg +0 -38
  418. data/docs/assets/javascripts/application.583bbe55.js +0 -1
  419. data/docs/assets/javascripts/lunr/lunr.da.js +0 -1
  420. data/docs/assets/javascripts/lunr/lunr.de.js +0 -1
  421. data/docs/assets/javascripts/lunr/lunr.du.js +0 -1
  422. data/docs/assets/javascripts/lunr/lunr.es.js +0 -1
  423. data/docs/assets/javascripts/lunr/lunr.fi.js +0 -1
  424. data/docs/assets/javascripts/lunr/lunr.fr.js +0 -1
  425. data/docs/assets/javascripts/lunr/lunr.hu.js +0 -1
  426. data/docs/assets/javascripts/lunr/lunr.it.js +0 -1
  427. data/docs/assets/javascripts/lunr/lunr.jp.js +0 -1
  428. data/docs/assets/javascripts/lunr/lunr.multi.js +0 -1
  429. data/docs/assets/javascripts/lunr/lunr.no.js +0 -1
  430. data/docs/assets/javascripts/lunr/lunr.pt.js +0 -1
  431. data/docs/assets/javascripts/lunr/lunr.ro.js +0 -1
  432. data/docs/assets/javascripts/lunr/lunr.ru.js +0 -1
  433. data/docs/assets/javascripts/lunr/lunr.stemmer.support.js +0 -1
  434. data/docs/assets/javascripts/lunr/lunr.sv.js +0 -1
  435. data/docs/assets/javascripts/lunr/lunr.tr.js +0 -1
  436. data/docs/assets/javascripts/lunr/tinyseg.js +0 -1
  437. data/docs/assets/javascripts/modernizr.1aa3b519.js +0 -1
  438. data/docs/assets/stylesheets/application-palette.22915126.css +0 -1176
  439. data/docs/assets/stylesheets/application.451f80e5.css +0 -2552
  440. data/docs/imported/quick_reference/index.html +0 -1120
  441. data/docs/search/search_index.json +0 -1
  442. data/docs/sitemap.xml.gz +0 -0
  443. data/docs-src/mkdocs.yml +0 -79
  444. data/skeletons/project/lib/.keep +0 -0
@@ -1,813 +1,1176 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" class="js csstransforms3d">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="generator" content="Hugo 0.88.1" />
7
+ <meta name="description" content="">
1
8
 
2
9
 
10
+ <link rel="icon" href="/rbcli/images/favicon.png" type="image/png">
3
11
 
12
+ <title>Distributed State and Locking :: RBCli Documentation</title>
4
13
 
5
- <!DOCTYPE html>
6
- <html lang="en" class="no-js">
7
- <head>
8
-
9
- <meta charset="utf-8">
10
- <meta name="viewport" content="width=device-width,initial-scale=1">
11
- <meta http-equiv="x-ua-compatible" content="ie=edge">
12
-
13
- <meta name="description" content="Description">
14
-
15
-
16
-
17
- <meta name="author" content="Andrew Khoury">
18
-
19
-
20
- <meta name="lang:clipboard.copy" content="Copy to clipboard">
21
-
22
- <meta name="lang:clipboard.copied" content="Copied to clipboard">
23
-
24
- <meta name="lang:search.language" content="en">
25
-
26
- <meta name="lang:search.pipeline.stopwords" content="True">
27
-
28
- <meta name="lang:search.pipeline.trimmer" content="True">
29
-
30
- <meta name="lang:search.result.none" content="No matching documents">
31
-
32
- <meta name="lang:search.result.one" content="1 matching document">
33
-
34
- <meta name="lang:search.result.other" content="# matching documents">
35
-
36
- <meta name="lang:search.tokenizer" content="[\s\-]+">
37
-
38
- <link rel="shortcut icon" href="../../assets/images/favicon.png">
39
- <meta name="generator" content="mkdocs-1.0.3, mkdocs-material-3.0.4">
40
-
41
-
42
-
43
- <title>Distributed State Locking - RBCli Documentation</title>
44
-
45
14
 
15
+ <link href="/rbcli/css/nucleus.css?1634703589" rel="stylesheet">
16
+ <link href="/rbcli/css/fontawesome-all.min.css?1634703589" rel="stylesheet">
17
+ <link href="/rbcli/css/hybrid.css?1634703589" rel="stylesheet">
18
+ <link href="/rbcli/css/featherlight.min.css?1634703589" rel="stylesheet">
19
+ <link href="/rbcli/css/perfect-scrollbar.min.css?1634703589" rel="stylesheet">
20
+ <link href="/rbcli/css/auto-complete.css?1634703589" rel="stylesheet">
21
+ <link href="/rbcli/css/atom-one-dark-reasonable.css?1634703589" rel="stylesheet">
22
+ <link href="/rbcli/css/theme.css?1634703589" rel="stylesheet">
23
+ <link href="/rbcli/css/hugo-theme.css?1634703589" rel="stylesheet">
46
24
 
47
- <link rel="stylesheet" href="../../assets/stylesheets/application.451f80e5.css">
48
-
49
-
50
-
51
-
52
- <script src="../../assets/javascripts/modernizr.1aa3b519.js"></script>
25
+ <link href="/rbcli/css/theme-blue.css?1634703589" rel="stylesheet">
53
26
 
54
27
 
28
+
29
+ <script src="/rbcli/js/jquery-3.3.1.min.js?1634703589"></script>
30
+
31
+ <style>
32
+ :root #header + #content > #left > #rlblock_left{
33
+ display:none !important;
34
+ }
55
35
 
56
- <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
57
- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
58
- <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
59
-
60
-
61
- <link rel="stylesheet" href="../../assets/fonts/material-icons.css">
62
-
36
+ </style>
63
37
 
64
38
  </head>
65
-
66
- <body dir="ltr">
67
-
68
- <svg class="md-svg">
69
- <defs>
70
-
71
-
72
- <svg xmlns="http://www.w3.org/2000/svg" width="416" height="448"
73
- viewBox="0 0 416 448" id="__github">
74
- <path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19-18.125
75
- 8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19 18.125-8.5
76
- 18.125 8.5 10.75 19 3.125 20.5zM320 304q0 10-3.125 20.5t-10.75
77
- 19-18.125 8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19
78
- 18.125-8.5 18.125 8.5 10.75 19 3.125 20.5zM360
79
- 304q0-30-17.25-51t-46.75-21q-10.25 0-48.75 5.25-17.75 2.75-39.25
80
- 2.75t-39.25-2.75q-38-5.25-48.75-5.25-29.5 0-46.75 21t-17.25 51q0 22 8
81
- 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0
82
- 37.25-1.75t35-7.375 30.5-15 20.25-25.75 8-38.375zM416 260q0 51.75-15.25
83
- 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5-41.75
84
- 1.125q-19.5 0-35.5-0.75t-36.875-3.125-38.125-7.5-34.25-12.875-30.25-20.25-21.5-28.75q-15.5-30.75-15.5-82.75
85
- 0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25
86
- 30.875q36.75-8.75 77.25-8.75 37 0 70 8 26.25-20.5
87
- 46.75-30.25t47.25-9.75q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34
88
- 99.5z" />
89
- </svg>
90
-
91
- </defs>
92
- </svg>
93
- <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
94
- <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
95
- <label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
96
-
97
- <a href="../../#distributed-locking-and-state-sharing" tabindex="1" class="md-skip">
98
- Skip to content
99
- </a>
100
-
101
-
102
- <header class="md-header" data-md-component="header">
103
- <nav class="md-header-nav md-grid">
104
- <div class="md-flex">
105
- <div class="md-flex__cell md-flex__cell--shrink">
106
- <a href="../.." title="RBCli Documentation" class="md-header-nav__button md-logo">
107
-
108
- <i class="md-icon">devices</i>
109
-
110
- </a>
111
- </div>
112
- <div class="md-flex__cell md-flex__cell--shrink">
113
- <label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
114
- </div>
115
- <div class="md-flex__cell md-flex__cell--stretch">
116
- <div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
117
-
118
-
119
- <span class="md-header-nav__topic">
120
- RBCli Documentation
121
- </span>
122
- <span class="md-header-nav__topic">
123
- Distributed State Locking
124
- </span>
125
-
126
-
127
- </div>
128
- </div>
129
- <div class="md-flex__cell md-flex__cell--shrink">
130
-
131
-
132
- <label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
133
-
134
- <div class="md-search" data-md-component="search" role="dialog">
135
- <label class="md-search__overlay" for="__search"></label>
136
- <div class="md-search__inner" role="search">
137
- <form class="md-search__form" name="search">
138
- <input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
139
- <label class="md-icon md-search__icon" for="__search"></label>
140
- <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
141
- &#xE5CD;
142
- </button>
143
- </form>
144
- <div class="md-search__output">
145
- <div class="md-search__scrollwrap" data-md-scrollfix>
146
- <div class="md-search-result" data-md-component="result">
147
- <div class="md-search-result__meta">
148
- Type to start searching
149
- </div>
150
- <ol class="md-search-result__list"></ol>
151
- </div>
152
- </div>
153
- </div>
154
- </div>
155
- </div>
156
-
157
-
158
- </div>
159
-
160
- <div class="md-flex__cell md-flex__cell--shrink">
161
- <div class="md-header-nav__source">
162
-
39
+ <body class="" data-url="/rbcli/advanced/distributed_state_locking/">
40
+ <nav id="sidebar" class="">
163
41
 
164
42
 
165
-
166
43
 
44
+ <div id="header-wrapper">
45
+ <div id="header">
46
+ <a id="logo" href="https://akhoury6.github.io/rbcli/" style="font-size: 40px">
47
+ <span class="fas fa-terminal"></span>&nbsp;𝚁𝙱𝙲𝚕𝚒
48
+ </a>
167
49
 
168
- <a href="https://github.com/akhoury6/rbcli/" title="Go to repository" class="md-source" data-md-source="github">
50
+ </div>
169
51
 
170
- <div class="md-source__icon">
171
- <svg viewBox="0 0 24 24" width="24" height="24">
172
- <use xlink:href="#__github" width="24" height="24"></use>
173
- </svg>
174
- </div>
52
+ <div class="searchbox">
53
+ <label for="search-by"><i class="fas fa-search"></i></label>
54
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
55
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
56
+ </div>
57
+
58
+ <script type="text/javascript" src="/rbcli/js/lunr.min.js?1634703589"></script>
59
+ <script type="text/javascript" src="/rbcli/js/auto-complete.js?1634703589"></script>
60
+ <script type="text/javascript">
175
61
 
176
- <div class="md-source__repository">
177
- GitHub
178
- </div>
179
- </a>
62
+ var baseurl = "https:\/\/akhoury6.github.io\/rbcli\/";
63
+
64
+ </script>
65
+ <script type="text/javascript" src="/rbcli/js/search.js?1634703589"></script>
180
66
 
181
- </div>
182
- </div>
183
-
184
- </div>
185
- </nav>
186
- </header>
187
67
 
188
- <div class="md-container">
189
-
190
-
191
-
192
-
193
-
68
+ </div>
194
69
 
195
-
70
+ <div class="highlightable">
71
+ <ul class="topics">
196
72
 
197
- <nav class="md-tabs md-tabs--active" data-md-component="tabs">
198
- <div class="md-tabs__inner md-grid">
199
- <ul class="md-tabs__list">
200
-
201
73
 
202
- <li class="md-tabs__item">
203
-
204
- <a href="../.." title="Home" class="md-tabs__link">
205
- Home
206
- </a>
207
-
208
- </li>
74
+
75
+
209
76
 
210
-
211
-
212
-
213
-
214
-
215
-
216
- <li class="md-tabs__item">
217
-
218
- <a href="../../tutorial/10-getting_started/" title="Tutorial" class="md-tabs__link">
219
- Tutorial
220
- </a>
221
-
222
- </li>
223
-
224
77
 
225
-
226
-
227
-
228
-
229
- <li class="md-tabs__item">
230
-
231
- <a href="../command_types/" title="Advanced Features" class="md-tabs__link md-tabs__link--active">
232
- Advanced Features
233
- </a>
234
-
235
- </li>
236
-
237
78
 
238
-
239
-
240
-
241
-
242
- <li class="md-tabs__item">
243
-
244
- <a href="../../development/contributing/" title="Development" class="md-tabs__link">
245
- Development
246
- </a>
247
-
248
- </li>
249
-
250
79
 
251
-
80
+
81
+
82
+
83
+ <li data-nav-id="/rbcli/quick_reference/" title="Quick Reference" class="dd-item
252
84
 
253
-
254
- </ul>
255
- </div>
256
- </nav>
257
-
258
- <main class="md-main">
259
- <div class="md-main__inner md-grid" data-md-component="container">
85
+
86
+
87
+ ">
88
+ <a href="/rbcli/quick_reference/">
89
+ Quick Reference
260
90
 
261
-
262
- <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
263
- <div class="md-sidebar__scrollwrap">
264
- <div class="md-sidebar__inner">
265
- <nav class="md-nav md-nav--primary" data-md-level="0">
266
- <label class="md-nav__title md-nav__title--site" for="__drawer">
267
- <a href="../.." title="RBCli Documentation" class="md-nav__button md-logo">
268
-
269
- <i class="md-icon">devices</i>
91
+ </a>
270
92
 
271
- </a>
272
- RBCli Documentation
273
- </label>
93
+
94
+ </li>
274
95
 
275
- <div class="md-nav__source">
276
-
96
+
277
97
 
98
+
99
+
278
100
 
279
-
280
101
 
281
102
 
282
- <a href="https://github.com/akhoury6/rbcli/" title="Go to repository" class="md-source" data-md-source="github">
283
-
284
- <div class="md-source__icon">
285
- <svg viewBox="0 0 24 24" width="24" height="24">
286
- <use xlink:href="#__github" width="24" height="24"></use>
287
- </svg>
288
- </div>
289
-
290
- <div class="md-source__repository">
291
- GitHub
292
- </div>
293
- </a>
294
103
 
295
- </div>
104
+
296
105
 
297
- <ul class="md-nav__list" data-md-scrollfix>
298
106
 
107
+ <li data-nav-id="/rbcli/tutorial/" title="Tutorial" class="dd-item
108
+
109
+
110
+
111
+ ">
112
+ <a href="/rbcli/tutorial/">
113
+ Tutorial
114
+
115
+ </a>
299
116
 
300
117
 
301
-
118
+ <ul>
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
302
128
 
303
129
 
304
- <li class="md-nav__item">
305
- <a href="../.." title="Home" class="md-nav__link">
306
- Home
307
- </a>
308
- </li>
309
130
 
131
+
132
+
310
133
 
311
-
312
-
313
-
134
+ <li data-nav-id="/rbcli/tutorial/10-getting_started/" title="Getting Started" class="dd-item ">
135
+ <a href="/rbcli/tutorial/10-getting_started/">
136
+ <b>1. </b>Getting Started
137
+
138
+ </a>
139
+ </li>
140
+
141
+
142
+
314
143
 
144
+
145
+
146
+
147
+
315
148
 
316
- <li class="md-nav__item">
317
- <a href="../../imported/quick_reference/" title="Quick Reference" class="md-nav__link">
318
- Quick Reference
319
- </a>
320
- </li>
321
149
 
322
-
323
-
324
-
325
-
326
150
 
327
151
 
328
- <li class="md-nav__item md-nav__item--nested">
329
-
330
- <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
152
+
153
+
331
154
 
332
- <label class="md-nav__link" for="nav-3">
333
- Tutorial
334
- </label>
335
- <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
336
- <label class="md-nav__title" for="nav-3">
337
- Tutorial
338
- </label>
339
- <ul class="md-nav__list" data-md-scrollfix>
155
+ <li data-nav-id="/rbcli/tutorial/20-project_layout/" title="The Project Layout" class="dd-item ">
156
+ <a href="/rbcli/tutorial/20-project_layout/">
157
+ <b>2. </b>The Project Layout
340
158
 
341
-
342
-
343
-
344
-
345
-
346
-
347
- <li class="md-nav__item">
348
- <a href="../../tutorial/10-getting_started/" title="Getting Started" class="md-nav__link">
349
- Getting Started
350
- </a>
351
- </li>
159
+ </a>
160
+ </li>
161
+
162
+
163
+
352
164
 
353
-
354
-
355
-
165
+
356
166
 
167
+
168
+
169
+
357
170
 
358
171
 
359
- <li class="md-nav__item">
360
- <a href="../../tutorial/20-project_layout/" title="The Project Layout" class="md-nav__link">
361
- The Project Layout
362
- </a>
363
- </li>
364
172
 
173
+
174
+
175
+
176
+ <li data-nav-id="/rbcli/tutorial/30-your_first_command/" title="Your First Command" class="dd-item ">
177
+ <a href="/rbcli/tutorial/30-your_first_command/">
178
+ <b>3. </b>Your First Command
365
179
 
180
+ </a>
181
+ </li>
182
+
183
+
184
+
185
+
186
+
366
187
 
367
-
368
-
188
+
189
+
190
+
369
191
 
370
192
 
371
- <li class="md-nav__item">
372
- <a href="../../tutorial/30-your_first_command/" title="Your First Command" class="md-nav__link">
373
- Your First Command
374
- </a>
375
- </li>
376
193
 
194
+
195
+
196
+
197
+ <li data-nav-id="/rbcli/tutorial/40-options_parameters_and_arguments/" title="Options, Parameters, and Arguments" class="dd-item ">
198
+ <a href="/rbcli/tutorial/40-options_parameters_and_arguments/">
199
+ <b>4. </b>Options, Parameters, and Arguments
377
200
 
201
+ </a>
202
+ </li>
203
+
204
+
205
+
206
+
207
+
378
208
 
379
-
380
-
209
+
210
+
211
+
381
212
 
382
213
 
383
- <li class="md-nav__item">
384
- <a href="../../tutorial/40-options_parameters_and_arguments/" title="Options, Parameters, and Arguments" class="md-nav__link">
385
- Options, Parameters, and Arguments
386
- </a>
387
- </li>
388
214
 
215
+
216
+
217
+
218
+ <li data-nav-id="/rbcli/tutorial/50-publishing/" title="Publishing Your Application" class="dd-item ">
219
+ <a href="/rbcli/tutorial/50-publishing/">
220
+ <b>5. </b>Publishing Your Application
389
221
 
222
+ </a>
223
+ </li>
224
+
225
+
226
+
227
+
228
+
390
229
 
230
+
231
+ </ul>
232
+
233
+ </li>
234
+
235
+
236
+
391
237
 
392
238
 
393
239
 
394
240
 
395
- <li class="md-nav__item">
396
- <a href="../../tutorial/50-publishing/" title="Publishing and Distribution" class="md-nav__link">
397
- Publishing and Distribution
398
- </a>
399
- </li>
400
-
401
-
402
- </ul>
403
- </nav>
404
- </li>
405
241
 
406
-
407
-
408
-
409
-
410
242
 
243
+
411
244
 
412
-
413
-
414
- <li class="md-nav__item md-nav__item--active md-nav__item--nested">
415
245
 
416
- <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4" checked>
417
-
418
- <label class="md-nav__link" for="nav-4">
419
- Advanced Features
420
- </label>
421
- <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
422
- <label class="md-nav__title" for="nav-4">
423
- Advanced Features
424
- </label>
425
- <ul class="md-nav__list" data-md-scrollfix>
246
+ <li data-nav-id="/rbcli/advanced/" title="Advanced" class="dd-item
247
+ parent
426
248
 
427
249
 
250
+ ">
251
+ <a href="/rbcli/advanced/">
252
+ Advanced
428
253
 
254
+ </a>
255
+
256
+
257
+ <ul>
429
258
 
430
259
 
431
-
432
-
433
- <li class="md-nav__item">
434
- <a href="../command_types/" title="Command Types" class="md-nav__link">
435
- Command Types
436
- </a>
437
- </li>
438
-
439
-
440
260
 
441
261
 
262
+
442
263
 
264
+
265
+
266
+
443
267
 
444
268
 
445
- <li class="md-nav__item">
446
- <a href="../user_config_files/" title="User Config Files" class="md-nav__link">
447
- User Config Files
448
- </a>
449
- </li>
450
269
 
270
+
271
+
272
+
273
+ <li data-nav-id="/rbcli/advanced/automatic_updates/" title="Automatic Updates" class="dd-item ">
274
+ <a href="/rbcli/advanced/automatic_updates/">
275
+ Automatic Updates
451
276
 
277
+ </a>
278
+ </li>
279
+
280
+
281
+
282
+
283
+
452
284
 
453
-
454
-
285
+
286
+
287
+
455
288
 
456
289
 
457
- <li class="md-nav__item">
458
- <a href="../hooks/" title="Hooks" class="md-nav__link">
459
- Hooks
460
- </a>
461
- </li>
462
290
 
291
+
292
+
293
+
294
+ <li data-nav-id="/rbcli/advanced/command_types/" title="Command Types" class="dd-item ">
295
+ <a href="/rbcli/advanced/command_types/">
296
+ Command Types
463
297
 
298
+ </a>
299
+ </li>
300
+
301
+
302
+
303
+
304
+
464
305
 
465
-
466
-
306
+
307
+
308
+
467
309
 
468
310
 
469
- <li class="md-nav__item">
470
- <a href="../logging/" title="Logging" class="md-nav__link">
471
- Logging
472
- </a>
473
- </li>
474
311
 
312
+
313
+
314
+
315
+ <li data-nav-id="/rbcli/advanced/distributed_state_locking/" title="Distributed State and Locking" class="dd-item active">
316
+ <a href="/rbcli/advanced/distributed_state_locking/">
317
+ Distributed State and Locking
475
318
 
319
+ </a>
320
+ </li>
321
+
322
+
323
+
324
+
325
+
476
326
 
477
-
478
-
327
+
328
+
329
+
479
330
 
480
331
 
481
- <li class="md-nav__item">
482
- <a href="../automatic_updates/" title="Automatic Updates" class="md-nav__link">
483
- Automatic Updates
484
- </a>
485
- </li>
486
332
 
333
+
334
+
335
+
336
+ <li data-nav-id="/rbcli/advanced/hooks/" title="Execution Hooks" class="dd-item ">
337
+ <a href="/rbcli/advanced/hooks/">
338
+ Execution Hooks
487
339
 
340
+ </a>
341
+ </li>
342
+
343
+
344
+
345
+
346
+
488
347
 
489
-
490
-
348
+
349
+
350
+
491
351
 
492
352
 
493
- <li class="md-nav__item">
494
- <a href="../state_storage/" title="State Storage" class="md-nav__link">
495
- State Storage
496
- </a>
497
- </li>
498
353
 
354
+
355
+
356
+
357
+ <li data-nav-id="/rbcli/advanced/interactive_commands/" title="Interactive Commands" class="dd-item ">
358
+ <a href="/rbcli/advanced/interactive_commands/">
359
+ Interactive Commands
499
360
 
361
+ </a>
362
+ </li>
363
+
364
+
365
+
366
+
367
+
500
368
 
501
-
502
-
369
+
370
+
503
371
 
504
-
505
372
 
506
373
 
507
- <li class="md-nav__item md-nav__item--active">
508
-
509
- <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
510
-
511
-
512
-
513
-
514
- <label class="md-nav__link md-nav__link--active" for="__toc">
515
- Distributed State Locking
516
- </label>
517
-
518
- <a href="./" title="Distributed State Locking" class="md-nav__link md-nav__link--active">
519
- Distributed State Locking
520
- </a>
521
-
522
-
523
- <nav class="md-nav md-nav--secondary">
524
-
374
+
375
+
525
376
 
526
377
 
378
+ <li data-nav-id="/rbcli/advanced/logging/" title="Logging" class="dd-item ">
379
+ <a href="/rbcli/advanced/logging/">
380
+ Logging
381
+
382
+ </a>
383
+ </li>
384
+
527
385
 
528
-
529
- <label class="md-nav__title" for="__toc">Table of contents</label>
530
- <ul class="md-nav__list" data-md-scrollfix>
531
-
532
- <li class="md-nav__item">
533
- <a href="#manual-locking" title="Manual Locking" class="md-nav__link">
534
- Manual Locking
535
- </a>
536
-
537
- </li>
538
-
539
-
540
-
541
-
542
-
543
- </ul>
544
-
545
- </nav>
546
-
547
- </li>
386
+
548
387
 
549
-
550
-
551
-
388
+
552
389
 
390
+
391
+
392
+
553
393
 
554
394
 
555
- <li class="md-nav__item">
556
- <a href="../remote_execution/" title="Remote Execution" class="md-nav__link">
557
- Remote Execution
558
- </a>
559
- </li>
560
395
 
396
+
397
+
398
+
399
+ <li data-nav-id="/rbcli/advanced/remote_execution/" title="Remote Execution" class="dd-item ">
400
+ <a href="/rbcli/advanced/remote_execution/">
401
+ Remote Execution
561
402
 
403
+ </a>
404
+ </li>
405
+
406
+
407
+
408
+
409
+
562
410
 
563
-
564
-
411
+
412
+
565
413
 
566
414
 
567
- <li class="md-nav__item">
568
- <a href="../interactive_commands/" title="Interactive Commands" class="md-nav__link">
569
- Interactive Commands
570
- </a>
571
- </li>
572
415
 
573
-
574
- </ul>
575
- </nav>
576
- </li>
577
416
 
417
+
418
+
578
419
 
579
-
580
-
581
-
420
+ <li data-nav-id="/rbcli/advanced/state_storage/" title="State Storage" class="dd-item ">
421
+ <a href="/rbcli/advanced/state_storage/">
422
+ State Storage
423
+
424
+ </a>
425
+ </li>
426
+
427
+
428
+
429
+
430
+
431
+
432
+
433
+
582
434
 
583
435
 
584
- <li class="md-nav__item md-nav__item--nested">
585
-
586
- <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
436
+
437
+
438
+
439
+
587
440
 
588
- <label class="md-nav__link" for="nav-5">
589
- Development
590
- </label>
591
- <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
592
- <label class="md-nav__title" for="nav-5">
593
- Development
594
- </label>
595
- <ul class="md-nav__list" data-md-scrollfix>
596
-
441
+ <li data-nav-id="/rbcli/advanced/user_config_files/" title="User Configuration Files" class="dd-item ">
442
+ <a href="/rbcli/advanced/user_config_files/">
443
+ User Configuration Files
597
444
 
445
+ </a>
446
+ </li>
447
+
448
+
449
+
450
+
451
+
598
452
 
453
+
454
+ </ul>
455
+
456
+ </li>
457
+
458
+
459
+
599
460
 
600
461
 
601
462
 
602
463
 
603
- <li class="md-nav__item">
604
- <a href="../../development/contributing/" title="Contribution Guide" class="md-nav__link">
605
- Contribution Guide
606
- </a>
607
- </li>
608
464
 
465
+
466
+
467
+
468
+
469
+ <li data-nav-id="/rbcli/development/" title="Development" class="dd-item
470
+
609
471
 
472
+
473
+ ">
474
+ <a href="/rbcli/development/">
475
+ Development
610
476
 
477
+ </a>
478
+
479
+
480
+ <ul>
611
481
 
612
482
 
613
-
614
-
615
- <li class="md-nav__item">
616
- <a href="../../development/license/" title="License Info" class="md-nav__link">
617
- License Info
618
- </a>
619
- </li>
620
-
621
-
622
483
 
623
484
 
485
+
624
486
 
487
+
488
+
625
489
 
626
490
 
627
- <li class="md-nav__item">
628
- <a href="../../development/code_of_conduct/" title="Code of Conduct" class="md-nav__link">
629
- Code of Conduct
630
- </a>
631
- </li>
632
491
 
492
+
493
+
494
+
495
+
496
+ <li data-nav-id="/rbcli/development/contributing/" title="Contribution Guide" class="dd-item ">
497
+ <a href="/rbcli/development/contributing/">
498
+ Contribution Guide
633
499
 
500
+ </a>
501
+ </li>
502
+
503
+
504
+
505
+
506
+
634
507
 
635
-
636
-
508
+
509
+
637
510
 
638
511
 
639
- <li class="md-nav__item">
640
- <a href="../../imported/changelog/" title="Changelog" class="md-nav__link">
641
- Changelog
642
- </a>
643
- </li>
644
512
 
645
-
646
- </ul>
647
- </nav>
648
- </li>
649
513
 
514
+
515
+
650
516
 
651
-
652
-
653
-
517
+ <li data-nav-id="/rbcli/development/license/" title="License Info" class="dd-item ">
518
+ <a href="/rbcli/development/license/">
519
+ License Info
520
+
521
+ </a>
522
+ </li>
523
+
524
+
525
+
526
+
527
+
528
+
529
+
530
+
654
531
 
655
532
 
656
- <li class="md-nav__item">
657
- <a href="../../whoami/" title="whoami" class="md-nav__link">
658
- whoami
659
- </a>
660
- </li>
661
533
 
534
+
535
+
536
+
662
537
 
663
- </ul>
664
- </nav>
665
- </div>
666
- </div>
667
- </div>
538
+ <li data-nav-id="/rbcli/development/code_of_conduct/" title="Code of Conduct" class="dd-item ">
539
+ <a href="/rbcli/development/code_of_conduct/">
540
+ Code of Conduct
541
+
542
+ </a>
543
+ </li>
544
+
545
+
546
+
547
+
548
+
549
+
668
550
 
669
551
 
670
- <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
671
- <div class="md-sidebar__scrollwrap">
672
- <div class="md-sidebar__inner">
673
-
674
- <nav class="md-nav md-nav--secondary">
675
-
552
+
553
+
554
+
555
+
556
+
676
557
 
677
558
 
559
+ <li data-nav-id="/rbcli/development/changelog/" title="Changelog" class="dd-item ">
560
+ <a href="/rbcli/development/changelog/">
561
+ Changelog
562
+
563
+ </a>
564
+ </li>
565
+
678
566
 
679
-
680
- <label class="md-nav__title" for="__toc">Table of contents</label>
681
- <ul class="md-nav__list" data-md-scrollfix>
682
-
683
- <li class="md-nav__item">
684
- <a href="#manual-locking" title="Manual Locking" class="md-nav__link">
685
- Manual Locking
686
- </a>
687
-
688
- </li>
689
-
690
-
691
-
692
-
693
-
694
- </ul>
695
-
696
- </nav>
697
- </div>
698
- </div>
699
- </div>
567
+
568
+
700
569
 
701
570
 
702
- <div class="md-content">
703
- <article class="md-content__inner md-typeset">
571
+
572
+ </ul>
704
573
 
705
-
706
-
707
- <h1 id="distributed-locking-and-state-sharing">Distributed Locking and State Sharing</h1>
708
- <p>Distributed Locking allows a <a href="../state_storage/">Remote State</a> to be shared among multiple users of the application to make writes appear atomic between sessions. To use it, simply set the <code>locking:</code> parameter to <code>true</code> when enabling remote state.</p>
709
- <p>This is how locking works:</p>
710
- <ol>
711
- <li>The application attempts to acquire a lock on the remote state when you first access it</li>
712
- <li>If the backend is locked by a different application, wait and try again</li>
713
- <li>If it succeeds, the lock is held and refreshed periodically</li>
714
- <li>When the application exits, the lock is released</li>
715
- <li>If the application does not refresh its lock, or fails to release it when it exits, the lock will automatically expire within 60 seconds</li>
716
- <li>If another application steals the lock (unlikely but possible), and the application tries to save data, a <code>StandardError</code> will be thrown</li>
717
- <li>You can manually attempt to lock/unlock by calling <code>Rbcli.remote_state.lock</code> or <code>Rbcli.remote_state.unlock</code>, respectively. </li>
718
- </ol>
719
- <h2 id="manual-locking">Manual Locking</h2>
720
- <p>Remember: all state in Rbcli is lazy-loaded. Therefore, RBCli wll only attempt to lock the data when you first try to access it. If you need to make sure that the data is locked before executing a block of code, use:</p>
721
- <pre><code class="ruby">Rbcli.remote_state.refresh
722
- </code></pre>
574
+ </li>
575
+
576
+
723
577
 
724
- <p>to force the lock and retrieve the latest data. You can force an unlock by calling:</p>
725
- <pre><code class="ruby">Rbcli.remote_state.disconnect
726
- </code></pre>
578
+
579
+
727
580
 
728
- <p>Even if you do not want to store any data, you can leverage manual locking to control access to a different shared resource, such as a stateful API. For example, if you write a cloud deployment toolkit, you can ensure that only one user is attempting to modify a deployment at any given time.</p>
729
-
730
-
731
-
732
-
733
-
734
-
735
581
 
736
582
 
737
-
738
- </article>
739
- </div>
740
- </div>
741
- </main>
742
-
743
-
744
- <footer class="md-footer">
745
-
746
- <div class="md-footer-nav">
747
- <nav class="md-footer-nav__inner md-grid">
748
-
749
- <a href="../state_storage/" title="State Storage" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
750
- <div class="md-flex__cell md-flex__cell--shrink">
751
- <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
752
- </div>
753
- <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
754
- <span class="md-flex__ellipsis">
755
- <span class="md-footer-nav__direction">
756
- Previous
757
- </span>
758
- State Storage
759
- </span>
760
- </div>
761
- </a>
762
-
763
-
764
- <a href="../remote_execution/" title="Remote Execution" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
765
- <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
766
- <span class="md-flex__ellipsis">
767
- <span class="md-footer-nav__direction">
768
- Next
769
- </span>
770
- Remote Execution
771
- </span>
772
- </div>
773
- <div class="md-flex__cell md-flex__cell--shrink">
774
- <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
775
- </div>
776
- </a>
777
-
778
- </nav>
779
- </div>
583
+
584
+
780
585
 
781
- <div class="md-footer-meta md-typeset">
782
- <div class="md-footer-meta__inner md-grid">
783
- <div class="md-footer-copyright">
586
+
587
+ <li data-nav-id="/rbcli/whoami/" title="My Letter To You" class="dd-item
784
588
 
785
- <div class="md-footer-copyright__highlight">
786
- Copyright © 2018 Andrew Khoury
787
- </div>
788
589
 
789
- powered by
790
- <a href="https://www.mkdocs.org">MkDocs</a>
791
- and
792
- <a href="https://squidfunk.github.io/mkdocs-material/">
793
- Material for MkDocs</a>
794
- </div>
795
-
796
590
 
591
+ ">
592
+ <a href="/rbcli/whoami/">
593
+ My Letter To You
594
+
595
+ </a>
797
596
 
798
- </div>
799
- </div>
800
- </footer>
801
-
802
- </div>
803
-
804
- <script src="../../assets/javascripts/application.583bbe55.js"></script>
805
-
806
- <script>app.initialize({version:"1.0.3",url:{base:"../.."}})</script>
807
-
597
+
598
+ </li>
599
+
600
+
601
+
602
+
603
+
604
+ </ul>
605
+
808
606
 
809
607
 
810
-
608
+ <section id="shortcuts">
609
+ <h3>More</h3>
610
+ <ul>
611
+
612
+ <li>
613
+ <a class="padding" href="https://github.com/akhoury6/rbcli"><i class='fab fa-github'></i> Github repo</a>
614
+ </li>
615
+
616
+ <li>
617
+ <a class="padding" href="https://rubygems.org/gems/rbcli"><i class='far fa-gem'></i> Rubygems</a>
618
+ </li>
619
+
620
+ </ul>
621
+ </section>
622
+
623
+
624
+
625
+ <section id="footer">
626
+ <p>Built with <a href="https://github.com/matcornic/hugo-theme-learn"><i class="fas fa-heart"></i></a> from <a href="https://getgrav.org">Grav</a> and <a href="https://gohugo.io/">Hugo</a></p>
627
+
628
+ </section>
629
+ </div>
630
+ </nav>
631
+
632
+
633
+
634
+
635
+ <section id="body">
636
+ <div id="overlay"></div>
637
+ <div class="padding highlightable">
638
+
639
+ <div>
640
+ <div id="top-bar">
641
+
642
+
643
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
644
+ <span id="sidebar-toggle-span">
645
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
646
+ <i class="fas fa-bars"></i>
647
+ </a>
648
+ </span>
649
+
650
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
651
+
652
+ <span class="links">
653
+
654
+
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+
665
+
666
+ <a href='/rbcli/'></a> > <a href='/rbcli/advanced/'>Advanced</a> > Distributed State and Locking
667
+
668
+
669
+
670
+
671
+
672
+
673
+
674
+ </span>
675
+ </div>
676
+
677
+ <div class="progress">
678
+ <div class="wrapper">
679
+ <nav id="TableOfContents">
680
+ <ul>
681
+ <li><a href="#manual-locking">Manual Locking</a></li>
682
+ </ul>
683
+ </nav>
684
+ </div>
685
+ </div>
686
+
687
+
688
+ </div>
689
+ </div>
690
+
691
+ <div id="head-tags">
692
+
693
+ </div>
694
+
695
+ <div id="body-inner">
696
+
697
+ <h1>
698
+
699
+ Distributed State and Locking
700
+ </h1>
701
+
702
+
703
+
704
+
705
+
706
+ <p>Distributed Locking allows a <a href="/rbcli/advanced/state_storage/">Remote State</a> to be shared among multiple users of the application to make writes appear atomic between sessions. To use it, simply set the <code>locking:</code> parameter to <code>true</code> when enabling remote state.</p>
707
+ <p>This is how locking works:</p>
708
+ <ol>
709
+ <li>The application attempts to acquire a lock on the remote state when you first access it</li>
710
+ <li>If the backend is locked by a different application, wait and try again</li>
711
+ <li>If it succeeds, the lock is held and refreshed periodically</li>
712
+ <li>When the application exits, the lock is released</li>
713
+ <li>If the application does not refresh its lock, or fails to release it when it exits, the lock will automatically expire within 60 seconds</li>
714
+ <li>If another application steals the lock (unlikely but possible), and the application tries to save data, a <code>StandardError</code> will be thrown</li>
715
+ <li>You can manually attempt to lock/unlock by calling <code>Rbcli.remote_state.lock</code> or <code>Rbcli.remote_state.unlock</code>, respectively.</li>
716
+ </ol>
717
+ <h2 id="manual-locking">Manual Locking</h2>
718
+ <p>Remember: all state in Rbcli is lazy-loaded. Therefore, RBCli wll only attempt to lock the data when you first try to access it. If you need to make sure that the data is locked before executing a block of code, use:</p>
719
+ <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"><span style="color:#66d9ef">Rbcli</span><span style="color:#f92672">.</span>remote_state<span style="color:#f92672">.</span>refresh
720
+ </code></pre></div><p>to force the lock and retrieve the latest data. You can force an unlock by calling:</p>
721
+ <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"><span style="color:#66d9ef">Rbcli</span><span style="color:#f92672">.</span>remote_state<span style="color:#f92672">.</span>disconnect
722
+ </code></pre></div><p>Even if you do not want to store any data, you can leverage manual locking to control access to a different shared resource, such as a stateful API. For example, if you write a cloud deployment toolkit, you can ensure that only one user is attempting to modify a deployment at any given time.</p>
723
+
724
+
725
+ <footer class="footline">
726
+
727
+ </footer>
728
+
729
+
730
+ </div>
731
+
732
+
733
+ </div>
734
+
735
+ <div id="navigation">
736
+
737
+
738
+
739
+
740
+
741
+
742
+
743
+
744
+
745
+
746
+
747
+
748
+
749
+
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+
780
+
781
+
782
+
783
+
784
+
785
+
786
+
787
+
788
+
789
+
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+
816
+
817
+
818
+
819
+
820
+
821
+
822
+
823
+
824
+
825
+
826
+
827
+
828
+
829
+
830
+
831
+
832
+
833
+
834
+
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+
866
+
867
+
868
+
869
+
870
+
871
+
872
+
873
+
874
+
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+
885
+
886
+
887
+
888
+
889
+
890
+
891
+
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
912
+
913
+
914
+
915
+
916
+
917
+
918
+
919
+
920
+
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+
929
+
930
+
931
+
932
+
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+
958
+
959
+
960
+
961
+
962
+
963
+
964
+
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+
974
+
975
+
976
+
977
+
978
+
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+
1075
+
1076
+
1077
+
1078
+
1079
+
1080
+
1081
+
1082
+
1083
+
1084
+
1085
+
1086
+
1087
+
1088
+
1089
+
1090
+
1091
+
1092
+
1093
+
1094
+
1095
+
1096
+
1097
+
1098
+
1099
+
1100
+
1101
+
1102
+
1103
+
1104
+
1105
+
1106
+
1107
+
1108
+
1109
+
1110
+
1111
+
1112
+
1113
+
1114
+
1115
+
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+
1122
+
1123
+
1124
+
1125
+
1126
+
1127
+
1128
+
1129
+
1130
+
1131
+
1132
+
1133
+
1134
+
1135
+
1136
+
1137
+
1138
+
1139
+
1140
+
1141
+
1142
+
1143
+ <a class="nav nav-prev" href="/rbcli/advanced/command_types/" title="Command Types"> <i class="fa fa-chevron-left"></i></a>
1144
+
1145
+
1146
+ <a class="nav nav-next" href="/rbcli/advanced/hooks/" title="Execution Hooks" style="margin-right: 0px;"><i class="fa fa-chevron-right"></i></a>
1147
+
1148
+
1149
+ </div>
1150
+
1151
+ </section>
811
1152
 
1153
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
1154
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
1155
+ </div>
1156
+ <script src="/rbcli/js/clipboard.min.js?1634703589"></script>
1157
+ <script src="/rbcli/js/perfect-scrollbar.min.js?1634703589"></script>
1158
+ <script src="/rbcli/js/perfect-scrollbar.jquery.min.js?1634703589"></script>
1159
+ <script src="/rbcli/js/jquery.sticky.js?1634703589"></script>
1160
+ <script src="/rbcli/js/featherlight.min.js?1634703589"></script>
1161
+ <script src="/rbcli/js/highlight.pack.js?1634703589"></script>
1162
+ <script>hljs.initHighlightingOnLoad();</script>
1163
+ <script src="/rbcli/js/modernizr.custom-3.6.0.js?1634703589"></script>
1164
+ <script src="/rbcli/js/learn.js?1634703589"></script>
1165
+ <script src="/rbcli/js/hugo-learn.js?1634703589"></script>
1166
+
1167
+ <link href="/rbcli/mermaid/mermaid.css?1634703589" rel="stylesheet" />
1168
+ <script src="/rbcli/mermaid/mermaid.js?1634703589"></script>
1169
+ <script>
1170
+ mermaid.initialize({ startOnLoad: true });
1171
+ </script>
1172
+
1173
+
812
1174
  </body>
813
- </html>
1175
+ </html>
1176
+