lizarb 1.0.3 → 1.0.5

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 (457) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +34 -7
  3. data/Gemfile.lock +179 -18
  4. data/README.md +53 -9
  5. data/Rakefile +38 -0
  6. data/app/dev/commands/color_command.rb +29 -0
  7. data/app/dev/commands/color_command_test.rb +10 -0
  8. data/app/dev/commands/stick_command.rb +102 -0
  9. data/app/dev/commands/stick_command_test.rb +19 -0
  10. data/app/dev_box.rb +54 -20
  11. data/app/happy_box.rb +4 -3
  12. data/app/net/databases/redis_db.rb +1 -1
  13. data/app/net/databases/redis_db_test.rb +5 -5
  14. data/app/net/databases/sqlite_db.rb +1 -1
  15. data/app/net/databases/sqlite_db_test.rb +5 -5
  16. data/app/net/records/app_record.rb +1 -1
  17. data/app/net/records/app_record_test.rb +1 -1
  18. data/app/net/records/post_record_test.rb +1 -1
  19. data/app/net/records/user_record_test.rb +1 -1
  20. data/app/net_box.rb +29 -6
  21. data/app/web/requests/app_request.rb +1 -1
  22. data/app/web/requests/app_request_test.rb +1 -1
  23. data/app/web/requests/foo_request.rb +26 -0
  24. data/app/web/requests/foo_request_test.rb +7 -0
  25. data/app/web_box.rb +17 -9
  26. data/app.rb +41 -10
  27. data/{exe/Gemfile → app_global.gemfile.rb} +2 -0
  28. data/app_global.gemfile.rb.lock +41 -0
  29. data/app_global.rb +5 -0
  30. data/{app → examples/bench/app}/dev/benches/loops_bench.rb +11 -3
  31. data/examples/bench/app/dev/benches/loops_bench_test.rb +11 -0
  32. data/examples/bench/app/dev/benches/objects_bench.rb +48 -0
  33. data/examples/bench/app/dev/benches/objects_bench_test.rb +11 -0
  34. data/examples/bench/app/dev/benches/sorted_bench.rb +74 -0
  35. data/examples/bench/app/dev/benches/sorted_bench_test.rb +11 -0
  36. data/examples/bench/app/dev/benches/variables_bench.rb +61 -0
  37. data/examples/bench/app/dev/benches/variables_bench_test.rb +11 -0
  38. data/examples/client/app/net/clients/news_client.rb +42 -0
  39. data/examples/client/app/net/clients/news_client_test.rb +24 -0
  40. data/{app → examples/command/app}/dev/commands/calculator_command.rb +2 -2
  41. data/{app → examples/command/app}/dev/commands/calculator_command_test.rb +1 -2
  42. data/{app → examples/command/app}/dev/commands/circle_command.rb +2 -2
  43. data/{app → examples/command/app}/dev/commands/circle_command_test.rb +1 -2
  44. data/{app → examples/command/app}/dev/commands/narrative_method_command.rb +8 -10
  45. data/{app → examples/command/app}/dev/commands/narrative_method_command_test.rb +2 -3
  46. data/{app → examples/command/app}/dev/commands/quadratic_command.rb +2 -2
  47. data/{app → examples/command/app}/dev/commands/quadratic_command_test.rb +1 -2
  48. data/examples/command/app/dev_box.rb +3 -0
  49. data/examples/log/app/dev/logs/logger_log.rb +8 -0
  50. data/examples/log/app/dev/logs/logger_log_test.rb +16 -0
  51. data/examples/new/app/dev_box.rb +67 -0
  52. data/examples/new/app.rb +41 -0
  53. data/examples/shell/app/dev/shells/bash_adapter_shell.rb +25 -0
  54. data/examples/shell/app/dev/shells/bash_adapter_shell_test.rb +23 -0
  55. data/examples/shell/app/dev/shells/business_logic_shell.rb +42 -0
  56. data/examples/shell/app/dev/shells/business_logic_shell_test.rb +39 -0
  57. data/examples/shell/app/dev/shells/gem_adapter_shell.rb +33 -0
  58. data/examples/shell/app/dev/shells/gem_adapter_shell_test.rb +23 -0
  59. data/exe/liza +6 -1
  60. data/exe/lizarb +9 -1
  61. data/lib/app.rb +74 -145
  62. data/lib/art_system/art_box.rb +5 -0
  63. data/lib/art_system/art_box_test.rb +8 -0
  64. data/lib/art_system.rb +8 -0
  65. data/lib/crypto_system/crypto_box.rb +5 -0
  66. data/lib/crypto_system/crypto_box_test.rb +8 -0
  67. data/lib/crypto_system.rb +8 -0
  68. data/lib/deep_system/deep_box.rb +5 -0
  69. data/lib/deep_system/deep_box_test.rb +8 -0
  70. data/lib/deep_system.rb +8 -0
  71. data/lib/desk_system/commands/glimmer_command.rb +26 -0
  72. data/lib/desk_system/commands/glimmer_command_test.rb +10 -0
  73. data/lib/desk_system/desk_box.rb +5 -0
  74. data/lib/desk_system/desk_box_test.rb +8 -0
  75. data/lib/desk_system.rb +8 -0
  76. data/lib/dev_system/{dev/controllers/command → commands}/test_command.rb +37 -9
  77. data/lib/dev_system/{dev/controllers/command → commands}/test_command_test.rb +1 -2
  78. data/lib/dev_system/dev_box.rb +79 -0
  79. data/lib/dev_system/dev_box_test.rb +33 -0
  80. data/lib/dev_system/generators/env_generator.rb +87 -0
  81. data/lib/dev_system/generators/env_generator_test.rb +11 -0
  82. data/lib/dev_system/generators/gemfile_generator.rb +47 -0
  83. data/lib/dev_system/generators/gemfile_generator_test.rb +11 -0
  84. data/lib/dev_system/generators/system_generator.rb +70 -0
  85. data/lib/dev_system/generators/system_generator_test.rb +11 -0
  86. data/lib/dev_system/sub/bench/bench.rb +7 -0
  87. data/lib/dev_system/{dev/panels → sub/bench}/bench_panel_test.rb +6 -2
  88. data/lib/dev_system/sub/bench/bench_test.rb +24 -0
  89. data/lib/dev_system/sub/bench/benches/not_found_bench.rb +33 -0
  90. data/lib/dev_system/{dev/controllers/bench → sub/bench/benches}/not_found_bench_test.rb +1 -2
  91. data/lib/dev_system/{dev/controllers/command → sub/bench/commands}/bench_command.rb +2 -7
  92. data/lib/dev_system/{dev/controllers/command → sub/bench/commands}/bench_command_test.rb +1 -2
  93. data/lib/dev_system/sub/bench/generators/bench_generator.rb +70 -0
  94. data/lib/dev_system/sub/bench/generators/bench_generator_test.rb +10 -0
  95. data/lib/dev_system/sub/command/command.rb +28 -0
  96. data/lib/dev_system/sub/command/command_panel.rb +151 -0
  97. data/lib/dev_system/sub/command/command_panel_test.rb +78 -0
  98. data/lib/dev_system/{dev/controllers → sub/command}/command_test.rb +6 -2
  99. data/lib/dev_system/sub/command/commands/base_command.rb +48 -0
  100. data/lib/dev_system/sub/command/commands/base_command_test.rb +11 -0
  101. data/lib/dev_system/{dev/controllers/terminal/irb_terminal.rb → sub/command/commands/irb_command.rb} +4 -2
  102. data/lib/dev_system/sub/command/commands/irb_command_test.rb +11 -0
  103. data/lib/dev_system/sub/command/commands/not_found_command.rb +156 -0
  104. data/lib/dev_system/sub/command/commands/not_found_command_test.rb +11 -0
  105. data/lib/dev_system/sub/command/commands/pry_command.rb +10 -0
  106. data/lib/dev_system/sub/command/commands/pry_command_test.rb +11 -0
  107. data/lib/dev_system/sub/command/commands/simple_command.rb +143 -0
  108. data/lib/dev_system/sub/command/commands/simple_command_test.rb +11 -0
  109. data/lib/dev_system/sub/command/generators/command_generator.rb +90 -0
  110. data/lib/dev_system/sub/command/generators/command_generator_test.rb +11 -0
  111. data/lib/dev_system/sub/command/input_commands/highline_input_command.rb +17 -0
  112. data/lib/dev_system/sub/command/input_commands/highline_input_command_test.rb +19 -0
  113. data/lib/dev_system/sub/command/input_commands/input_command.rb +20 -0
  114. data/lib/dev_system/sub/command/input_commands/input_command_test.rb +19 -0
  115. data/lib/dev_system/sub/command/input_commands/tty_input_command.rb +55 -0
  116. data/lib/dev_system/sub/command/input_commands/tty_input_command_test.rb +19 -0
  117. data/lib/dev_system/sub/generator/commands/generate_command.rb +9 -0
  118. data/lib/dev_system/sub/generator/commands/generate_command_test.rb +11 -0
  119. data/lib/dev_system/sub/generator/commands/new_command.rb +10 -0
  120. data/lib/dev_system/sub/generator/commands/new_command_test.rb +7 -0
  121. data/lib/dev_system/sub/generator/generator.rb +19 -0
  122. data/lib/dev_system/sub/generator/generator_panel.rb +98 -0
  123. data/lib/dev_system/sub/generator/generator_panel_test.rb +79 -0
  124. data/lib/dev_system/{dev/controllers → sub/generator}/generator_test.rb +6 -2
  125. data/lib/dev_system/sub/generator/generators/base_generator.rb +64 -0
  126. data/lib/dev_system/sub/generator/generators/base_generator_test.rb +11 -0
  127. data/lib/dev_system/sub/generator/generators/generator_generator.rb +71 -0
  128. data/lib/dev_system/sub/generator/generators/generator_generator_test.rb +11 -0
  129. data/lib/dev_system/sub/generator/generators/new_generator.rb +74 -0
  130. data/lib/dev_system/sub/generator/generators/new_generator_test.rb +11 -0
  131. data/lib/dev_system/sub/generator/generators/not_found_generator.rb +155 -0
  132. data/lib/dev_system/sub/generator/generators/not_found_generator_test.rb +11 -0
  133. data/lib/dev_system/sub/generator/generators/simple_generator.rb +257 -0
  134. data/lib/dev_system/sub/generator/generators/simple_generator_test.rb +38 -0
  135. data/lib/dev_system/sub/log/commands/log_command.rb +11 -0
  136. data/lib/dev_system/sub/log/commands/log_command_test.rb +11 -0
  137. data/lib/dev_system/sub/log/generators/log_generator.rb +54 -0
  138. data/lib/dev_system/sub/log/generators/log_generator_test.rb +10 -0
  139. data/lib/dev_system/sub/log/log.rb +3 -0
  140. data/lib/dev_system/sub/log/log_panel.rb +47 -0
  141. data/lib/dev_system/sub/log/log_panel_test.rb +50 -0
  142. data/lib/dev_system/sub/log/log_test.rb +16 -0
  143. data/lib/dev_system/sub/log/logs/output_log.rb +74 -0
  144. data/lib/dev_system/sub/log/logs/output_log_test.rb +47 -0
  145. data/lib/dev_system/sub/log/logs/stick_log.rb +79 -0
  146. data/lib/dev_system/sub/log/logs/stick_log_test.rb +88 -0
  147. data/lib/dev_system/sub/shell/commands/convert_command.rb +27 -0
  148. data/lib/dev_system/sub/shell/commands/convert_command_test.rb +10 -0
  149. data/lib/dev_system/sub/shell/commands/format_command.rb +25 -0
  150. data/lib/dev_system/sub/shell/commands/format_command_test.rb +10 -0
  151. data/lib/dev_system/sub/shell/commands/loc_command.rb +211 -0
  152. data/lib/dev_system/sub/shell/commands/loc_command_test.rb +10 -0
  153. data/lib/dev_system/sub/shell/commands/shell_command.rb +45 -0
  154. data/lib/dev_system/sub/shell/commands/shell_command_test.rb +11 -0
  155. data/lib/dev_system/sub/shell/converter_shells/coffee_converter_shell.rb +21 -0
  156. data/lib/dev_system/sub/shell/converter_shells/coffee_converter_shell_test.rb +41 -0
  157. data/lib/dev_system/sub/shell/converter_shells/converter_shell.rb +13 -0
  158. data/lib/dev_system/sub/shell/converter_shells/converter_shell_test.rb +19 -0
  159. data/lib/dev_system/sub/shell/converter_shells/haml_converter_shell.rb +30 -0
  160. data/lib/dev_system/sub/shell/converter_shells/haml_converter_shell_test.rb +34 -0
  161. data/lib/dev_system/sub/shell/converter_shells/md_converter_shell.rb +21 -0
  162. data/lib/dev_system/sub/shell/converter_shells/md_converter_shell_test.rb +38 -0
  163. data/lib/dev_system/sub/shell/converter_shells/scss_converter_shell.rb +59 -0
  164. data/lib/dev_system/sub/shell/converter_shells/scss_converter_shell_test.rb +59 -0
  165. data/lib/dev_system/sub/shell/formatter_shells/formatter_shell.rb +13 -0
  166. data/lib/dev_system/sub/shell/formatter_shells/formatter_shell_test.rb +19 -0
  167. data/lib/dev_system/sub/shell/formatter_shells/html_formatter_shell.rb +20 -0
  168. data/lib/dev_system/sub/shell/formatter_shells/html_formatter_shell_test.rb +51 -0
  169. data/lib/dev_system/sub/shell/generators/shell_generator.rb +68 -0
  170. data/lib/dev_system/sub/shell/generators/shell_generator_test.rb +10 -0
  171. data/lib/dev_system/{dev/controllers → sub/shell}/shell.rb +22 -0
  172. data/lib/dev_system/sub/shell/shell_panel.rb +98 -0
  173. data/lib/dev_system/sub/shell/shell_panel_test.rb +18 -0
  174. data/lib/dev_system/{dev/controllers → sub/shell}/shell_test.rb +31 -2
  175. data/lib/dev_system/sub/shell/shells/app_shell.rb +185 -0
  176. data/lib/dev_system/sub/shell/shells/app_shell_test.rb +26 -0
  177. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/bin_shell_test.rb +1 -2
  178. data/lib/dev_system/sub/shell/shells/color_shell.rb +389 -0
  179. data/lib/dev_system/sub/shell/shells/color_shell_test.rb +27 -0
  180. data/lib/dev_system/sub/shell/shells/controller_shell.rb +20 -0
  181. data/lib/dev_system/sub/shell/shells/controller_shell_test.rb +16 -0
  182. data/lib/dev_system/sub/shell/shells/dir_shell.rb +27 -0
  183. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/dir_shell_test.rb +1 -5
  184. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/file_shell.rb +4 -4
  185. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/file_shell_test.rb +1 -2
  186. data/lib/dev_system/sub/shell/shells/gem_shell.rb +21 -0
  187. data/lib/dev_system/sub/shell/shells/gem_shell_test.rb +28 -0
  188. data/lib/dev_system/sub/shell/shells/kernel_shell.rb +22 -0
  189. data/lib/dev_system/sub/shell/shells/kernel_shell_test.rb +10 -0
  190. data/lib/dev_system/sub/shell/shells/line_diff_shell.rb +26 -0
  191. data/lib/dev_system/sub/shell/shells/line_diff_shell_test.rb +11 -0
  192. data/lib/dev_system/sub/shell/shells/line_shell.rb +56 -0
  193. data/lib/dev_system/sub/shell/shells/line_shell_test.rb +70 -0
  194. data/lib/dev_system/sub/shell/shells/method_shell.rb +52 -0
  195. data/lib/dev_system/sub/shell/shells/method_shell_test.rb +34 -0
  196. data/lib/dev_system/sub/shell/shells/text_file_shell.rb +14 -0
  197. data/lib/dev_system/sub/shell/shells/text_file_shell_test.rb +11 -0
  198. data/lib/dev_system/sub/shell/shells/text_shell.rb +65 -0
  199. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/text_shell_test.rb +1 -2
  200. data/lib/dev_system.rb +8 -2
  201. data/lib/happy_system/happy_box.rb +9 -0
  202. data/lib/happy_system/happy_box_test.rb +24 -0
  203. data/lib/happy_system/sub/axo/axo.rb +10 -0
  204. data/lib/happy_system/sub/axo/axo_panel.rb +9 -0
  205. data/lib/happy_system/sub/axo/axo_panel_test.rb +16 -0
  206. data/lib/happy_system/sub/axo/axo_test.rb +16 -0
  207. data/lib/happy_system/sub/axo/commands/axo_command.rb +40 -0
  208. data/lib/happy_system/sub/axo/commands/axo_command_test.rb +8 -0
  209. data/lib/happy_system/sub/axo/generators/axo_generator.rb +79 -0
  210. data/lib/happy_system/sub/axo/generators/axo_generator_test.rb +11 -0
  211. data/lib/happy_system.rb +4 -2
  212. data/lib/lab_system/clients/kroki_client.rb +134 -0
  213. data/lib/lab_system/clients/kroki_client_test.rb +32 -0
  214. data/lib/lab_system/clients/liza_kroki_client.rb +176 -0
  215. data/lib/lab_system/clients/liza_kroki_client_test.rb +32 -0
  216. data/lib/lab_system/commands/docker_command.rb +61 -0
  217. data/lib/lab_system/commands/docker_command_test.rb +11 -0
  218. data/lib/lab_system/lab_box.rb +5 -0
  219. data/lib/lab_system/lab_box_test.rb +8 -0
  220. data/lib/lab_system/requests/kroki_request.rb +182 -0
  221. data/lib/lab_system/requests/kroki_request_test.rb +11 -0
  222. data/lib/lab_system/shells/docker_shell.rb +60 -0
  223. data/lib/lab_system/shells/docker_shell_test.rb +61 -0
  224. data/lib/lab_system/shells/kroki_docker_shell.rb +20 -0
  225. data/lib/lab_system/shells/kroki_docker_shell_test.rb +11 -0
  226. data/lib/lab_system.rb +8 -0
  227. data/lib/lerb.rb +95 -49
  228. data/lib/liza/base/controller.rb +14 -15
  229. data/lib/liza/base/controller_test.rb +28 -2
  230. data/lib/liza/base/panel.rb +64 -24
  231. data/lib/liza/base/panel_test.rb +168 -3
  232. data/lib/liza/base_parts/controller_subsystem_part.rb +93 -0
  233. data/lib/liza/base_parts/panel_rescuer_part.rb +129 -0
  234. data/lib/liza/meta/box.rb +24 -0
  235. data/lib/liza/meta/box_test.rb +20 -0
  236. data/lib/liza/meta/part_test.rb +6 -1
  237. data/lib/liza/meta/system.rb +50 -7
  238. data/lib/liza/meta/system_test.rb +6 -2
  239. data/lib/liza/ruby_tests/app_test.rb +39 -0
  240. data/lib/liza/ruby_tests/class_test.rb +20 -0
  241. data/lib/liza/ruby_tests/module_test.rb +4 -4
  242. data/lib/liza/{ruby_test.rb → ruby_tests/object_test.rb} +1 -1
  243. data/lib/liza/ruby_tests/string_test.rb +3 -1
  244. data/lib/liza/{test → safety}/test.rb +9 -0
  245. data/lib/liza/{test → safety}/test_test.rb +44 -7
  246. data/lib/liza/{test_parts → safety_parts}/test_assertions_advanced_part.rb +1 -1
  247. data/lib/liza/{test_parts → safety_parts}/test_assertions_part.rb +1 -1
  248. data/lib/liza/{test_parts → safety_parts}/test_dsl_part.rb +3 -3
  249. data/lib/liza/{test_parts → safety_parts}/test_log_part.rb +20 -0
  250. data/lib/liza/{test_parts → safety_parts}/test_subject_part.rb +10 -0
  251. data/lib/liza/safety_parts/test_tree_part.rb +87 -0
  252. data/lib/liza/unit.rb +64 -120
  253. data/lib/liza/unit_parts/unit_classes_part.rb +37 -0
  254. data/lib/liza/unit_parts/unit_classes_part_test.rb +3 -0
  255. data/lib/liza/unit_parts/unit_logging_part.rb +139 -0
  256. data/lib/liza/unit_parts/unit_logging_part_test.rb +3 -0
  257. data/lib/liza/unit_parts/unit_methods_part.rb +35 -0
  258. data/lib/liza/unit_parts/unit_methods_part_test.rb +3 -0
  259. data/lib/liza/unit_parts/unit_procedure_part.rb +2 -2
  260. data/lib/liza/unit_parts/unit_procedure_part_test.rb +9 -9
  261. data/lib/liza/unit_parts/unit_renderer_part.rb +171 -0
  262. data/lib/liza/unit_parts/unit_renderer_part_test.rb +15 -0
  263. data/lib/liza/unit_parts/unit_settings_part.rb +84 -0
  264. data/lib/liza/unit_parts/unit_settings_part_test.rb +3 -0
  265. data/lib/liza/unit_test.rb +114 -5
  266. data/lib/liza.rb +11 -2
  267. data/lib/lizarb/ruby/class.rb +9 -1
  268. data/lib/lizarb/ruby/module.rb +1 -1
  269. data/lib/lizarb/ruby/string.rb +3 -1
  270. data/lib/lizarb/version.rb +1 -1
  271. data/lib/lizarb.rb +404 -29
  272. data/lib/micro_system/micro_box.rb +5 -0
  273. data/lib/micro_system/micro_box_test.rb +8 -0
  274. data/lib/micro_system.rb +8 -0
  275. data/lib/net_system/net_box.rb +21 -0
  276. data/lib/net_system/{net/net_box_test.rb → net_box_test.rb} +1 -2
  277. data/lib/net_system/{net/panels → sub/client}/client_panel_test.rb +1 -2
  278. data/lib/net_system/{net/controllers → sub/client}/client_test.rb +1 -2
  279. data/lib/net_system/sub/client/generators/client_generator.rb +88 -0
  280. data/lib/net_system/sub/client/generators/client_generator_test.rb +10 -0
  281. data/lib/net_system/sub/database/clients/mongo_client.rb +33 -0
  282. data/lib/net_system/sub/database/clients/mongo_client_test.rb +20 -0
  283. data/lib/net_system/sub/database/clients/mysql_client.rb +29 -0
  284. data/lib/net_system/sub/database/clients/mysql_client_test.rb +23 -0
  285. data/lib/net_system/sub/database/clients/pgsql_client.rb +29 -0
  286. data/lib/net_system/sub/database/clients/pgsql_client_test.rb +25 -0
  287. data/lib/net_system/{net/controllers/client → sub/database/clients}/redis_client.rb +5 -2
  288. data/lib/net_system/{net/controllers/client → sub/database/clients}/redis_client_test.rb +2 -2
  289. data/lib/net_system/{net/controllers/client → sub/database/clients}/sqlite_client.rb +5 -2
  290. data/lib/net_system/{net/controllers/client → sub/database/clients}/sqlite_client_test.rb +2 -2
  291. data/lib/net_system/sub/database/commands/database_command.rb +32 -0
  292. data/lib/net_system/sub/database/commands/database_command_test.rb +11 -0
  293. data/lib/net_system/{net/panels → sub/database}/database_panel_test.rb +1 -2
  294. data/lib/net_system/{net/controllers → sub/database}/database_test.rb +1 -2
  295. data/lib/net_system/sub/database/databases/mongo_db.rb +8 -0
  296. data/lib/net_system/sub/database/databases/mongo_db_test.rb +21 -0
  297. data/lib/net_system/sub/database/databases/mysql_db.rb +8 -0
  298. data/lib/net_system/sub/database/databases/mysql_db_test.rb +21 -0
  299. data/lib/net_system/sub/database/databases/pgsql_db.rb +8 -0
  300. data/lib/net_system/sub/database/databases/pgsql_db_test.rb +21 -0
  301. data/lib/net_system/{net/controllers/database → sub/database/databases}/redis_db_test.rb +1 -1
  302. data/lib/net_system/{net/controllers/database → sub/database/databases}/sqlite_db_test.rb +1 -1
  303. data/lib/net_system/sub/record/generators/record_generator.rb +33 -0
  304. data/lib/net_system/sub/record/generators/record_generator_test.rb +11 -0
  305. data/lib/net_system/sub/record/record_panel.rb +3 -0
  306. data/lib/net_system/sub/record/record_panel_test.rb +11 -0
  307. data/lib/net_system/{net/controllers → sub/record}/record_test.rb +1 -2
  308. data/lib/net_system.rb +8 -1
  309. data/lib/web_system/sub/rack/commands/rack_command.rb +30 -0
  310. data/lib/web_system/sub/rack/commands/rack_command_test.rb +11 -0
  311. data/lib/web_system/sub/rack/middle_racks/first_middle_rack.rb +8 -0
  312. data/lib/web_system/sub/rack/middle_racks/first_middle_rack_test.rb +11 -0
  313. data/lib/web_system/sub/rack/middle_racks/last_middle_rack.rb +3 -0
  314. data/lib/web_system/sub/rack/middle_racks/last_middle_rack_test.rb +11 -0
  315. data/lib/web_system/sub/rack/middle_racks/middle_rack.rb +18 -0
  316. data/lib/web_system/sub/rack/middle_racks/middle_rack_test.rb +11 -0
  317. data/lib/web_system/sub/rack/middle_racks/zeitwerk_middle_rack.rb +11 -0
  318. data/lib/web_system/sub/rack/middle_racks/zeitwerk_middle_rack_test.rb +11 -0
  319. data/lib/web_system/sub/rack/rack_panel.rb +52 -0
  320. data/lib/web_system/{web/panels → sub/rack}/rack_panel_test.rb +1 -2
  321. data/lib/web_system/{web/controllers → sub/rack}/rack_test.rb +1 -2
  322. data/lib/web_system/sub/rack/server_racks/agoo_server_rack.rb +53 -0
  323. data/lib/web_system/sub/rack/server_racks/agoo_server_rack_test.rb +11 -0
  324. data/lib/web_system/sub/rack/server_racks/falcon_server_rack.rb +46 -0
  325. data/lib/web_system/sub/rack/server_racks/falcon_server_rack_test.rb +11 -0
  326. data/lib/web_system/sub/rack/server_racks/iodine_server_rack.rb +47 -0
  327. data/lib/web_system/sub/rack/server_racks/iodine_server_rack_test.rb +11 -0
  328. data/lib/web_system/sub/rack/server_racks/puma_server_rack.rb +48 -0
  329. data/lib/web_system/sub/rack/server_racks/puma_server_rack_test.rb +11 -0
  330. data/lib/web_system/sub/rack/server_racks/server_rack.rb +12 -0
  331. data/lib/web_system/sub/rack/server_racks/server_rack_test.rb +11 -0
  332. data/lib/web_system/sub/rack/server_racks/thin_server_rack.rb +85 -0
  333. data/lib/web_system/sub/rack/server_racks/thin_server_rack_test.rb +11 -0
  334. data/lib/web_system/sub/request/commands/request_command.rb +125 -0
  335. data/lib/web_system/sub/request/commands/request_command_test.rb +11 -0
  336. data/lib/web_system/sub/request/generators/request_generator.rb +96 -0
  337. data/lib/web_system/sub/request/generators/request_generator_test.rb +11 -0
  338. data/lib/web_system/sub/request/request_panel.rb +69 -0
  339. data/lib/web_system/sub/request/request_panel_test.rb +54 -0
  340. data/lib/web_system/{web/controllers → sub/request}/request_test.rb +1 -2
  341. data/lib/web_system/sub/request/requests/simple_request.rb +95 -0
  342. data/lib/web_system/sub/request/requests/simple_request_test.rb +11 -0
  343. data/lib/web_system/sub/request/router_requests/router_request.rb +7 -0
  344. data/lib/web_system/sub/request/router_requests/router_request_test.rb +11 -0
  345. data/lib/web_system/sub/request/router_requests/simple_router_request.rb +24 -0
  346. data/lib/web_system/sub/request/router_requests/simple_router_request_test.rb +11 -0
  347. data/lib/web_system/web_box.rb +17 -0
  348. data/lib/web_system/{web/web_box_test.rb → web_box_test.rb} +1 -2
  349. data/lib/web_system.rb +9 -3
  350. data/lib/work_system/work_box.rb +5 -0
  351. data/lib/work_system/work_box_test.rb +8 -0
  352. data/lib/work_system.rb +8 -0
  353. data/lizarb.gemspec +14 -8
  354. metadata +375 -168
  355. data/.ruby-version +0 -1
  356. data/app/dev/benches/app_bench.rb +0 -5
  357. data/app/dev/benches/app_bench_test.rb +0 -7
  358. data/app/dev/benches/loops_bench_test.rb +0 -11
  359. data/app/dev/commands/app_command.rb +0 -5
  360. data/app/dev/commands/app_command_test.rb +0 -7
  361. data/app/dev/commands/new_command.rb +0 -9
  362. data/app/dev/commands/new_command_test.rb +0 -7
  363. data/app/dev/generators/bench_generator/bench.rb.erb +0 -24
  364. data/app/dev/generators/bench_generator/bench_test.rb.erb +0 -12
  365. data/app/dev/generators/bench_generator.rb +0 -18
  366. data/app/dev/generators/bench_generator_test.rb +0 -12
  367. data/app/dev/generators/command_generator/command.rb.erb +0 -26
  368. data/app/dev/generators/command_generator/command_test.rb.erb +0 -12
  369. data/app/dev/generators/command_generator.rb +0 -18
  370. data/app/dev/generators/command_generator_test.rb +0 -12
  371. data/app/dev/generators/record_generator.rb +0 -46
  372. data/app/dev/generators/record_generator_test.rb +0 -12
  373. data/app/dev/generators/request_generator.rb +0 -63
  374. data/app/dev/generators/request_generator_test.rb +0 -12
  375. data/app/happy/axos/axo.rb +0 -50
  376. data/exe/Gemfile.lock +0 -13
  377. data/exe/lrb +0 -3
  378. data/lib/dev_system/dev/controllers/bench/not_found_bench.rb +0 -27
  379. data/lib/dev_system/dev/controllers/bench.rb +0 -9
  380. data/lib/dev_system/dev/controllers/bench_dsl_main_part.rb +0 -58
  381. data/lib/dev_system/dev/controllers/bench_test.rb +0 -12
  382. data/lib/dev_system/dev/controllers/command/echo_command.rb +0 -9
  383. data/lib/dev_system/dev/controllers/command/echo_command_test.rb +0 -12
  384. data/lib/dev_system/dev/controllers/command/generate_command.rb +0 -33
  385. data/lib/dev_system/dev/controllers/command/generate_command_test.rb +0 -12
  386. data/lib/dev_system/dev/controllers/command/not_found_command.rb +0 -27
  387. data/lib/dev_system/dev/controllers/command/not_found_command_test.rb +0 -12
  388. data/lib/dev_system/dev/controllers/command/terminal_command.rb +0 -22
  389. data/lib/dev_system/dev/controllers/command/terminal_command_test.rb +0 -12
  390. data/lib/dev_system/dev/controllers/command/version_command.rb +0 -7
  391. data/lib/dev_system/dev/controllers/command/version_command_test.rb +0 -12
  392. data/lib/dev_system/dev/controllers/command.rb +0 -17
  393. data/lib/dev_system/dev/controllers/generator.rb +0 -9
  394. data/lib/dev_system/dev/controllers/generator_dsl_main_part.rb +0 -52
  395. data/lib/dev_system/dev/controllers/generators/app_generator.rb +0 -146
  396. data/lib/dev_system/dev/controllers/generators/app_generator_test.rb +0 -12
  397. data/lib/dev_system/dev/controllers/generators/generator_generator/generator.rb.erb +0 -18
  398. data/lib/dev_system/dev/controllers/generators/generator_generator/generator_test.rb.erb +0 -12
  399. data/lib/dev_system/dev/controllers/generators/generator_generator/template.rb.erb +0 -9
  400. data/lib/dev_system/dev/controllers/generators/generator_generator/template_test.rb.erb +0 -12
  401. data/lib/dev_system/dev/controllers/generators/generator_generator.rb +0 -30
  402. data/lib/dev_system/dev/controllers/generators/generator_generator_test.rb +0 -12
  403. data/lib/dev_system/dev/controllers/generators/not_found_generator.rb +0 -27
  404. data/lib/dev_system/dev/controllers/generators/not_found_generator_test.rb +0 -12
  405. data/lib/dev_system/dev/controllers/shell/dir_shell.rb +0 -27
  406. data/lib/dev_system/dev/controllers/shell/text_shell.rb +0 -23
  407. data/lib/dev_system/dev/controllers/terminal/irb_terminal_test.rb +0 -12
  408. data/lib/dev_system/dev/controllers/terminal/pry_terminal.rb +0 -10
  409. data/lib/dev_system/dev/controllers/terminal/pry_terminal_test.rb +0 -12
  410. data/lib/dev_system/dev/controllers/terminal.rb +0 -17
  411. data/lib/dev_system/dev/controllers/terminal_test.rb +0 -12
  412. data/lib/dev_system/dev/dev_box.rb +0 -39
  413. data/lib/dev_system/dev/dev_box_test.rb +0 -17
  414. data/lib/dev_system/dev/panels/command_panel.rb +0 -28
  415. data/lib/dev_system/dev/panels/command_panel_test.rb +0 -21
  416. data/lib/dev_system/dev/panels/generator_panel.rb +0 -3
  417. data/lib/dev_system/dev/panels/generator_panel_test.rb +0 -12
  418. data/lib/dev_system/dev/panels/log_panel.rb +0 -13
  419. data/lib/dev_system/dev/panels/log_panel_test.rb +0 -16
  420. data/lib/dev_system/dev/panels/shell_panel.rb +0 -3
  421. data/lib/dev_system/dev/panels/shell_panel_test.rb +0 -12
  422. data/lib/dev_system/dev/panels/terminal_panel.rb +0 -3
  423. data/lib/dev_system/dev/panels/terminal_panel_test.rb +0 -12
  424. data/lib/happy_system/dev/happy_command.rb +0 -11
  425. data/lib/happy_system/happy/controllers/axo.rb +0 -7
  426. data/lib/happy_system/happy/happy_box.rb +0 -9
  427. data/lib/happy_system/happy/happy_box_test.rb +0 -16
  428. data/lib/happy_system/happy/panels/axo_panel.rb +0 -3
  429. data/lib/liza/base/box.rb +0 -85
  430. data/lib/liza/base/box_test.rb +0 -10
  431. data/lib/liza/base_parts/controller_renderer_part.rb +0 -140
  432. data/lib/liza/base_parts/controller_renderer_part_test.rb +0 -16
  433. data/lib/liza/meta/part_extension.rb +0 -16
  434. data/lib/liza/test_parts/test_tree_part.rb +0 -137
  435. data/lib/net_system/dev/net_command.rb +0 -22
  436. data/lib/net_system/net/net_box.rb +0 -15
  437. data/lib/web_system/dev/rack_command.rb +0 -35
  438. data/lib/web_system/dev/request_command.rb +0 -143
  439. data/lib/web_system/dev/web_command.rb +0 -9
  440. data/lib/web_system/web/panels/rack_panel.rb +0 -42
  441. data/lib/web_system/web/panels/request_panel.rb +0 -72
  442. data/lib/web_system/web/panels/request_panel_test.rb +0 -33
  443. data/lib/web_system/web/web_box.rb +0 -20
  444. /data/lib/dev_system/{dev/panels → sub/bench}/bench_panel.rb +0 -0
  445. /data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/bin_shell.rb +0 -0
  446. /data/lib/net_system/{net/controllers → sub/client}/client.rb +0 -0
  447. /data/lib/net_system/{net/panels → sub/client}/client_panel.rb +0 -0
  448. /data/lib/net_system/{net/controllers → sub/database}/database.rb +0 -0
  449. /data/lib/net_system/{net/panels → sub/database}/database_panel.rb +0 -0
  450. /data/lib/net_system/{net/controllers/database → sub/database/databases}/redis_db.rb +0 -0
  451. /data/lib/net_system/{net/controllers/database → sub/database/databases}/sqlite_db.rb +0 -0
  452. /data/lib/net_system/{net/controllers → sub/record}/record.rb +0 -0
  453. /data/lib/web_system/{web/controllers → sub/rack}/rack.rb +0 -0
  454. /data/lib/web_system/{web/controllers → sub/request}/request.rb +0 -0
  455. /data/lib/web_system/{web/controllers/request → sub/request/requests}/client_error_request.rb +0 -0
  456. /data/lib/web_system/{web/controllers/request → sub/request/requests}/not_found_request.rb +0 -0
  457. /data/lib/web_system/{web/controllers/request → sub/request/requests}/server_error_request.rb +0 -0
