rbcli 0.2.8 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (443) hide show
  1. checksums.yaml +4 -4
  2. data/.rakeTasks +7 -0
  3. data/.rbenv-gemsets +1 -0
  4. data/CHANGELOG.md +37 -0
  5. data/Gemfile.lock +46 -46
  6. data/README.md +2 -2
  7. data/docs-src/archetypes/default.md +6 -0
  8. data/docs-src/config.toml +37 -0
  9. data/docs-src/{docs/index.md → content/_index.md} +4 -4
  10. data/docs-src/content/advanced/_index.md +11 -0
  11. data/docs-src/{docs → content}/advanced/automatic_updates.md +6 -2
  12. data/docs-src/{docs → content}/advanced/command_types.md +8 -4
  13. data/docs-src/{docs → content}/advanced/distributed_state_locking.md +6 -2
  14. data/docs-src/{docs → content}/advanced/hooks.md +6 -2
  15. data/docs-src/{docs → content}/advanced/interactive_commands.md +5 -1
  16. data/docs-src/{docs → content}/advanced/logging.md +6 -2
  17. data/docs-src/{docs → content}/advanced/remote_execution.md +5 -1
  18. data/docs-src/{docs → content}/advanced/state_storage.md +6 -3
  19. data/docs-src/{docs → content}/advanced/user_config_files.md +5 -1
  20. data/docs-src/content/development/_index.md +11 -0
  21. data/docs-src/{docs/imported → content/development}/changelog.md +73 -6
  22. data/docs-src/{docs → content}/development/code_of_conduct.md +8 -1
  23. data/docs-src/{docs → content}/development/contributing.md +16 -1
  24. data/docs-src/{docs → content}/development/license.md +9 -2
  25. data/docs-src/{docs/imported/quick_reference.md → content/quick_reference/_index.md} +8 -1
  26. data/docs-src/{docs → content}/tutorial/10-getting_started.md +7 -1
  27. data/docs-src/{docs → content}/tutorial/20-project_layout.md +10 -2
  28. data/docs-src/{docs → content}/tutorial/30-your_first_command.md +10 -4
  29. data/docs-src/{docs → content}/tutorial/40-options_parameters_and_arguments.md +9 -3
  30. data/docs-src/{docs → content}/tutorial/50-publishing.md +9 -3
  31. data/docs-src/content/tutorial/_index.md +11 -0
  32. data/docs-src/{docs/whoami.md → content/whoami/_index.md} +11 -5
  33. data/docs-src/layouts/partials/logo.html +3 -0
  34. data/docs-src/makesite.sh +33 -7
  35. data/docs-src/mkdocs-archived.tar.gz +0 -0
  36. data/docs-src/runsite.sh +6 -1
  37. data/docs-src/themes/hugo-theme-learn/.editorconfig +16 -0
  38. data/docs-src/themes/hugo-theme-learn/.gitignore +3 -0
  39. data/docs-src/themes/hugo-theme-learn/.grenrc.yml +25 -0
  40. data/docs-src/themes/hugo-theme-learn/CHANGELOG.md +226 -0
  41. data/docs-src/themes/hugo-theme-learn/LICENSE.md +22 -0
  42. data/docs-src/themes/hugo-theme-learn/README.md +97 -0
  43. data/docs-src/themes/hugo-theme-learn/archetypes/chapter.md +13 -0
  44. data/docs-src/themes/hugo-theme-learn/archetypes/default.md +7 -0
  45. data/docs-src/themes/hugo-theme-learn/exampleSite/LICENSE.md +20 -0
  46. data/docs-src/themes/hugo-theme-learn/exampleSite/config.toml +102 -0
  47. data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.en.md +41 -0
  48. data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.fr.md +43 -0
  49. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.en.md +12 -0
  50. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.fr.md +12 -0
  51. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.zh.md +12 -0
  52. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.en.md +60 -0
  53. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.fr.md +56 -0
  54. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.en.md +102 -0
  55. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.fr.md +100 -0
  56. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/images/chapter.png +0 -0
  57. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.en.md +11 -0
  58. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.fr.md +11 -0
  59. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/images/magic.gif +0 -0
  60. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.en.md +194 -0
  61. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.fr.md +194 -0
  62. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/blue-variant.png +0 -0
  63. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/green-variant.png +0 -0
  64. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/red-variant.png +0 -0
  65. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.en.md +12 -0
  66. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.fr.md +12 -0
  67. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.en.md +57 -0
  68. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.fr.md +57 -0
  69. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.en.md +78 -0
  70. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.fr.md +78 -0
  71. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/images/i18n-menu.gif +0 -0
  72. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/icons.en.md +41 -0
  73. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.en.md +692 -0
  74. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.fr.md +666 -0
  75. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.en.md +109 -0
  76. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.fr.md +109 -0
  77. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.en.md +166 -0
  78. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.fr.md +146 -0
  79. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/frontmatter-icon.png +0 -0
  80. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-chapter.png +0 -0
  81. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-default.png +0 -0
  82. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/syntaxhighlight.en.md +89 -0
  83. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.en.md +39 -0
  84. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.fr.md +40 -0
  85. data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.en.md +28 -0
  86. data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.fr.md +28 -0
  87. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.en.md +16 -0
  88. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.fr.md +16 -0
  89. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3 +0 -0
  90. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
  91. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf +0 -0
  92. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png +0 -0
  93. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
  94. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.md +85 -0
  95. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3 +0 -0
  96. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
  97. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf +0 -0
  98. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png +0 -0
  99. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
  100. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.md +85 -0
  101. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.en.md +16 -0
  102. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.fr.md +16 -0
  103. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.en.md +45 -0
  104. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.fr.md +45 -0
  105. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.en.md +6 -0
  106. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md +6 -0
  107. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md +6 -0
  108. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md +6 -0
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. 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
  115. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.en.md +11 -0
  116. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md +11 -0
  117. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.en.md +6 -0
  118. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md +6 -0
  119. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.en.md +6 -0
  120. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md +6 -0
  121. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.en.md +7 -0
  122. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md +7 -0
  123. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.en.md +6 -0
  124. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.fr.md +6 -0
  125. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.en.md +45 -0
  126. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.fr.md +45 -0
  127. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.en.md +283 -0
  128. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.fr.md +283 -0
  129. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.en.md +62 -0
  130. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.fr.md +62 -0
  131. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.en.md +23 -0
  132. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.fr.md +23 -0
  133. data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.en.md +13 -0
  134. data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.fr.md +14 -0
  135. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/custom-footer.html +10 -0
  136. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/logo.html +39 -0
  137. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/menu-footer.html +14 -0
  138. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/shortcodes/ghcontributors.html +31 -0
  139. data/docs-src/themes/hugo-theme-learn/exampleSite/static/css/theme-mine.css +104 -0
  140. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.eot +0 -0
  141. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.svg +1 -0
  142. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.ttf +0 -0
  143. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff +0 -0
  144. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff2 +0 -0
  145. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/inteliver_docs.png +0 -0
  146. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tat.png +0 -0
  147. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tshark_dev.png +0 -0
  148. data/docs-src/themes/hugo-theme-learn/i18n/ar.toml +26 -0
  149. data/docs-src/themes/hugo-theme-learn/i18n/de.toml +26 -0
  150. data/docs-src/themes/hugo-theme-learn/i18n/en.toml +26 -0
  151. data/docs-src/themes/hugo-theme-learn/i18n/es.toml +26 -0
  152. data/docs-src/themes/hugo-theme-learn/i18n/fr.toml +26 -0
  153. data/docs-src/themes/hugo-theme-learn/i18n/hi.toml +26 -0
  154. data/docs-src/themes/hugo-theme-learn/i18n/id.toml +26 -0
  155. data/docs-src/themes/hugo-theme-learn/i18n/ja.toml +26 -0
  156. data/docs-src/themes/hugo-theme-learn/i18n/nl.toml +26 -0
  157. data/docs-src/themes/hugo-theme-learn/i18n/pt.toml +26 -0
  158. data/docs-src/themes/hugo-theme-learn/i18n/ru.toml +26 -0
  159. data/docs-src/themes/hugo-theme-learn/i18n/tr.toml +26 -0
  160. data/docs-src/themes/hugo-theme-learn/i18n/zh-cn.toml +26 -0
  161. data/docs-src/themes/hugo-theme-learn/images/screenshot.png +0 -0
  162. data/docs-src/themes/hugo-theme-learn/images/tn.png +0 -0
  163. data/docs-src/themes/hugo-theme-learn/layouts/404.html +56 -0
  164. data/docs-src/themes/hugo-theme-learn/layouts/_default/list.html +22 -0
  165. data/docs-src/themes/hugo-theme-learn/layouts/_default/single.html +12 -0
  166. data/docs-src/themes/hugo-theme-learn/layouts/index.html +31 -0
  167. data/docs-src/themes/hugo-theme-learn/layouts/index.json +12 -0
  168. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-comments.html +3 -0
  169. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-footer.html +5 -0
  170. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-header.html +5 -0
  171. data/docs-src/themes/hugo-theme-learn/layouts/partials/favicon.html +1 -0
  172. data/docs-src/themes/hugo-theme-learn/layouts/partials/footer.html +77 -0
  173. data/docs-src/themes/hugo-theme-learn/layouts/partials/header.html +111 -0
  174. data/docs-src/themes/hugo-theme-learn/layouts/partials/logo.html +19 -0
  175. data/docs-src/themes/hugo-theme-learn/layouts/partials/menu-footer.html +1 -0
  176. data/docs-src/themes/hugo-theme-learn/layouts/partials/menu.html +151 -0
  177. data/docs-src/themes/hugo-theme-learn/layouts/partials/meta.html +2 -0
  178. data/docs-src/themes/hugo-theme-learn/layouts/partials/search.html +16 -0
  179. data/docs-src/themes/hugo-theme-learn/layouts/partials/tags.html +7 -0
  180. data/docs-src/themes/hugo-theme-learn/layouts/partials/toc.html +5 -0
  181. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/attachments.html +36 -0
  182. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/button.html +14 -0
  183. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/children.html +101 -0
  184. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/expand.html +17 -0
  185. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/mermaid.html +2 -0
  186. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/notice.html +2 -0
  187. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/ref.html +14 -0
  188. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/relref.html +14 -0
  189. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/siteparam.html +7 -0
  190. data/docs-src/themes/hugo-theme-learn/netlify.toml +23 -0
  191. data/docs-src/themes/hugo-theme-learn/static/css/atom-one-dark-reasonable.css +77 -0
  192. data/docs-src/themes/hugo-theme-learn/static/css/auto-complete.css +47 -0
  193. data/docs-src/themes/hugo-theme-learn/static/css/featherlight.min.css +8 -0
  194. data/docs-src/themes/hugo-theme-learn/static/css/fontawesome-all.min.css +1 -0
  195. data/docs-src/themes/hugo-theme-learn/static/css/hugo-theme.css +254 -0
  196. data/docs-src/themes/hugo-theme-learn/static/css/hybrid.css +102 -0
  197. data/docs-src/themes/hugo-theme-learn/static/css/nucleus.css +615 -0
  198. data/docs-src/themes/hugo-theme-learn/static/css/perfect-scrollbar.min.css +2 -0
  199. data/docs-src/themes/hugo-theme-learn/static/css/tags.css +49 -0
  200. data/docs-src/themes/hugo-theme-learn/static/css/theme-blue.css +111 -0
  201. data/docs-src/themes/hugo-theme-learn/static/css/theme-green.css +111 -0
  202. data/docs-src/themes/hugo-theme-learn/static/css/theme-red.css +111 -0
  203. data/docs-src/themes/hugo-theme-learn/static/css/theme.css +1136 -0
  204. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.eot +0 -0
  205. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.svg +1 -0
  206. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.ttf +0 -0
  207. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.woff +0 -0
  208. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
  209. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.svg +1 -0
  210. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
  211. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
  212. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
  213. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
  214. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.svg +1 -0
  215. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
  216. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
  217. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
  218. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.eot +0 -0
  219. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.svg +1 -0
  220. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.ttf +0 -0
  221. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff +0 -0
  222. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff2 +0 -0
  223. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.eot +0 -0
  224. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.svg +1 -0
  225. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.ttf +0 -0
  226. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff +0 -0
  227. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff2 +0 -0
  228. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.eot +0 -0
  229. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.svg +1 -0
  230. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.ttf +0 -0
  231. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff +0 -0
  232. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff2 +0 -0
  233. data/docs-src/themes/hugo-theme-learn/static/images/clippy.svg +1 -0
  234. data/docs-src/themes/hugo-theme-learn/static/images/favicon.png +0 -0
  235. data/docs-src/themes/hugo-theme-learn/static/images/gopher-404.jpg +0 -0
  236. data/docs-src/themes/hugo-theme-learn/static/js/auto-complete.js +3 -0
  237. data/docs-src/themes/hugo-theme-learn/static/js/clipboard.min.js +7 -0
  238. data/docs-src/themes/hugo-theme-learn/static/js/featherlight.min.js +9 -0
  239. data/docs-src/themes/hugo-theme-learn/static/js/highlight.pack.js +6 -0
  240. data/docs-src/themes/hugo-theme-learn/static/js/hugo-learn.js +94 -0
  241. data/docs-src/themes/hugo-theme-learn/static/js/jquery-3.3.1.min.js +2 -0
  242. data/docs-src/themes/hugo-theme-learn/static/js/jquery.sticky.js +288 -0
  243. data/docs-src/themes/hugo-theme-learn/static/js/learn.js +459 -0
  244. data/docs-src/themes/hugo-theme-learn/static/js/lunr.min.js +6 -0
  245. data/docs-src/themes/hugo-theme-learn/static/js/modernizr.custom-3.6.0.js +3 -0
  246. data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.jquery.min.js +2 -0
  247. data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.min.js +2 -0
  248. data/docs-src/themes/hugo-theme-learn/static/js/search.js +93 -0
  249. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.css +277 -0
  250. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.dark.css +278 -0
  251. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.forest.css +356 -0
  252. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.js +8 -0
  253. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.eot +0 -0
  254. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.svg +1 -0
  255. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.ttf +0 -0
  256. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff +0 -0
  257. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff2 +0 -0
  258. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.eot +0 -0
  259. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.svg +1 -0
  260. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.ttf +0 -0
  261. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff +0 -0
  262. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff2 +0 -0
  263. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.eot +0 -0
  264. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.svg +1 -0
  265. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.ttf +0 -0
  266. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff +0 -0
  267. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff2 +0 -0
  268. data/docs-src/themes/hugo-theme-learn/theme.toml +21 -0
  269. data/docs-src/themes/hugo-theme-learn/wercker.yml +16 -0
  270. data/docs/404.html +54 -670
  271. data/docs/advanced/automatic_updates/index.html +998 -651
  272. data/docs/advanced/command_types/index.html +1022 -742
  273. data/docs/advanced/distributed_state_locking/index.html +998 -635
  274. data/docs/advanced/hooks/index.html +1011 -691
  275. data/docs/advanced/index.html +1140 -0
  276. data/docs/advanced/index.xml +117 -0
  277. data/docs/advanced/interactive_commands/index.html +1000 -652
  278. data/docs/advanced/logging/index.html +1006 -655
  279. data/docs/advanced/remote_execution/index.html +1010 -666
  280. data/docs/advanced/state_storage/index.html +1009 -721
  281. data/docs/advanced/user_config_files/index.html +981 -626
  282. data/docs/categories/index.html +1146 -0
  283. data/docs/categories/index.xml +14 -0
  284. data/docs/css/atom-one-dark-reasonable.css +77 -0
  285. data/docs/css/auto-complete.css +47 -0
  286. data/docs/css/featherlight.min.css +8 -0
  287. data/docs/css/fontawesome-all.min.css +1 -0
  288. data/docs/css/hugo-theme.css +254 -0
  289. data/docs/css/hybrid.css +102 -0
  290. data/docs/css/nucleus.css +615 -0
  291. data/docs/css/perfect-scrollbar.min.css +2 -0
  292. data/docs/css/tags.css +49 -0
  293. data/docs/css/theme-blue.css +111 -0
  294. data/docs/css/theme-green.css +111 -0
  295. data/docs/css/theme-red.css +111 -0
  296. data/docs/css/theme.css +1136 -0
  297. data/docs/development/changelog/index.html +1376 -0
  298. data/docs/development/code_of_conduct/index.html +974 -671
  299. data/docs/development/contributing/index.html +989 -583
  300. data/docs/development/index.html +1140 -0
  301. data/docs/development/index.xml +54 -0
  302. data/docs/development/license/index.html +973 -559
  303. data/docs/fonts/Inconsolata.eot +0 -0
  304. data/docs/fonts/Inconsolata.svg +1 -0
  305. data/docs/fonts/Inconsolata.ttf +0 -0
  306. data/docs/fonts/Inconsolata.woff +0 -0
  307. data/docs/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
  308. data/docs/fonts/Novecentosanswide-Normal-webfont.svg +1 -0
  309. data/docs/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
  310. data/docs/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
  311. data/docs/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
  312. data/docs/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
  313. data/docs/fonts/Novecentosanswide-UltraLight-webfont.svg +1 -0
  314. data/docs/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
  315. data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
  316. data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
  317. data/docs/fonts/Work_Sans_200.eot +0 -0
  318. data/docs/fonts/Work_Sans_200.svg +1 -0
  319. data/docs/fonts/Work_Sans_200.ttf +0 -0
  320. data/docs/fonts/Work_Sans_200.woff +0 -0
  321. data/docs/fonts/Work_Sans_200.woff2 +0 -0
  322. data/docs/fonts/Work_Sans_300.eot +0 -0
  323. data/docs/fonts/Work_Sans_300.svg +1 -0
  324. data/docs/fonts/Work_Sans_300.ttf +0 -0
  325. data/docs/fonts/Work_Sans_300.woff +0 -0
  326. data/docs/fonts/Work_Sans_300.woff2 +0 -0
  327. data/docs/fonts/Work_Sans_500.eot +0 -0
  328. data/docs/fonts/Work_Sans_500.svg +1 -0
  329. data/docs/fonts/Work_Sans_500.ttf +0 -0
  330. data/docs/fonts/Work_Sans_500.woff +0 -0
  331. data/docs/fonts/Work_Sans_500.woff2 +0 -0
  332. data/docs/images/clippy.svg +1 -0
  333. data/docs/images/favicon.png +0 -0
  334. data/docs/images/gopher-404.jpg +0 -0
  335. data/docs/imported/changelog/index.html +1208 -1020
  336. data/docs/imported/index.html +1191 -0
  337. data/docs/imported/index.xml +23 -0
  338. data/docs/index.html +925 -558
  339. data/docs/index.json +183 -0
  340. data/docs/index.xml +212 -0
  341. data/docs/js/auto-complete.js +3 -0
  342. data/docs/js/clipboard.min.js +7 -0
  343. data/docs/js/featherlight.min.js +9 -0
  344. data/docs/js/highlight.pack.js +6 -0
  345. data/docs/js/html5shiv-printshiv.min.js +4 -0
  346. data/docs/js/hugo-learn.js +94 -0
  347. data/docs/js/jquery-3.3.1.min.js +2 -0
  348. data/docs/js/jquery.sticky.js +288 -0
  349. data/docs/js/learn.js +459 -0
  350. data/docs/js/lunr.min.js +6 -0
  351. data/docs/js/modernizr.custom-3.6.0.js +3 -0
  352. data/docs/js/perfect-scrollbar.jquery.min.js +2 -0
  353. data/docs/js/perfect-scrollbar.min.js +2 -0
  354. data/docs/js/search.js +93 -0
  355. data/docs/mermaid/mermaid.css +277 -0
  356. data/docs/mermaid/mermaid.dark.css +278 -0
  357. data/docs/mermaid/mermaid.forest.css +356 -0
  358. data/docs/mermaid/mermaid.js +8 -0
  359. data/docs/quick_reference/index.html +1246 -0
  360. data/docs/quick_reference/index.xml +15 -0
  361. data/docs/sitemap.xml +133 -107
  362. data/docs/tags/index.html +1146 -0
  363. data/docs/tags/index.xml +14 -0
  364. data/docs/tutorial/10-getting_started/index.html +994 -662
  365. data/docs/tutorial/20-project_layout/index.html +1013 -722
  366. data/docs/tutorial/30-your_first_command/index.html +1055 -734
  367. data/docs/tutorial/40-options_parameters_and_arguments/index.html +1136 -878
  368. data/docs/tutorial/50-publishing/index.html +984 -671
  369. data/docs/tutorial/index.html +1140 -0
  370. data/docs/tutorial/index.xml +71 -0
  371. data/docs/webfonts/fa-brands-400.eot +0 -0
  372. data/docs/webfonts/fa-brands-400.svg +1 -0
  373. data/docs/webfonts/fa-brands-400.ttf +0 -0
  374. data/docs/webfonts/fa-brands-400.woff +0 -0
  375. data/docs/webfonts/fa-brands-400.woff2 +0 -0
  376. data/docs/webfonts/fa-regular-400.eot +0 -0
  377. data/docs/webfonts/fa-regular-400.svg +1 -0
  378. data/docs/webfonts/fa-regular-400.ttf +0 -0
  379. data/docs/webfonts/fa-regular-400.woff +0 -0
  380. data/docs/webfonts/fa-regular-400.woff2 +0 -0
  381. data/docs/webfonts/fa-solid-900.eot +0 -0
  382. data/docs/webfonts/fa-solid-900.svg +1 -0
  383. data/docs/webfonts/fa-solid-900.ttf +0 -0
  384. data/docs/webfonts/fa-solid-900.woff +0 -0
  385. data/docs/webfonts/fa-solid-900.woff2 +0 -0
  386. data/docs/whoami/index.html +965 -555
  387. data/docs/whoami/index.xml +15 -0
  388. data/exe/rbcli +1 -0
  389. data/lib/rbcli-tool/project.rb +6 -2
  390. data/lib/rbcli/configuration/configurate_blocks/me.rb +5 -5
  391. data/lib/rbcli/engine/command.rb +1 -1
  392. data/lib/rbcli/util/deprecation_warning.rb +21 -4
  393. data/lib/rbcli/util/msg.rb +2 -2
  394. data/lib/rbcli/version.rb +1 -1
  395. data/rbcli.gemspec +12 -13
  396. data/skeletons/project/.rakeTasks +7 -0
  397. data/skeletons/project/Gemfile +1 -1
  398. data/skeletons/project/config/general.rb +1 -1
  399. data/skeletons/project/exe/executable +1 -3
  400. data/skeletons/project/lib/lib.erb +9 -0
  401. data/skeletons/project/spec/spec_helper.rb +7 -7
  402. data/skeletons/project/spec/untitled_spec.rb +6 -6
  403. data/skeletons/project/untitled.gemspec +30 -30
  404. metadata +381 -95
  405. data/docs-src/mkdocs.yml +0 -79
  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/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.74.3" />
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?1596148729" rel="stylesheet">
16
+ <link href="/rbcli/css/fontawesome-all.min.css?1596148729" rel="stylesheet">
17
+ <link href="/rbcli/css/hybrid.css?1596148729" rel="stylesheet">
18
+ <link href="/rbcli/css/featherlight.min.css?1596148729" rel="stylesheet">
19
+ <link href="/rbcli/css/perfect-scrollbar.min.css?1596148729" rel="stylesheet">
20
+ <link href="/rbcli/css/auto-complete.css?1596148729" rel="stylesheet">
21
+ <link href="/rbcli/css/atom-one-dark-reasonable.css?1596148729" rel="stylesheet">
22
+ <link href="/rbcli/css/theme.css?1596148729" rel="stylesheet">
23
+ <link href="/rbcli/css/hugo-theme.css?1596148729" 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?1596148729" rel="stylesheet">
53
26
 
