lizarb 1.0.4 → 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 (441) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +34 -7
  3. data/Gemfile.lock +176 -14
  4. data/README.md +53 -9
  5. data/app/dev/commands/color_command.rb +29 -0
  6. data/app/dev/commands/color_command_test.rb +10 -0
  7. data/app/dev/commands/stick_command.rb +102 -0
  8. data/app/dev/commands/stick_command_test.rb +19 -0
  9. data/app/dev_box.rb +49 -17
  10. data/app/happy_box.rb +3 -2
  11. data/app/net/databases/redis_db.rb +1 -1
  12. data/app/net/databases/redis_db_test.rb +5 -5
  13. data/app/net/databases/sqlite_db.rb +1 -1
  14. data/app/net/databases/sqlite_db_test.rb +5 -5
  15. data/app/net/records/app_record.rb +1 -1
  16. data/app/net/records/app_record_test.rb +1 -1
  17. data/app/net/records/post_record_test.rb +1 -1
  18. data/app/net/records/user_record_test.rb +1 -1
  19. data/app/net_box.rb +29 -6
  20. data/app/web/requests/app_request.rb +1 -1
  21. data/app/web/requests/app_request_test.rb +1 -1
  22. data/app/web/requests/foo_request.rb +26 -0
  23. data/app/web/requests/foo_request_test.rb +7 -0
  24. data/app/web_box.rb +16 -8
  25. data/app.rb +38 -6
  26. data/app_global.gemfile.rb +1 -1
  27. data/app_global.gemfile.rb.lock +25 -3
  28. data/app_global.rb +1 -0
  29. data/{app_new → examples/bench/app}/dev/benches/loops_bench.rb +10 -3
  30. data/{app_new → examples/bench/app}/dev/benches/loops_bench_test.rb +1 -2
  31. data/examples/bench/app/dev/benches/objects_bench.rb +48 -0
  32. data/{app_new → examples/bench/app}/dev/benches/objects_bench_test.rb +1 -2
  33. data/{app_new → examples/bench/app}/dev/benches/sorted_bench.rb +28 -8
  34. data/examples/bench/app/dev/benches/sorted_bench_test.rb +11 -0
  35. data/{app_new → examples/bench/app}/dev/benches/variables_bench.rb +8 -2
  36. data/{app_new → examples/bench/app}/dev/benches/variables_bench_test.rb +1 -2
  37. data/examples/client/app/net/clients/news_client.rb +42 -0
  38. data/examples/client/app/net/clients/news_client_test.rb +24 -0
  39. data/{app_new → examples/command/app}/dev/commands/calculator_command.rb +1 -1
  40. data/{app_new → examples/command/app}/dev/commands/calculator_command_test.rb +1 -2
  41. data/{app_new → examples/command/app}/dev/commands/circle_command.rb +1 -1
  42. data/{app_new → examples/command/app}/dev/commands/circle_command_test.rb +1 -2
  43. data/{app_new → examples/command/app}/dev/commands/narrative_method_command.rb +3 -3
  44. data/{app_new → examples/command/app}/dev/commands/narrative_method_command_test.rb +2 -3
  45. data/{app_new → examples/command/app}/dev/commands/quadratic_command.rb +1 -1
  46. data/{app_new → examples/command/app}/dev/commands/quadratic_command_test.rb +1 -2
  47. data/examples/command/app/dev_box.rb +3 -0
  48. data/examples/log/app/dev/logs/logger_log.rb +8 -0
  49. data/examples/log/app/dev/logs/logger_log_test.rb +16 -0
  50. data/examples/new/app/dev_box.rb +67 -0
  51. data/examples/new/app.rb +41 -0
  52. data/examples/shell/app/dev/shells/bash_adapter_shell.rb +25 -0
  53. data/examples/shell/app/dev/shells/bash_adapter_shell_test.rb +23 -0
  54. data/examples/shell/app/dev/shells/business_logic_shell.rb +42 -0
  55. data/examples/shell/app/dev/shells/business_logic_shell_test.rb +39 -0
  56. data/examples/shell/app/dev/shells/gem_adapter_shell.rb +33 -0
  57. data/examples/shell/app/dev/shells/gem_adapter_shell_test.rb +23 -0
  58. data/exe/liza +6 -1
  59. data/exe/lizarb +1 -1
  60. data/lib/app.rb +71 -74
  61. data/lib/art_system/art_box.rb +5 -0
  62. data/lib/art_system/art_box_test.rb +8 -0
  63. data/lib/art_system.rb +8 -0
  64. data/lib/crypto_system/crypto_box.rb +5 -0
  65. data/lib/crypto_system/crypto_box_test.rb +8 -0
  66. data/lib/crypto_system.rb +8 -0
  67. data/lib/deep_system/deep_box.rb +5 -0
  68. data/lib/deep_system/deep_box_test.rb +8 -0
  69. data/lib/deep_system.rb +8 -0
  70. data/lib/desk_system/commands/glimmer_command.rb +26 -0
  71. data/lib/desk_system/commands/glimmer_command_test.rb +10 -0
  72. data/lib/desk_system/desk_box.rb +5 -0
  73. data/lib/desk_system/desk_box_test.rb +8 -0
  74. data/lib/desk_system.rb +8 -0
  75. data/lib/dev_system/{dev/controllers/command → commands}/test_command.rb +32 -4
  76. data/lib/dev_system/{dev/controllers/command → commands}/test_command_test.rb +1 -2
  77. data/lib/dev_system/dev_box.rb +79 -0
  78. data/lib/dev_system/dev_box_test.rb +33 -0
  79. data/lib/dev_system/generators/env_generator.rb +87 -0
  80. data/lib/dev_system/generators/env_generator_test.rb +11 -0
  81. data/lib/dev_system/generators/gemfile_generator.rb +47 -0
  82. data/lib/dev_system/generators/gemfile_generator_test.rb +11 -0
  83. data/lib/dev_system/generators/system_generator.rb +70 -0
  84. data/lib/dev_system/generators/system_generator_test.rb +11 -0
  85. data/lib/dev_system/{dev/controllers → sub/bench}/bench.rb +4 -0
  86. data/lib/dev_system/{dev/panels → sub/bench}/bench_panel_test.rb +6 -2
  87. data/lib/dev_system/sub/bench/bench_test.rb +24 -0
  88. data/lib/dev_system/{dev/controllers/bench → sub/bench/benches}/not_found_bench.rb +1 -2
  89. data/lib/dev_system/{dev/controllers/bench → sub/bench/benches}/not_found_bench_test.rb +1 -2
  90. data/lib/dev_system/{dev/controllers/command → sub/bench/commands}/bench_command.rb +1 -5
  91. data/lib/dev_system/{dev/controllers/command → sub/bench/commands}/bench_command_test.rb +1 -2
  92. data/lib/dev_system/sub/bench/generators/bench_generator.rb +70 -0
  93. data/lib/dev_system/sub/bench/generators/bench_generator_test.rb +10 -0
  94. data/lib/dev_system/sub/command/command.rb +28 -0
  95. data/lib/dev_system/sub/command/command_panel.rb +151 -0
  96. data/lib/dev_system/sub/command/command_panel_test.rb +78 -0
  97. data/lib/dev_system/{dev/controllers → sub/command}/command_test.rb +6 -2
  98. data/lib/dev_system/sub/command/commands/base_command.rb +48 -0
  99. data/lib/dev_system/sub/command/commands/base_command_test.rb +11 -0
  100. data/lib/dev_system/{dev/controllers/terminal/irb_terminal.rb → sub/command/commands/irb_command.rb} +3 -7
  101. data/lib/dev_system/sub/command/commands/irb_command_test.rb +11 -0
  102. data/lib/dev_system/sub/command/commands/not_found_command.rb +156 -0
  103. data/lib/dev_system/sub/command/commands/not_found_command_test.rb +11 -0
  104. data/lib/dev_system/{dev/controllers/terminal/pry_terminal.rb → sub/command/commands/pry_command.rb} +2 -2
  105. data/lib/dev_system/sub/command/commands/pry_command_test.rb +11 -0
  106. data/lib/dev_system/sub/command/commands/simple_command.rb +143 -0
  107. data/lib/dev_system/sub/command/commands/simple_command_test.rb +11 -0
  108. data/lib/dev_system/sub/command/generators/command_generator.rb +90 -0
  109. data/lib/dev_system/sub/command/generators/command_generator_test.rb +11 -0
  110. data/lib/dev_system/sub/command/input_commands/highline_input_command.rb +17 -0
  111. data/lib/dev_system/sub/command/input_commands/highline_input_command_test.rb +19 -0
  112. data/lib/dev_system/sub/command/input_commands/input_command.rb +20 -0
  113. data/lib/dev_system/sub/command/input_commands/input_command_test.rb +19 -0
  114. data/lib/dev_system/sub/command/input_commands/tty_input_command.rb +55 -0
  115. data/lib/dev_system/sub/command/input_commands/tty_input_command_test.rb +19 -0
  116. data/lib/dev_system/sub/generator/commands/generate_command.rb +9 -0
  117. data/lib/dev_system/sub/generator/commands/generate_command_test.rb +11 -0
  118. data/lib/dev_system/sub/generator/commands/new_command.rb +10 -0
  119. data/lib/dev_system/{dev/controllers/command → sub/generator/commands}/new_command_test.rb +1 -1
  120. data/lib/dev_system/sub/generator/generator.rb +19 -0
  121. data/lib/dev_system/sub/generator/generator_panel.rb +98 -0
  122. data/lib/dev_system/sub/generator/generator_panel_test.rb +79 -0
  123. data/lib/dev_system/{dev/controllers → sub/generator}/generator_test.rb +6 -2
  124. data/lib/dev_system/sub/generator/generators/base_generator.rb +64 -0
  125. data/lib/dev_system/sub/generator/generators/base_generator_test.rb +11 -0
  126. data/lib/dev_system/sub/generator/generators/generator_generator.rb +71 -0
  127. data/lib/dev_system/sub/generator/generators/generator_generator_test.rb +11 -0
  128. data/lib/dev_system/sub/generator/generators/new_generator.rb +74 -0
  129. data/lib/dev_system/sub/generator/generators/new_generator_test.rb +11 -0
  130. data/lib/dev_system/sub/generator/generators/not_found_generator.rb +155 -0
  131. data/lib/dev_system/sub/generator/generators/not_found_generator_test.rb +11 -0
  132. data/lib/dev_system/sub/generator/generators/simple_generator.rb +257 -0
  133. data/lib/dev_system/sub/generator/generators/simple_generator_test.rb +38 -0
  134. data/lib/dev_system/sub/log/commands/log_command.rb +11 -0
  135. data/lib/dev_system/sub/log/commands/log_command_test.rb +11 -0
  136. data/lib/dev_system/sub/log/generators/log_generator.rb +54 -0
  137. data/lib/dev_system/sub/log/generators/log_generator_test.rb +10 -0
  138. data/lib/dev_system/sub/log/log_panel.rb +47 -0
  139. data/lib/dev_system/sub/log/log_panel_test.rb +50 -0
  140. data/lib/dev_system/{dev/controllers → sub/log}/log_test.rb +6 -2
  141. data/lib/dev_system/sub/log/logs/output_log.rb +74 -0
  142. data/lib/dev_system/sub/log/logs/output_log_test.rb +47 -0
  143. data/lib/dev_system/sub/log/logs/stick_log.rb +79 -0
  144. data/lib/dev_system/sub/log/logs/stick_log_test.rb +88 -0
  145. data/lib/dev_system/sub/shell/commands/convert_command.rb +27 -0
  146. data/lib/dev_system/sub/shell/commands/convert_command_test.rb +10 -0
  147. data/lib/dev_system/sub/shell/commands/format_command.rb +25 -0
  148. data/lib/dev_system/sub/shell/commands/format_command_test.rb +10 -0
  149. data/lib/dev_system/sub/shell/commands/loc_command.rb +211 -0
  150. data/lib/dev_system/sub/shell/commands/loc_command_test.rb +10 -0
  151. data/lib/dev_system/sub/shell/commands/shell_command.rb +45 -0
  152. data/lib/dev_system/sub/shell/commands/shell_command_test.rb +11 -0
  153. data/lib/dev_system/sub/shell/converter_shells/coffee_converter_shell.rb +21 -0
  154. data/lib/dev_system/sub/shell/converter_shells/coffee_converter_shell_test.rb +41 -0
  155. data/lib/dev_system/sub/shell/converter_shells/converter_shell.rb +13 -0
  156. data/lib/dev_system/sub/shell/converter_shells/converter_shell_test.rb +19 -0
  157. data/lib/dev_system/sub/shell/converter_shells/haml_converter_shell.rb +30 -0
  158. data/lib/dev_system/sub/shell/converter_shells/haml_converter_shell_test.rb +34 -0
  159. data/lib/dev_system/sub/shell/converter_shells/md_converter_shell.rb +21 -0
  160. data/lib/dev_system/sub/shell/converter_shells/md_converter_shell_test.rb +38 -0
  161. data/lib/dev_system/sub/shell/converter_shells/scss_converter_shell.rb +59 -0
  162. data/lib/dev_system/sub/shell/converter_shells/scss_converter_shell_test.rb +59 -0
  163. data/lib/dev_system/sub/shell/formatter_shells/formatter_shell.rb +13 -0
  164. data/lib/dev_system/sub/shell/formatter_shells/formatter_shell_test.rb +19 -0
  165. data/lib/dev_system/sub/shell/formatter_shells/html_formatter_shell.rb +20 -0
  166. data/lib/dev_system/sub/shell/formatter_shells/html_formatter_shell_test.rb +51 -0
  167. data/lib/dev_system/sub/shell/generators/shell_generator.rb +68 -0
  168. data/lib/dev_system/sub/shell/generators/shell_generator_test.rb +10 -0
  169. data/lib/dev_system/{dev/controllers → sub/shell}/shell.rb +2 -2
  170. data/lib/dev_system/sub/shell/shell_panel.rb +98 -0
  171. data/lib/dev_system/sub/shell/shell_panel_test.rb +18 -0
  172. data/lib/dev_system/{dev/controllers → sub/shell}/shell_test.rb +9 -5
  173. data/lib/dev_system/sub/shell/shells/app_shell.rb +185 -0
  174. data/lib/dev_system/sub/shell/shells/app_shell_test.rb +26 -0
  175. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/bin_shell_test.rb +1 -2
  176. data/lib/dev_system/sub/shell/shells/color_shell.rb +389 -0
  177. data/lib/dev_system/sub/shell/shells/color_shell_test.rb +27 -0
  178. data/lib/dev_system/sub/shell/shells/controller_shell.rb +20 -0
  179. data/lib/dev_system/sub/shell/shells/controller_shell_test.rb +16 -0
  180. data/lib/dev_system/sub/shell/shells/dir_shell.rb +27 -0
  181. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/dir_shell_test.rb +1 -5
  182. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/file_shell.rb +4 -4
  183. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/file_shell_test.rb +1 -2
  184. data/lib/dev_system/sub/shell/shells/gem_shell.rb +21 -0
  185. data/lib/dev_system/sub/shell/shells/gem_shell_test.rb +28 -0
  186. data/lib/dev_system/sub/shell/shells/kernel_shell.rb +22 -0
  187. data/lib/dev_system/sub/shell/shells/kernel_shell_test.rb +10 -0
  188. data/lib/dev_system/sub/shell/shells/line_diff_shell.rb +26 -0
  189. data/lib/dev_system/sub/shell/shells/line_diff_shell_test.rb +11 -0
  190. data/lib/dev_system/sub/shell/shells/line_shell.rb +56 -0
  191. data/lib/dev_system/sub/shell/shells/line_shell_test.rb +70 -0
  192. data/lib/dev_system/sub/shell/shells/method_shell.rb +52 -0
  193. data/lib/dev_system/sub/shell/shells/method_shell_test.rb +34 -0
  194. data/lib/dev_system/sub/shell/shells/text_file_shell.rb +14 -0
  195. data/lib/dev_system/sub/shell/shells/text_file_shell_test.rb +11 -0
  196. data/lib/dev_system/sub/shell/shells/text_shell.rb +65 -0
  197. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/text_shell_test.rb +1 -2
  198. data/lib/dev_system.rb +8 -2
  199. data/lib/happy_system/happy_box.rb +9 -0
  200. data/lib/happy_system/happy_box_test.rb +24 -0
  201. data/lib/happy_system/sub/axo/axo.rb +10 -0
  202. data/lib/happy_system/sub/axo/axo_panel.rb +9 -0
  203. data/lib/happy_system/sub/axo/axo_panel_test.rb +16 -0
  204. data/lib/happy_system/sub/axo/axo_test.rb +16 -0
  205. data/lib/happy_system/sub/axo/commands/axo_command.rb +40 -0
  206. data/lib/happy_system/sub/axo/commands/axo_command_test.rb +8 -0
  207. data/lib/happy_system/sub/axo/generators/axo_generator.rb +79 -0
  208. data/lib/happy_system/sub/axo/generators/axo_generator_test.rb +11 -0
  209. data/lib/happy_system.rb +4 -2
  210. data/lib/lab_system/clients/kroki_client.rb +134 -0
  211. data/lib/lab_system/clients/kroki_client_test.rb +32 -0
  212. data/lib/lab_system/clients/liza_kroki_client.rb +176 -0
  213. data/lib/lab_system/clients/liza_kroki_client_test.rb +32 -0
  214. data/lib/lab_system/commands/docker_command.rb +61 -0
  215. data/lib/lab_system/commands/docker_command_test.rb +11 -0
  216. data/lib/lab_system/lab_box.rb +5 -0
  217. data/lib/lab_system/lab_box_test.rb +8 -0
  218. data/lib/lab_system/requests/kroki_request.rb +182 -0
  219. data/lib/lab_system/requests/kroki_request_test.rb +11 -0
  220. data/lib/lab_system/shells/docker_shell.rb +60 -0
  221. data/lib/lab_system/shells/docker_shell_test.rb +61 -0
  222. data/lib/lab_system/shells/kroki_docker_shell.rb +20 -0
  223. data/lib/lab_system/shells/kroki_docker_shell_test.rb +11 -0
  224. data/lib/lab_system.rb +8 -0
  225. data/lib/liza/base/controller.rb +14 -15
  226. data/lib/liza/base/controller_test.rb +28 -2
  227. data/lib/liza/base/panel.rb +48 -6
  228. data/lib/liza/base/panel_test.rb +141 -2
  229. data/lib/liza/base_parts/controller_subsystem_part.rb +93 -0
  230. data/lib/liza/base_parts/panel_rescuer_part.rb +129 -0
  231. data/lib/liza/meta/box.rb +24 -0
  232. data/lib/liza/meta/box_test.rb +20 -0
  233. data/lib/liza/meta/part_test.rb +6 -1
  234. data/lib/liza/meta/system.rb +50 -7
  235. data/lib/liza/meta/system_test.rb +6 -2
  236. data/lib/liza/ruby_tests/app_test.rb +39 -0
  237. data/lib/liza/ruby_tests/class_test.rb +20 -0
  238. data/lib/liza/ruby_tests/module_test.rb +4 -4
  239. data/lib/liza/{ruby_test.rb → ruby_tests/object_test.rb} +1 -1
  240. data/lib/liza/ruby_tests/string_test.rb +3 -1
  241. data/lib/liza/{test → safety}/test.rb +9 -0
  242. data/lib/liza/{test → safety}/test_test.rb +40 -7
  243. data/lib/liza/{test_parts → safety_parts}/test_assertions_advanced_part.rb +1 -1
  244. data/lib/liza/{test_parts → safety_parts}/test_log_part.rb +20 -0
  245. data/lib/liza/{test_parts → safety_parts}/test_subject_part.rb +10 -0
  246. data/lib/liza/safety_parts/test_tree_part.rb +87 -0
  247. data/lib/liza/unit.rb +50 -100
  248. data/lib/liza/unit_parts/unit_classes_part.rb +37 -0
  249. data/lib/liza/unit_parts/unit_classes_part_test.rb +3 -0
  250. data/lib/liza/unit_parts/unit_logging_part.rb +139 -0
  251. data/lib/liza/unit_parts/unit_logging_part_test.rb +3 -0
  252. data/lib/liza/unit_parts/unit_methods_part.rb +35 -0
  253. data/lib/liza/unit_parts/unit_methods_part_test.rb +3 -0
  254. data/lib/liza/unit_parts/unit_procedure_part.rb +2 -2
  255. data/lib/liza/unit_parts/unit_renderer_part.rb +171 -0
  256. data/lib/liza/unit_parts/unit_renderer_part_test.rb +15 -0
  257. data/lib/liza/unit_parts/unit_settings_part.rb +8 -0
  258. data/lib/liza/unit_test.rb +114 -16
  259. data/lib/liza.rb +2 -2
  260. data/lib/lizarb/ruby/class.rb +9 -1
  261. data/lib/lizarb/ruby/string.rb +3 -1
  262. data/lib/lizarb/version.rb +1 -1
  263. data/lib/lizarb.rb +215 -64
  264. data/lib/micro_system/micro_box.rb +5 -0
  265. data/lib/micro_system/micro_box_test.rb +8 -0
  266. data/lib/micro_system.rb +8 -0
  267. data/lib/net_system/net_box.rb +21 -0
  268. data/lib/net_system/{net/net_box_test.rb → net_box_test.rb} +1 -2
  269. data/lib/net_system/{net/panels → sub/client}/client_panel_test.rb +1 -2
  270. data/lib/net_system/{net/controllers → sub/client}/client_test.rb +1 -2
  271. data/lib/net_system/sub/client/generators/client_generator.rb +88 -0
  272. data/lib/net_system/sub/client/generators/client_generator_test.rb +10 -0
  273. data/lib/net_system/sub/database/clients/mongo_client.rb +33 -0
  274. data/lib/net_system/sub/database/clients/mongo_client_test.rb +20 -0
  275. data/lib/net_system/sub/database/clients/mysql_client.rb +29 -0
  276. data/lib/net_system/sub/database/clients/mysql_client_test.rb +23 -0
  277. data/lib/net_system/sub/database/clients/pgsql_client.rb +29 -0
  278. data/lib/net_system/sub/database/clients/pgsql_client_test.rb +25 -0
  279. data/lib/net_system/{net/controllers/client → sub/database/clients}/redis_client.rb +4 -1
  280. data/lib/net_system/{net/controllers/client → sub/database/clients}/redis_client_test.rb +2 -2
  281. data/lib/net_system/{net/controllers/client → sub/database/clients}/sqlite_client.rb +4 -1
  282. data/lib/net_system/{net/controllers/client → sub/database/clients}/sqlite_client_test.rb +2 -2
  283. data/lib/net_system/sub/database/commands/database_command.rb +32 -0
  284. data/lib/net_system/sub/database/commands/database_command_test.rb +11 -0
  285. data/lib/net_system/{net/panels → sub/database}/database_panel_test.rb +1 -2
  286. data/lib/net_system/{net/controllers → sub/database}/database_test.rb +1 -2
  287. data/lib/net_system/sub/database/databases/mongo_db.rb +8 -0
  288. data/lib/net_system/sub/database/databases/mongo_db_test.rb +21 -0
  289. data/lib/net_system/sub/database/databases/mysql_db.rb +8 -0
  290. data/lib/net_system/sub/database/databases/mysql_db_test.rb +21 -0
  291. data/lib/net_system/sub/database/databases/pgsql_db.rb +8 -0
  292. data/lib/net_system/sub/database/databases/pgsql_db_test.rb +21 -0
  293. data/lib/net_system/{net/controllers/database → sub/database/databases}/redis_db_test.rb +1 -1
  294. data/lib/net_system/{net/controllers/database → sub/database/databases}/sqlite_db_test.rb +1 -1
  295. data/lib/net_system/sub/record/generators/record_generator.rb +33 -0
  296. data/lib/net_system/sub/record/generators/record_generator_test.rb +11 -0
  297. data/lib/net_system/sub/record/record_panel.rb +3 -0
  298. data/lib/net_system/sub/record/record_panel_test.rb +11 -0
  299. data/lib/net_system/{net/controllers → sub/record}/record_test.rb +1 -2
  300. data/lib/net_system.rb +8 -1
  301. data/lib/web_system/{dev → sub/rack/commands}/rack_command.rb +7 -5
  302. data/lib/web_system/sub/rack/commands/rack_command_test.rb +11 -0
  303. data/lib/web_system/sub/rack/middle_racks/first_middle_rack.rb +8 -0
  304. data/lib/web_system/sub/rack/middle_racks/first_middle_rack_test.rb +11 -0
  305. data/lib/web_system/sub/rack/middle_racks/last_middle_rack.rb +3 -0
  306. data/lib/web_system/sub/rack/middle_racks/last_middle_rack_test.rb +11 -0
  307. data/lib/web_system/sub/rack/middle_racks/middle_rack.rb +18 -0
  308. data/lib/web_system/sub/rack/middle_racks/middle_rack_test.rb +11 -0
  309. data/lib/web_system/sub/rack/middle_racks/zeitwerk_middle_rack.rb +11 -0
  310. data/lib/web_system/sub/rack/middle_racks/zeitwerk_middle_rack_test.rb +11 -0
  311. data/lib/web_system/sub/rack/rack_panel.rb +52 -0
  312. data/lib/web_system/{web/panels → sub/rack}/rack_panel_test.rb +1 -2
  313. data/lib/web_system/{web/controllers → sub/rack}/rack_test.rb +1 -2
  314. data/lib/web_system/sub/rack/server_racks/agoo_server_rack.rb +53 -0
  315. data/lib/web_system/sub/rack/server_racks/agoo_server_rack_test.rb +11 -0
  316. data/lib/web_system/sub/rack/server_racks/falcon_server_rack.rb +46 -0
  317. data/lib/web_system/sub/rack/server_racks/falcon_server_rack_test.rb +11 -0
  318. data/lib/web_system/sub/rack/server_racks/iodine_server_rack.rb +47 -0
  319. data/lib/web_system/sub/rack/server_racks/iodine_server_rack_test.rb +11 -0
  320. data/lib/web_system/sub/rack/server_racks/puma_server_rack.rb +48 -0
  321. data/lib/web_system/sub/rack/server_racks/puma_server_rack_test.rb +11 -0
  322. data/lib/web_system/sub/rack/server_racks/server_rack.rb +12 -0
  323. data/lib/web_system/sub/rack/server_racks/server_rack_test.rb +11 -0
  324. data/lib/web_system/sub/rack/server_racks/thin_server_rack.rb +85 -0
  325. data/lib/web_system/sub/rack/server_racks/thin_server_rack_test.rb +11 -0
  326. data/lib/web_system/sub/request/commands/request_command.rb +125 -0
  327. data/lib/web_system/sub/request/commands/request_command_test.rb +11 -0
  328. data/lib/web_system/sub/request/generators/request_generator.rb +96 -0
  329. data/lib/web_system/sub/request/generators/request_generator_test.rb +11 -0
  330. data/lib/web_system/sub/request/request_panel.rb +69 -0
  331. data/lib/web_system/sub/request/request_panel_test.rb +54 -0
  332. data/lib/web_system/{web/controllers → sub/request}/request_test.rb +1 -2
  333. data/lib/web_system/sub/request/requests/simple_request.rb +95 -0
  334. data/lib/web_system/sub/request/requests/simple_request_test.rb +11 -0
  335. data/lib/web_system/sub/request/router_requests/router_request.rb +7 -0
  336. data/lib/web_system/sub/request/router_requests/router_request_test.rb +11 -0
  337. data/lib/web_system/sub/request/router_requests/simple_router_request.rb +24 -0
  338. data/lib/web_system/sub/request/router_requests/simple_router_request_test.rb +11 -0
  339. data/lib/web_system/web_box.rb +17 -0
  340. data/lib/web_system/{web/web_box_test.rb → web_box_test.rb} +1 -2
  341. data/lib/web_system.rb +9 -3
  342. data/lib/work_system/work_box.rb +5 -0
  343. data/lib/work_system/work_box_test.rb +8 -0
  344. data/lib/work_system.rb +8 -0
  345. data/lizarb.gemspec +13 -7
  346. metadata +369 -167
  347. data/app/happy/axos/axo.rb +0 -50
  348. data/app_new/dev/benches/objects_bench.rb +0 -83
  349. data/app_new/dev/benches/sorted_bench_test.rb +0 -12
  350. data/app_new/dev_box.rb +0 -14
  351. data/app_new.rb +0 -15
  352. data/exe/lrb +0 -3
  353. data/lib/dev_system/dev/controllers/bench_test.rb +0 -12
  354. data/lib/dev_system/dev/controllers/command/generate_command.rb +0 -9
  355. data/lib/dev_system/dev/controllers/command/generate_command_test.rb +0 -12
  356. data/lib/dev_system/dev/controllers/command/new_command.rb +0 -9
  357. data/lib/dev_system/dev/controllers/command/not_found_command.rb +0 -48
  358. data/lib/dev_system/dev/controllers/command/not_found_command_test.rb +0 -12
  359. data/lib/dev_system/dev/controllers/command/terminal_command.rb +0 -22
  360. data/lib/dev_system/dev/controllers/command/terminal_command_test.rb +0 -12
  361. data/lib/dev_system/dev/controllers/command.rb +0 -13
  362. data/lib/dev_system/dev/controllers/generator.rb +0 -9
  363. data/lib/dev_system/dev/controllers/generator_dsl_main_part.rb +0 -50
  364. data/lib/dev_system/dev/controllers/generators/bench_generator/controller.rb.erb +0 -23
  365. data/lib/dev_system/dev/controllers/generators/bench_generator/controller_test.rb.erb +0 -12
  366. data/lib/dev_system/dev/controllers/generators/bench_generator.rb +0 -12
  367. data/lib/dev_system/dev/controllers/generators/bench_generator_test.rb +0 -12
  368. data/lib/dev_system/dev/controllers/generators/command_generator/controller.rb.erb +0 -41
  369. data/lib/dev_system/dev/controllers/generators/command_generator/controller_test.rb.erb +0 -12
  370. data/lib/dev_system/dev/controllers/generators/command_generator.rb +0 -19
  371. data/lib/dev_system/dev/controllers/generators/command_generator_test.rb +0 -12
  372. data/lib/dev_system/dev/controllers/generators/controller_generator.rb +0 -97
  373. data/lib/dev_system/dev/controllers/generators/controller_generator_test.rb +0 -12
  374. data/lib/dev_system/dev/controllers/generators/generator_generator/generator.rb.erb +0 -18
  375. data/lib/dev_system/dev/controllers/generators/generator_generator/generator_test.rb.erb +0 -12
  376. data/lib/dev_system/dev/controllers/generators/generator_generator/template.rb.erb +0 -9
  377. data/lib/dev_system/dev/controllers/generators/generator_generator/template_test.rb.erb +0 -12
  378. data/lib/dev_system/dev/controllers/generators/generator_generator.rb +0 -30
  379. data/lib/dev_system/dev/controllers/generators/generator_generator_test.rb +0 -12
  380. data/lib/dev_system/dev/controllers/generators/new_generator.rb +0 -117
  381. data/lib/dev_system/dev/controllers/generators/new_generator_test.rb +0 -12
  382. data/lib/dev_system/dev/controllers/generators/not_found_generator.rb +0 -39
  383. data/lib/dev_system/dev/controllers/generators/not_found_generator_test.rb +0 -12
  384. data/lib/dev_system/dev/controllers/generators/record_generator.rb +0 -46
  385. data/lib/dev_system/dev/controllers/generators/record_generator_test.rb +0 -12
  386. data/lib/dev_system/dev/controllers/generators/request_generator.rb +0 -63
  387. data/lib/dev_system/dev/controllers/generators/request_generator_test.rb +0 -12
  388. data/lib/dev_system/dev/controllers/shell/dir_shell.rb +0 -27
  389. data/lib/dev_system/dev/controllers/shell/text_shell.rb +0 -23
  390. data/lib/dev_system/dev/controllers/terminal/irb_terminal_test.rb +0 -12
  391. data/lib/dev_system/dev/controllers/terminal/pry_terminal_test.rb +0 -12
  392. data/lib/dev_system/dev/controllers/terminal.rb +0 -17
  393. data/lib/dev_system/dev/controllers/terminal_test.rb +0 -12
  394. data/lib/dev_system/dev/dev_box.rb +0 -33
  395. data/lib/dev_system/dev/dev_box_test.rb +0 -17
  396. data/lib/dev_system/dev/panels/command_panel.rb +0 -71
  397. data/lib/dev_system/dev/panels/command_panel_test.rb +0 -46
  398. data/lib/dev_system/dev/panels/generator_panel.rb +0 -73
  399. data/lib/dev_system/dev/panels/generator_panel_test.rb +0 -46
  400. data/lib/dev_system/dev/panels/log_panel.rb +0 -13
  401. data/lib/dev_system/dev/panels/log_panel_test.rb +0 -16
  402. data/lib/dev_system/dev/panels/shell_panel.rb +0 -3
  403. data/lib/dev_system/dev/panels/shell_panel_test.rb +0 -12
  404. data/lib/dev_system/dev/panels/terminal_panel.rb +0 -3
  405. data/lib/dev_system/dev/panels/terminal_panel_test.rb +0 -12
  406. data/lib/happy_system/dev/happy_command.rb +0 -11
  407. data/lib/happy_system/happy/controllers/axo.rb +0 -7
  408. data/lib/happy_system/happy/happy_box.rb +0 -8
  409. data/lib/happy_system/happy/happy_box_test.rb +0 -16
  410. data/lib/happy_system/happy/panels/axo_panel.rb +0 -3
  411. data/lib/liza/base/box.rb +0 -90
  412. data/lib/liza/base/box_test.rb +0 -10
  413. data/lib/liza/base_parts/controller_renderer_part.rb +0 -140
  414. data/lib/liza/base_parts/controller_renderer_part_test.rb +0 -16
  415. data/lib/liza/meta/part_extension.rb +0 -16
  416. data/lib/liza/test_parts/test_tree_part.rb +0 -92
  417. data/lib/net_system/dev/net_command.rb +0 -22
  418. data/lib/net_system/net/net_box.rb +0 -13
  419. data/lib/web_system/dev/request_command.rb +0 -129
  420. data/lib/web_system/dev/web_command.rb +0 -9
  421. data/lib/web_system/web/panels/rack_panel.rb +0 -42
  422. data/lib/web_system/web/panels/request_panel.rb +0 -70
  423. data/lib/web_system/web/panels/request_panel_test.rb +0 -33
  424. data/lib/web_system/web/web_box.rb +0 -18
  425. /data/lib/dev_system/{dev/panels → sub/bench}/bench_panel.rb +0 -0
  426. /data/lib/dev_system/{dev/controllers → sub/log}/log.rb +0 -0
  427. /data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/bin_shell.rb +0 -0
  428. /data/lib/liza/{test_parts → safety_parts}/test_assertions_part.rb +0 -0
  429. /data/lib/liza/{test_parts → safety_parts}/test_dsl_part.rb +0 -0
  430. /data/lib/net_system/{net/controllers → sub/client}/client.rb +0 -0
  431. /data/lib/net_system/{net/panels → sub/client}/client_panel.rb +0 -0
  432. /data/lib/net_system/{net/controllers → sub/database}/database.rb +0 -0
  433. /data/lib/net_system/{net/panels → sub/database}/database_panel.rb +0 -0
  434. /data/lib/net_system/{net/controllers/database → sub/database/databases}/redis_db.rb +0 -0
  435. /data/lib/net_system/{net/controllers/database → sub/database/databases}/sqlite_db.rb +0 -0
  436. /data/lib/net_system/{net/controllers → sub/record}/record.rb +0 -0
  437. /data/lib/web_system/{web/controllers → sub/rack}/rack.rb +0 -0
  438. /data/lib/web_system/{web/controllers → sub/request}/request.rb +0 -0
  439. /data/lib/web_system/{web/controllers/request → sub/request/requests}/client_error_request.rb +0 -0
  440. /data/lib/web_system/{web/controllers/request → sub/request/requests}/not_found_request.rb +0 -0
  441. /data/lib/web_system/{web/controllers/request → sub/request/requests}/server_error_request.rb +0 -0