@@ -4,7 +4,7 @@ class Module
4
4
 
5
5
  # /path/to/liza.rb
6
6
  def source_location
7
- Object.const_source_location name
7
+ Array Object.const_source_location name
8
8
  end
9
9
 
10
10
  # /path/to/liza
@@ -10,7 +10,9 @@ class String
10
10
  alias camelize camelcase
11
11
 
12
12
  def snakecase
13
- gsub(/[A-Z\s-]/) { |s, t| "_#{s}" }[1..-1].to_s.downcase
13
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
14
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
15
+ .downcase
14
16
  end
15
17
 
16
18
  alias snakefy snakecase
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lizarb
4
- VERSION = "1.0.3"
4
+ VERSION = "1.0.5"
5
5
  end
data/lib/lizarb.rb CHANGED
@@ -1,77 +1,452 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # This flag allows database connection tests
4
+ # ENV["DBTEST"] ||= "1"
5
+
6
+ $boot_time = Time.now
7
+
3
8
  require "colorize"
4
9
  require "json"
5
10
  require "pathname"
6
- require "zeitwerk"
11
+ require "fileutils"
7
12
  require "lerb"
8
13
 
9
14
  require_relative "lizarb/version"
10
15
 
16
+ $APP ||= "app"
17
+
11
18
  module Lizarb