54
27
 
28
+
29
+ <script src="/rbcli/js/jquery-3.3.1.min.js?1596148729"></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?1596148729"></script>
59
+ <script type="text/javascript" src="/rbcli/js/auto-complete.js?1596148729"></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?1596148729"></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 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 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?1596148729"></script>
1157
+ <script src="/rbcli/js/perfect-scrollbar.min.js?1596148729"></script>
1158
+ <script src="/rbcli/js/perfect-scrollbar.jquery.min.js?1596148729"></script>
1159
+ <script src="/rbcli/js/jquery.sticky.js?1596148729"></script>
1160
+ <script src="/rbcli/js/featherlight.min.js?1596148729"></script>
1161
+ <script src="/rbcli/js/highlight.pack.js?1596148729"></script>
1162
+ <script>hljs.initHighlightingOnLoad();</script>
1163
+ <script src="/rbcli/js/modernizr.custom-3.6.0.js?1596148729"></script>
1164
+ <script src="/rbcli/js/learn.js?1596148729"></script>
1165
+ <script src="/rbcli/js/hugo-learn.js?1596148729"></script>
1166
+
1167
+ <link href="/rbcli/mermaid/mermaid.css?1596148729" rel="stylesheet" />
1168
+ <script src="/rbcli/mermaid/mermaid.js?1596148729"></script>
1169
+ <script>
1170
+ mermaid.initialize({ startOnLoad: true });
1171
+ </script>
1172
+
1173
+
812
1174
  </body>
813
- </html>
1175
+ </html>
1176
+