@@ -1,6 +1,14 @@
1
1
  class Liza::UnitSettingsPart < Liza::Part
2
2
 
3
3
  insertion do
4
+ def self.methods_for_settings
5
+ [:add, :fetch, :get, :set, :settings].sort
6
+ end
7
+
8
+ def self.instance_methods_for_settings
9
+ [:add, :fetch, :get, :set, :settings].sort
10
+ end
11
+
4
12
  def self.settings
5
13
  @settings ||= {}
6
14
  end
@@ -3,13 +3,122 @@ class Liza::UnitTest < Liza::Test
3
3
  assert subject_class == Liza::Unit
4
4
  end
5
5
 
6
+ #
7
+
8
+ def self.test_methods_defined(&block)
9
+ helper = TestMethodsDefinedHelper.new
10
+ helper.instance_eval(&block)
11
+
12
+ test :subject_class, :methods_defined do
13
+ a = subject_class.methods_defined
14
+ b = helper.methods
15
+ assert_equality a, b, kaller: helper.methods_caller
16
+ end
17
+
18
+ test :subject_class, :instance_methods_defined do
19
+ a = subject_class.instance_methods_defined
20
+ b = helper.instance_methods
21
+ assert_equality a, b, kaller: helper.instance_methods_caller
22
+ end
23
+ end
24
+
25
+ class TestMethodsDefinedHelper
26
+ attr_reader :methods, :methods_caller
27
+ attr_reader :instance_methods, :instance_methods_caller
28
+
29
+ def initialize
30
+ @methods, @instance_methods = [], []
31
+ @methods_caller, @instance_methods_caller = caller, caller
32
+ end
33
+
34
+ def on_self(*args)
35
+ @methods = args
36
+ @methods_caller = caller
37
+ end
38
+
39
+ def on_instance(*args)
40
+ @instance_methods = args
41
+ @instance_methods_caller = caller
42
+ end
43
+ end
44
+
45
+ #
46
+
47
+ test :subject_class, :methods_defined do
48
+ a = \
49
+ subject_class.methods_defined -
50
+ subject_class.methods_for_settings -
51
+ subject_class.methods_for_logging -
52
+ subject_class.methods_for_rendering
53
+ b = [
54
+ :descendants_select,
55
+ :division,
56
+ :instance_methods_defined, :instance_methods_for_logging, :instance_methods_for_rendering, :instance_methods_for_settings,
57
+ :methods_defined, :methods_for_logging, :methods_for_rendering, :methods_for_settings,
58
+ :namespace,
59
+ :part,
60
+ :procedure, :proceed,
61
+ :reload!,
62
+ :subclasses_select, :system, :system?,
63
+ :test_class
64
+ ]
65
+ assert_equality a, b
66
+ end
67
+
68
+ test :subject_class, :instance_methods_defined do
69
+ a = \
70
+ subject_class.instance_methods_defined -
71
+ subject_class.instance_methods_for_settings -
72
+ subject_class.instance_methods_for_logging -
73
+ subject_class.instance_methods_for_rendering
74
+ b = [:procedure, :proceed, :reload!, :system]
75
+ assert_equality a, b
76
+ end
77
+
78
+ test :subject_class, :methods_for_settings do
79
+ a = subject_class.methods_for_settings
80
+ b = [:add, :fetch, :get, :set, :settings]
81
+ assert_equality a, b
82
+ end
83
+
84
+ test :subject_class, :instance_methods_for_settings do
85
+ a = subject_class.instance_methods_for_settings
86
+ b = [:add, :fetch, :get, :set, :settings]
87
+ assert_equality a, b
88
+ end
89
+
90
+ test :subject_class, :methods_for_rendering do
91
+ a = subject_class.methods_for_rendering
92
+ b = [:erbs_available, :erbs_defined, :erbs_for, :renderable_formats_for, :renderable_names]
93
+ assert_equality a, b
94
+ end
95
+
96
+ test :subject_class, :instance_methods_for_rendering do
97
+ a = subject_class.instance_methods_for_rendering
98
+ b = [:render, :render!, :render_stack]
99
+ assert_equality a, b
100
+ end
101
+
102
+ test :subject_class, :methods_for_logging do
103
+ a = subject_class.methods_for_logging
104
+ b = [:log, :log?, :log_array, :log_hash, :log_level, :log_level?, :log_levels, :stick, :sticks]
105
+ assert_equality a, b
106
+ end
107
+
108
+ test :subject_class, :instance_methods_for_logging do
109
+ a = subject_class.instance_methods_for_logging
110
+ b = [:log, :log?, :log_array, :log_hash, :log_level, :log_level?, :log_levels, :log_render_convert, :log_render_in, :log_render_out, :stick, :sticks]
111
+ assert_equality a, b
112
+ end
113
+
6
114
  test :settings do