12
19
  class Error < StandardError; end
20
+ class ModeNotFound < Error; end
21
+ class SystemNotFound < Error; end
13
22
 
14
23
  #
15
24
 
16
- SPEC = Gem::Specification.find_by_name("lizarb")
17
- GEM_DIR = SPEC.gem_dir
18
25
  CUR_DIR = Dir.pwd
26
+ begin
27
+ SPEC = Gem::Specification.find_by_name("lizarb")
28
+ GEM_DIR = SPEC.gem_dir
29
+ rescue Gem::MissingSpecError
30
+ SPEC = nil
31
+ GEM_DIR = CUR_DIR
32
+ end
19
33
 
20
34
  IS_APP_DIR = File.file? "#{CUR_DIR}/app.rb"
21
35
  IS_LIZ_DIR = File.file? "#{CUR_DIR}/lib/lizarb.rb"
36
+ IS_GEM_DIR = File.file? "#{CUR_DIR}/lizarb.gemspec"
22
37
 
23
38
  APP_DIR = IS_APP_DIR ? CUR_DIR : GEM_DIR
24
39
 
40
+ $APP = "app_global" if not IS_APP_DIR
41
+
25
42
  #
26
43
 
27
44
  module_function
28
45
 
29
46
  def log s
30
- puts s.bold
47
+ print "#{$boot_time.diff}s " if defined? $log_boot_low
48
+ puts s
49
+ end
50
+
51
+ # Returns Lizarb::VERSION as a Gem::Version
52
+ def version
53
+ @version ||= Gem::Version.new VERSION
54
+ end
55
+
56
+ # Returns RUBY_VERSION as a Gem::Version
57
+ def ruby_version
58
+ @ruby_version ||= Gem::Version.new RUBY_VERSION
59
+ end
60
+
61
+ def ruby_supports_raise_cause?
62
+ RUBY_ENGINE != "jruby"
31
63
  end
32
64
 
33
65
  # called from exe/lizarb
34
- def call
66
+ def setup
67
+ lookup_and_load_core_ext
68
+ lookup_and_set_gemfile
69
+ end
70
+
71
+ # called from exe/lizarb
72
+ def app &block
35
73
  require "app"
74
+ if block_given?
75
+ App.class_exec(&block)
76
+ else
77
+ lookup_and_require_app
78
+ end
79
+ end
36
80
 
37
- setup_core_ext
38
- setup_gemfile
81
+ # called from exe/lizarb
82
+ def call
83
+ require "bundler/setup"
39
84
 
40
- require "#{APP_DIR}/app"
85
+ level = App.log_boot
86
+ is_lowest = level == -3
87
+ App::LOG_LEVELS.each do |k, v|
88
+ puts "$log_boot_#{k} = #{v >= level}" if level == -3
89
+ eval "$log_boot_#{k} = true" if v >= level
90
+ end
91
+ log "LizaRB v#{Lizarb.version} https://lizarb.org" if defined? $log_boot_higher
92
+ log "#{self}.#{__method__}" if defined? $log_boot_low
41
93
 
42
- versions = {ruby: RUBY_VERSION, bundler: Bundler::VERSION, zeitwerk: Zeitwerk::VERSION, lizarb: VERSION}
43
- bugs = SPEC.metadata["bug_tracker_uri"]
44
- puts versions.to_s.green
45
- puts "Report bugs at #{bugs}"
94
+ lookup_and_set_mode
95
+ lookup_and_load_settings
96
+ require_liza_and_systems
97
+ connect_systems
46
98
  end