7
- assert subject_class.get(:log_level) == :normal
8
- assert subject_class.get(:log_color) == :white
9
- assert subject_class.log_level == :normal
10
- assert subject_class.log_color == :white
115
+ assert_equality subject_class.get(:log_level), 0
116
+ assert_equality subject_class.log_level, 0
11
117
 
12
- assert subject_class.settings == {log_level: :normal, log_color: :white}
118
+ assert_equality subject_class.settings, {
119
+ log_level: 0,
120
+ division: Liza::Controller,
121
+ }
13
122
  end
14
123
 
15
124
  test :settings_inheritance do
@@ -74,15 +183,4 @@ class Liza::UnitTest < Liza::Test
74
183
  assert class_b.get(:hash) == {a: 10, b: 20, c: 30, d: 40}
75
184
  end
76
185
 
77
- test :build_log_sidebar_for do
78
- assert_equality "DevSystem::Command:call ", build_log_sidebar_for(DevSystem::Command, "call", ":", panel_key: nil)
79
- assert_equality "DevSystem::TestCommand#call ", build_log_sidebar_for(DevSystem::TestCommand, "call", "#", panel_key: nil)
80
- assert_equality "DevBox[:command].call ", build_log_sidebar_for(DevBox, "call", ".", panel_key: :command)
81
- end
82
-
83
- def build_log_sidebar_for source, method_key, method_sep, panel_key: nil
84
- s = subject_class.build_log_sidebar_for source, method_key, method_sep, panel_key: panel_key
85
- s.uncolorize
86
- end
87
-
88
186
  end