47
99
 
48
- # called from "#{APP_DIR}/app"
49
- def bundle
50
- require "bundler/setup"
51
- Bundler.require :default
100
+ # called from exe/lizarb
101
+ def exit
102
+ exit_messages if defined? $log_boot_normal
103
+ super 0
104
+ end
105
+
106
+ def exit_messages
107
+ info = {
108
+ ruby: RUBY_VERSION,
109
+ bundler: Bundler::VERSION,
110
+ zeitwerk: Zeitwerk::VERSION,
111
+ lizarb: VERSION,
112
+ app: $APP,
113
+ mode: App.mode,
114
+ log_boot: App.log_boot,
115
+ log_level: App.get(:log_level),
116
+ }
117
+ github = "https://github.com/lizarb/lizarb"
118
+ puts info.to_s
119
+ puts "Report bugs at #{github}/issues"
120
+ puts "Fork us on Github at #{github}/fork"
121
+ end
122
+
123
+ # setup phase
124
+
125
+ def lookup_and_load_core_ext
126
+ files =
127
+ if IS_GEM_DIR
128
+ Dir["#{CUR_DIR}/lib/lizarb/ruby/*.rb"]
129
+ else
130
+ Dir["#{GEM_DIR}/lib/lizarb/ruby/*.rb"] + Dir["#{CUR_DIR}/lib/lizarb/ruby/*.rb"]
131
+ end
132
+
133
+ files.each do |file_name|
134
+ log "#{self} loading #{file_name}" if $VERBOSE
135
+ load file_name
136
+ end
137
+ end
138
+
139
+ def lookup_and_set_gemfile
140
+ gemfile = nil
141
+
142
+ finder = \
143
+ proc do |file_name|
144
+ log "#{self}.#{__method__} #{file_name}" if $VERBOSE
145
+ if File.file? file_name
146
+ file_name
147
+ else
148
+ false
149
+ end
150
+ end
151
+
152
+ gemfile ||= finder.call "#{CUR_DIR}/#{$APP}.gemfile.rb"
153
+ gemfile ||= finder.call "#{GEM_DIR}/#{$APP}.gemfile.rb" unless IS_GEM_DIR
154
+ gemfile ||= finder.call "#{CUR_DIR}/Gemfile"
155
+ gemfile ||= finder.call "#{GEM_DIR}/app_global.gemfile.rb"
156
+
157
+ log "#{self} setting BUNDLE_GEMFILE to #{gemfile}" if $VERBOSE
158
+ ENV["BUNDLE_GEMFILE"] = gemfile
159
+ end
160
+
161
+ # app phase
162
+
163
+ def lookup_and_require_app
164
+ finder = \
165
+ proc do |lib_name, file_name|
166
+ log "#{self} checking if #{file_name} exists" if $VERBOSE
167
+ if File.file? "#{file_name}"
168
+ require lib_name
169
+ true
170
+ else
171
+ false
172
+ end
173
+ end
174
+
175
+ return if finder.call "#{CUR_DIR}/#{$APP}", "#{CUR_DIR}/#{$APP}.rb"
176
+ return if finder.call "#{GEM_DIR}/#{$APP}", "#{GEM_DIR}/#{$APP}.rb"
177
+
178
+ raise Error, "Could not find #{$APP}.rb in #{CUR_DIR} or #{GEM_DIR}"
179
+ end
180
+
181
+ # call phase
182
+
183
+ def lookup_and_set_mode
184
+ log " Lizarb.#{__method__}" if defined? $log_boot_low
185
+
186
+ $mode = App.mode
187
+ log " $mode = #{$mode.inspect}" if defined? $log_boot_lower
188
+ $coding = App.coding?
189
+ log " $coding enabled because $mode == :code | A bit slower for debugging purposes" if $coding && defined? $log_boot_lower
190
+ end
191
+
192
+ def lookup_and_load_settings
193
+ log " Lizarb.#{__method__}" if defined? $log_boot_low
194
+ files = ["#{$APP}.#{$mode}.env", "#{$APP}.env"]
195
+ require "dotenv"
196
+ Dotenv.load(*files)
197
+ end
198
+
199
+ def require_liza_and_systems
200
+ log " Lizarb.#{__method__}" if defined? $log_boot_low
201
+
202
+ log " require Zeitwerk and Liza" if defined? $log_boot_lower
203
+
204
+ require "zeitwerk"
205
+ require "liza"
206
+
207
+ # loaders[0] first loads Liza, then each System class
208
+
209
+ log " Zeitwerk loaders [0] first loads Liza, then each System class" if defined? $log_boot_lower
210
+
211
+ loaders << loader = Zeitwerk::Loader.new
212
+ loader.tag = Liza.to_s
213
+
214
+ # collapse Liza paths
215
+
216
+ # ORDER MATTERS: IGNORE, COLLAPSE, PUSH
217
+ loader.collapse "#{Liza.source_location_radical}/**/*"
218
+ loader.push_dir "#{Liza.source_location_radical}", namespace: Liza
219
+
220
+ # loader setup
221
+
222
+ loader.enable_reloading
223
+ loader.setup
224
+
225
+ # bundle each System gem
52
226
 
53
- bundle_liza
227
+ Bundler.require :systems
54
228
 
55
- check_mode!
229
+ # load each System class
230
+
231
+ log " App.systems is Hash containing all system classes" if defined? $log_boot_lowest
232
+ App.systems.keys.each do |k|
233
+ key = "#{k}_system"
234
+
235
+ require_system key
236
+ klass = Object.const_get key.camelize
237
+
238
+ App.systems[k] = klass
239
+ end
240
+
241
+ App.systems.freeze
242
+
243
+ # loaders[1] first loads each System, then the App
244
+ log " Zeitwerk loaders [1] first loads each System, then the App" if defined? $log_boot_lower
245
+ loaders << loader = Zeitwerk::Loader.new
246
+
247
+ # collapse each System paths
248
+
249
+ App.systems.each do |k, klass|
250
+ # ORDER MATTERS: IGNORE, COLLAPSE, PUSH
251
+ loader.collapse "#{klass.source_location_radical}/**/*"
252
+ loader.push_dir "#{klass.source_location_radical}", namespace: klass
253
+ end
254
+
255
+ # cherrypick App paths
256
+
257
+ app_dir = App.path
258
+ if app_dir
259
+ log " Application Directory: #{app_dir}" if defined? $log_boot_lowest
260
+ list = Dir["#{app_dir}/*"].to_set
261
+ end
262
+
263
+ if app_dir.nil? || list.empty?
264
+ log " Application Directory is empty" if defined? $log_boot_lowest
265
+ else
266
+ log " Application Directory found #{list.count} items to collapse" if defined? $log_boot_lowest
267
+
268
+ to_collapse = []
269
+
270
+ App.systems.each do |k, klass|
271
+ next if klass.subs.empty?
272
+ box_dir = "#{app_dir}/#{k}"
273
+ box_file = "#{box_dir}_box.rb"
274
+
275
+ if !list.include? box_file
276
+ log " Missd box file #{box_file}! Generating it"
277
+
278
+ File.write box_file, <<-RUBY
279
+ class #{k.to_s.camelize}Box < #{k.to_s.camelize}System::#{k.to_s.camelize}Box
280
+
281
+ end
282
+ RUBY
283
+ end
284
+
285
+ log " Found box file #{box_file}" if defined? $log_boot_lowest
286
+ to_collapse << box_file
287
+
288
+ if !list.include? box_dir
289
+ log " Missd controllers #{box_dir}" if defined? $log_boot_lowest
290
+ else
291
+ log " Found controllers #{box_dir}" if defined? $log_boot_lowest
292
+ to_collapse << box_dir
293
+ end
294
+
295
+ end
296
+
297
+ # ORDER MATTERS: IGNORE, COLLAPSE, PUSH
298
+ to_ignore = list - to_collapse
299
+ to_ignore.each do |file|
300
+ log " Ignoring #{file}" if $log_boot_lowest
301
+ loader.ignore file
302
+ end
303
+
304
+ to_collapse.each do |path|
305
+ log " Collapsing #{path}" if $log_boot_lowest
306
+ if path.end_with? ".rb"
307
+ loader.collapse path
308
+ else
309
+ loader.collapse "#{path}/**/*"
310
+ end
311
+ end
312
+ loader.collapse "#{app_dir}/*"
313
+
314
+ loader.push_dir app_dir, namespace: Object
315
+ end
316
+
317
+ # loader setup
318
+
319
+ loader.enable_reloading
320
+ loader.setup
321
+
322
+ # App connects to systems
323
+
324
+ log " Zeitwerk loaders eager load" if defined? $log_boot_lowest
325
+ loaders.map &:eager_load
56
326
  end