data/lib/liza.rb CHANGED
@@ -9,7 +9,7 @@ module Liza
9
9
  module_function
10
10
 
11
11
  def log s
12
- puts s.bold
12
+ puts s
13
13
  end
14
14
 
15
15
  #
@@ -33,7 +33,7 @@ module Liza
33
33
 
34
34
  nil
35
35
  rescue NameError
36
- log "Liza const #{name} not found!"
36
+ log "Liza const #{name} not found!" if $VERBOSE
37
37
  if Lizarb.ruby_supports_raise_cause?
38
38
  raise ConstNotFound, name, cause: nil
39
39
  else
@@ -1,12 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Class
4
- public :eval
5
4
 
6
5
  def descendants
7
6
  ObjectSpace.each_object(Class).select { |klass| klass < self }
8
7
  end
9
8
 
9
+ def and_descendants
10
+ ObjectSpace.each_object(Class).select { |klass| klass <= self }
11
+ end
12
+
13
+ def ancestors_until klass
14
+ ancestors.take_while { _1 <= klass }
15
+ end
16
+
10
17
  def first_namespace
11
18
  name.rpartition('::')[0]
12
19
  end
@@ -14,4 +21,5 @@ class Class
14
21
  def last_namespace
15
22
  name.rpartition('::')[-1]
16
23
  end
24
+
17
25
  end
@@ -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.4"
4
+ VERSION = "1.0.5"
5
5
  end
data/lib/lizarb.rb CHANGED
@@ -1,5 +1,10 @@
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"
@@ -13,12 +18,18 @@ $APP ||= "app"
13
18
  module Lizarb
14
19
  class Error < StandardError; end
15
20
  class ModeNotFound < Error; end
21
+ class SystemNotFound < Error; end
16
22
 
17
23
  #
18
24
 
19
- SPEC = Gem::Specification.find_by_name("lizarb")
20
- GEM_DIR = SPEC.gem_dir
21
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
22
33
 
23
34
  IS_APP_DIR = File.file? "#{CUR_DIR}/app.rb"
24
35
  IS_LIZ_DIR = File.file? "#{CUR_DIR}/lib/lizarb.rb"
@@ -33,11 +44,8 @@ module Lizarb
33
44
  module_function
34
45
 
35
46
  def log s
36
- puts s.bold
37
- end
38
-
39
- def self.logv s
40
- log s if $VERBOSE
47
+ print "#{$boot_time.diff}s " if defined? $log_boot_low
48
+ puts s
41
49
  end
42
50
 
43
51
  # Returns Lizarb::VERSION as a Gem::Version
@@ -54,10 +62,6 @@ module Lizarb
54
62
  RUBY_ENGINE != "jruby"