57
327
 
58
- # setup
328
+ def connect_systems
329
+ log " Lizarb.#{__method__} (#{App.systems.count})" if defined? $log_boot_low
330
+ App.systems.each do |system_key, system_class|
331
+ connect_system system_key, system_class
332
+ connect_box system_key, system_class
333
+ end
334
+ end
59
335
 
60
- def setup_core_ext
61
- pattern =
62
- IS_LIZ_DIR ? "lib/lizarb/ruby/*.rb"
63
- : "#{GEM_DIR}/lib/lizarb/ruby/*.rb"
336
+ # systems
64
337
 
65
- Dir[pattern].each &method(:load)
338
+ def require_system key
339
+ log " require '#{key}'" if defined? $log_boot_lowest
340
+ require key
341
+ rescue LoadError => e
342
+ def e.backtrace; []; end
343
+ raise SystemNotFound, "FILE #{key}.rb not found on $LOAD_PATH", []
66
344
  end
67
345
 
68
- def setup_gemfile
69
- ENV["BUNDLE_GEMFILE"] =
70
- IS_APP_DIR ? "#{CUR_DIR}/Gemfile"
71
- : "#{GEM_DIR}/exe/Gemfile"
346
+ def connect_system key, system_class
347
+ t = Time.now
348
+ puts if defined? $log_boot_low
349
+
350
+ system_class.color DevSystem::ColorShell.parse system_class.color unless system_class.color.is_a? Array
351
+
352
+ color_system_class = Liza::Unit.stick(system_class.color, system_class.name).to_s
353
+
354
+ log "CONNECTING SYSTEM #{color_system_class}" if defined? $log_boot_low
355
+
356
+ # Ignore this for now.
357
+ # This feature has been commented out for simplicity purposes.
358
+ # It injects code into other classes just like Part does. System defines them
359
+
360
+ # index = 0
361
+ # system_class.registrar.each do |string, target_block|
362
+ # reg_type, _sep, reg_target = string.to_s.lpartition "_"
363
+
364
+ # index += 1
365
+
366
+ # target_klass = Liza.const reg_target
367
+
368
+ # if reg_type == "insertion"
369
+ # target_klass.class_exec(&target_block)
370
+ # else
371
+ # raise "TODO: decide and implement system extension"
372
+ # end
373
+ # log "CONNECTING SYSTEM-PART #{color_system_class}.#{reg_type.to_s.ljust 11} to #{target_klass.to_s.ljust 30} at #{target_block.source_location * ":"} " if defined? $log_boot_low
374
+ # end
375
+
376
+ # pad = 21-system_class.name.size
377
+ # log "CONNECTED SYSTEM #{t.diff}s for #{color_system_class}#{"".ljust pad} to connect to #{index} system parts" if defined? $log_boot_normal
378
+ end
379
+
380
+ def connect_box key, system_class
381
+ t = Time.now
382
+
383
+ box_class = system_class.box
384
+ color_box_class = Liza::Unit.stick(system_class.color, box_class.name).to_s
385
+
386
+ log "CONNECTING BOX #{color_box_class}" if defined? $log_boot_low
387
+ index = 0
388
+ # system_class.subs.keys.each do |sub_key|
389
+ system_class.subs.each do |sub_key|
390
+ panel_class_name = "#{sub_key}_panel".camelize
391
+ controller_class_name = sub_key.to_s.camelize
392
+
393
+ index += 1
394
+ pad = 30-box_class.name.size-sub_key.to_s.size
395
+ log "CONNECTED BOX TO PANEL #{"#{color_box_class}[:#{sub_key}]"}#{"".ljust pad} is an instance of #{panel_class_name.ljust_blanks 20} and it configures #{controller_class_name}" if defined? $log_boot_low
396
+ end
397
+
398
+ log "CONNECTED BOX #{t.diff}s" if defined? $log_boot_low
399
+ end
400
+
401
+ # parts
402
+
403
+ def connect_part unit_class, key, part_class, system
404
+ if defined? $log_boot_lowest
405
+ t = Time.now
406
+ string = " #{unit_class}.part :#{key}"
407
+ log string
408
+ end
409
+
410
+ part_class ||= if system.nil?
411
+ Liza.const "#{key}_part"
412
+ else
413
+ Liza.const("#{system}_system")
414
+ .const "#{key}_part"
415
+ end
416
+
417
+ if part_class.insertion
418
+ unit_class.class_exec(&part_class.insertion)
419
+ end
420
+
421
+ if part_class.extension
422
+ part_class.const_set :Extension, Class.new(Liza::PartExtension)
423
+ part_class::Extension.class_exec(&part_class.extension)
424
+ end
425
+
426
+ if defined? $log_boot_lowest
427
+ log " ."
428
+ end
429
+ end
430
+
431
+ # loaders
432
+
433
+ @loaders = []
434
+ @mutex = Mutex.new
435
+
436
+ def loaders
437
+ @loaders
438
+ end
439
+
440
+ def reload &block
441
+ @mutex.synchronize do
442
+ loaders.map &:reload
443
+ yield if block_given?
444
+ end
445
+
446
+ true
72
447
  end
73
448
 
74
- # threads
449
+ # thread management
75
450
 
76
451
  def thread_object_id
77
452
  Thread.current.object_id
@@ -0,0 +1,5 @@
1
+ class MicroSystem::MicroBox < Liza::Box
2
+
3
+ #
4
+
5
+ end
@@ -0,0 +1,8 @@
1
+ class MicroSystem::MicroBoxTest < Liza::BoxTest
2
+
3
+ test :subject_class, :subject do
4
+ assert_equality MicroSystem::MicroBox, subject_class
5
+ assert_equality MicroSystem::MicroBox, subject.class
6
+ end
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ class MicroSystem < Liza::System
2
+ class Error < Liza::Error; end
3
+
4
+ #
5
+
6
+ color :red
7
+
8
+ end
@@ -0,0 +1,21 @@
1
+ class NetSystem::NetBox < Liza::Box
2
+
3
+ # Preconfigure your client panel
4
+
5
+ configure :client do
6
+ #
7
+ end
8
+
9
+ # Preconfigure your database panel
10
+
11
+ configure :database do
12
+ #
13
+ end
14
+
15
+ # Preconfigure your record panel
16
+
17
+ configure :record do
18
+ #
19
+ end
20
+
21
+ end
@@ -5,8 +5,7 @@ class NetSystem::NetBoxTest < Liza::BoxTest
5
5
  end
6
6
 
7
7
  test :settings do
8
- assert subject_class.log_level == :normal
9
- assert subject_class.log_color == :red
8
+ assert_equality subject_class.log_level, 0
10
9
  end
11
10
 
12
11
  test :panels do
@@ -5,8 +5,7 @@ class NetSystem::ClientPanelTest < Liza::PanelTest
5
5
  end
6
6
 
7
7
  test :settings do
8
- assert subject_class.log_level == :normal
9
- assert subject_class.log_color == :red
8
+ assert_equality subject_class.log_level, 0
10
9
  end
11
10
 
12
11
  # test :call do
@@ -5,8 +5,7 @@ class NetSystem::ClientTest < Liza::ControllerTest
5
5
  end
6
6
 
7
7
  test :settings do
8
- assert subject_class.log_level == :normal
9
- assert subject_class.log_color == :red
8
+ assert_equality subject_class.log_level, 0
10
9
  end
11
10
 
12
11
  end
@@ -0,0 +1,88 @@
1
+ class NetSystem::ClientGenerator < DevSystem::SimpleGenerator
2
+
3
+ # liza g client name place=app
4
+
5
+ def call_default
6
+ @controller_class = Client
7
+
8
+ name!
9
+ place!
10
+
11
+ create_controller @name, @controller_class, @place, @path do |unit, test|
12
+ unit.section :controller_section_1
13
+ test.section :controller_test_section_1
14
+ end
15
+ end
16
+
17
+ # liza g client:examples
18
+
19
+ def call_examples
20
+ copy_examples Client
21
+ end
22
+
23
+ end
24
+
25
+ __END__
26
+
27
+ # view controller_section_1.rb.erb
28
+
29
+ def self.ruby_news
30
+ new.call "https://www.ruby-lang.org/en/feeds/news.rss"
31
+ end
32
+
33
+ def self.ruby_weekly
34
+ new.call "https://cprss.s3.amazonaws.com/rubyweekly.com.xml"
35
+ end
36
+
37
+ #
38
+
39
+ def call url
40
+ t = Time.now
41
+ body = http_get url
42
+ hash = xml_to_hash body
43
+ log "rss channel title: #{ hash.dig :rss, :channel, :title }"
44
+ hash
45
+ ensure
46
+ log "#{t.diff}s to request #{url}"
47
+ hash
48
+ end
49
+
50
+ #
51
+
52
+ def http_get url
53
+ require "net/http"
54
+ request_uri = URI(url)
55
+ log "GET #{request_uri}"
56
+ Net::HTTP.get(request_uri)
57
+ end
58
+
59
+ def xml_to_hash string
60
+ # https://github.com/savonrb/nori
61
+ gem "nori"
62
+ gem "rexml"
63
+ require "nori"
64
+ require "rexml"
65
+ log "parsing using Nori and REXML"
66
+ Nori.new(:parser => :rexml).parse string
67
+ end
68
+
69
+ # view controller_test_section_1.rb.erb
70
+
71
+ test :subject_class, :subject do
72
+ assert_equality <%= @class_name %>, subject_class
73
+ assert_equality <%= @class_name %>, subject.class
74
+ end
75
+
76
+ test :subject_class, :ruby_news do
77
+ hash = subject_class.ruby_news
78
+ a = hash.dig("rss", "channel", "title")
79
+ b = "Ruby News"
80
+ assert_equality a, b
81
+ end
82
+
83
+ test :subject_class, :ruby_weekly do
84
+ hash = subject_class.ruby_weekly
85
+ a = hash.dig("rss", "channel", "title")
86
+ b = "Ruby Weekly"
87
+ assert_equality a, b
88
+ end
@@ -0,0 +1,10 @@
1
+ class NetSystem::ClientGeneratorTest < DevSystem::SimpleGeneratorTest
2
+
3
+ #
4
+
5
+ test :subject_class, :subject do
6
+ assert_equality NetSystem::ClientGenerator, subject_class
7
+ assert_equality NetSystem::ClientGenerator, subject.class
8
+ end
9
+
10
+ end