55
63
  end
56
64
 
57
- def self.load_all
58
- Zeitwerk::Loader.eager_load_all
59
- end
60
-
61
65
  # called from exe/lizarb
62
66
  def setup
63
67
  lookup_and_load_core_ext
@@ -76,31 +80,44 @@ module Lizarb
76
80
 
77
81
  # called from exe/lizarb
78
82
  def call
83
+ require "bundler/setup"
84
+
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
93
+
79
94
  lookup_and_set_mode
80
- lookup_and_require_dependencies
81
95
  lookup_and_load_settings
82
- require_liza_and_bundle_systems
96
+ require_liza_and_systems
97
+ connect_systems
83
98
  end
84
99
 
85
100
  # called from exe/lizarb
86
- def exit verbose: $VERBOSE
87
- exit_messages if verbose
101
+ def exit
102
+ exit_messages if defined? $log_boot_normal
88
103
  super 0
89
104
  end
90
105
 
91
106
  def exit_messages
92
- versions = {
107
+ info = {
93
108
  ruby: RUBY_VERSION,
94
109
  bundler: Bundler::VERSION,
95
110
  zeitwerk: Zeitwerk::VERSION,
96
111
  lizarb: VERSION,
97
112
  app: $APP,
98
- mode: $MODE
113
+ mode: App.mode,
114
+ log_boot: App.log_boot,
115
+ log_level: App.get(:log_level),
99
116
  }
100
- bugs = SPEC.metadata["bug_tracker_uri"]
101
- puts versions.to_s.green
102
- puts "Report bugs at #{bugs}"
103
- puts "Fork us on Github at #{bugs}/fork"
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"
104
121
  end
105
122
 
106
123
  # setup phase
@@ -164,35 +181,34 @@ module Lizarb
164
181
  # call phase
165
182
 
166
183
  def lookup_and_set_mode
167
- raise ModeNotFound, "App #{$APP} has no modes" if App.modes.empty?
168
-
169
- mode = ENV["MODE"]
170
- mode ||= App.modes.first
171
- mode = mode.to_sym
172
-
173
- raise ModeNotFound, "MODE `#{mode}` is not included in #{App.modes}" unless App.modes.include? mode
184
+ log " Lizarb.#{__method__}" if defined? $log_boot_low
174
185
 
175
- log "#{self}.#{__method__} #{mode.inspect}" if $VERBOSE
176
- $MODE = mode
177
- end
178
-
179
- def lookup_and_require_dependencies
180
- require "bundler/setup"
181
- Bundler.require :default, *App.systems.keys
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
182
190
  end
183
191
 
184
192
  def lookup_and_load_settings
185
- files = ["#{$APP}.#{$MODE}.env", "#{$APP}.env"]
193
+ log " Lizarb.#{__method__}" if defined? $log_boot_low
194
+ files = ["#{$APP}.#{$mode}.env", "#{$APP}.env"]
186
195
  require "dotenv"
187
196
  Dotenv.load(*files)
188
197
  end
189
198
 
190
- def require_liza_and_bundle_systems
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
+
191
204
  require "zeitwerk"
192
205
  require "liza"
193
206
 
194
- # App.loaders[0] first loads Liza, then each System class
195
- App.loaders << loader = Zeitwerk::Loader.new
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
196
212
  loader.tag = Liza.to_s
197
213
 
198
214
  # collapse Liza paths
@@ -206,19 +222,27 @@ module Lizarb
206
222
  loader.enable_reloading
207
223
  loader.setup
208
224
 
225
+ # bundle each System gem
226
+
227
+ Bundler.require :systems
228
+
209
229
  # load each System class
210
230
 
231
+ log " App.systems is Hash containing all system classes" if defined? $log_boot_lowest
211
232
  App.systems.keys.each do |k|
212
233
  key = "#{k}_system"
213
234
 
214
- App.require_system key
235
+ require_system key
215
236
  klass = Object.const_get key.camelize
216
237
 
217
238
  App.systems[k] = klass
218
239
  end
219
240
 
220
- # App.loaders[1] first loads each System, then the App
221
- App.loaders << loader = Zeitwerk::Loader.new
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
222
246
 
223
247
  # collapse each System paths
224
248
 
@@ -230,46 +254,55 @@ module Lizarb
230
254
 
231
255
  # cherrypick App paths
232
256
 
233
- app_dir = "#{APP_DIR}/#{$APP}"
234
- logv "Lizarb app loader #{app_dir}".on_cyan
235
- list = Dir["#{app_dir}/*"].to_set
236
- logv "Lizarb app loader lists #{list.count} entries to review".on_cyan
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
237
262
 
238
- if list.empty?
239
- logv "no #{app_dir} found".red
263
+ if app_dir.nil? || list.empty?
264
+ log " Application Directory is empty" if defined? $log_boot_lowest
240
265
  else
241
- logv "Lizarb app loader found #{app_dir}\t\tCollapsing #{app_dir}/*".on_cyan
266
+ log " Application Directory found #{list.count} items to collapse" if defined? $log_boot_lowest
242
267
 
243
268
  to_collapse = []
244
269
 
245
270
  App.systems.each do |k, klass|
271
+ next if klass.subs.empty?
246
272
  box_dir = "#{app_dir}/#{k}"
247
273
  box_file = "#{box_dir}_box.rb"
248
274
 
249
275
  if !list.include? box_file
250
- logv "Lizarb app loader missd #{box_file}".on_light_black
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
251
290
  else
252
- logv "Lizarb app loader found #{box_file}\t\tto_collapse!".on_cyan
253
- to_collapse << box_file
254
-
255
- if !list.include? box_dir
256
- logv "Lizarb app loader missd #{box_dir}".on_light_black
257
- else
258
- logv "Lizarb app loader found #{box_dir}\t\tto_collapse!".on_cyan
259
- to_collapse << box_dir
260
- end
291
+ log " Found controllers #{box_dir}" if defined? $log_boot_lowest
292
+ to_collapse << box_dir
261
293
  end
294
+
262
295
  end
263
296
 
264
297
  # ORDER MATTERS: IGNORE, COLLAPSE, PUSH
265
298
  to_ignore = list - to_collapse
266
299
  to_ignore.each do |file|
267
- logv "Lizarb app loader missd #{file}\t\tSkipping this one".on_light_black
300
+ log " Ignoring #{file}" if $log_boot_lowest
268
301
  loader.ignore file
269
302
  end
270
303
 
271
304
  to_collapse.each do |path|
272
- logv "Lizarb app loader collapsing #{path}".on_cyan
305
+ log " Collapsing #{path}" if $log_boot_lowest
273
306
  if path.end_with? ".rb"
274
307
  loader.collapse path
275
308
  else
@@ -288,11 +321,129 @@ module Lizarb
288
321
 
289
322
  # App connects to systems
290
323
 
291
- App.systems.each do |k, klass|
292
- App.connect_system k, klass
324
+ log " Zeitwerk loaders eager load" if defined? $log_boot_lowest
325
+ loaders.map &:eager_load
326
+ end
327
+
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
293
333
  end
334
+ end
294
335
 
295
- App.systems.freeze
336
+ # systems
337
+
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", []
344
+ end
345
+
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
296
447
  end
297
448
 
298
449
  # thread management
@@ -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