localtower 1.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +133 -33
  3. data/app/assets/javascripts/localtower/application.js +30830 -0
  4. data/app/assets/javascripts/localtower/application.js.map +7 -0
  5. data/app/assets/stylesheets/localtower/application.css +1179 -0
  6. data/app/assets/stylesheets/src/application.css +68 -0
  7. data/app/controllers/localtower/pages_controller.rb +20 -35
  8. data/app/javascript/application.js +46 -0
  9. data/app/javascript/components/DarkSelect.js +115 -0
  10. data/app/javascript/components/ModernTooltip.js +26 -0
  11. data/app/javascript/components/NewMigrationForm.js +687 -0
  12. data/app/javascript/components/NewModelForm.js +432 -0
  13. data/app/javascript/components/data/Stores.js +294 -0
  14. data/app/views/layouts/localtower/application.html.erb +80 -66
  15. data/app/views/localtower/_migration.html.erb +30 -0
  16. data/app/views/localtower/pages/_alert_no_models.html.erb +1 -1
  17. data/app/views/localtower/pages/migrations.html.erb +24 -55
  18. data/app/views/localtower/pages/new_migration.html.erb +33 -96
  19. data/app/views/localtower/pages/new_model.html.erb +17 -83
  20. data/config/routes.rb +1 -1
  21. data/lib/localtower/engine.rb +9 -2
  22. data/lib/localtower/generators/migration.rb +218 -91
  23. data/lib/localtower/generators/model.rb +29 -20
  24. data/lib/localtower/generators/service_objects/insert_array.rb +5 -3
  25. data/lib/localtower/generators/service_objects/insert_defaults.rb +73 -3
  26. data/lib/localtower/generators/service_objects/insert_foreign_keys.rb +35 -0
  27. data/lib/localtower/generators/service_objects/insert_indexes.rb +41 -18
  28. data/lib/localtower/generators/service_objects/insert_nullable.rb +5 -3
  29. data/lib/localtower/status.rb +3 -1
  30. data/lib/localtower/tools.rb +20 -9
  31. data/lib/localtower/version.rb +1 -1
  32. data/lib/localtower.rb +0 -6
  33. data/public/com/favicon-64.png +0 -0
  34. data/public/com/twitter-cover-1.png +0 -0
  35. data/public/com/twitter-cover-2.png +0 -0
  36. data/public/fonts/Circular/CircularStd-Black.otf +0 -0
  37. data/public/fonts/Circular/CircularStd-BlackItalic.otf +0 -0
  38. data/public/fonts/Circular/CircularStd-Bold.otf +0 -0
  39. data/public/fonts/Circular/CircularStd-BoldItalic.otf +0 -0
  40. data/public/fonts/Circular/CircularStd-Book.otf +0 -0
  41. data/public/fonts/Circular/CircularStd-BookItalic.otf +0 -0
  42. data/public/fonts/Circular/CircularStd-Light Italic.otf +0 -0
  43. data/public/fonts/Circular/CircularStd-Light.otf +0 -0
  44. data/public/fonts/Circular/CircularStd-Medium.otf +0 -0
  45. data/public/fonts/Circular/CircularStd-MediumItalic.otf +0 -0
  46. data/public/fonts/Circular/Read Me.txt +5 -0
  47. data/public/fonts/Circular/www.dfonts.org.url +2 -0
  48. data/public/screenshots/v0.1.1/1_schema.png +0 -0
  49. data/public/screenshots/v0.1.1/2_models_1.png +0 -0
  50. data/public/screenshots/v0.1.1/2_models_2.png +0 -0
  51. data/public/screenshots/v0.1.1/3_relations.png +0 -0
  52. data/public/screenshots/v0.1.1/4_migrations.png +0 -0
  53. data/public/screenshots/v0.1.6/1_schema.png +0 -0
  54. data/public/screenshots/v0.1.6/2_models_1.png +0 -0
  55. data/public/screenshots/v0.1.6/3_relations.png +0 -0
  56. data/public/screenshots/v0.1.6/4_migrations.png +0 -0
  57. data/public/screenshots/v0.1.6/5_capture.png +0 -0
  58. data/public/screenshots/v1.0.0/migrations.png +0 -0
  59. data/public/screenshots/v1.0.0/models.png +0 -0
  60. data/public/screenshots/v1.0.0/new_migration.png +0 -0
  61. data/public/screenshots/v1.0.0/new_model.png +0 -0
  62. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.44.30.jpg +0 -0
  63. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.44.42.jpg +0 -0
  64. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.44.54.jpg +0 -0
  65. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.48.21.jpg +0 -0
  66. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.48.28.jpg +0 -0
  67. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.48.51.jpg +0 -0
  68. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.49.09.jpg +0 -0
  69. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.50.04.jpg +0 -0
  70. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.50.11.jpg +0 -0
  71. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.50.19.jpg +0 -0
  72. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.51.47.jpg +0 -0
  73. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.51.48.jpg +0 -0
  74. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.52.02.jpg +0 -0
  75. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.52.18.jpg +0 -0
  76. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.52.26.jpg +0 -0
  77. data/public/screenshots/v2.0.0/Screenshot 2024-11-18 at 22.52.38.jpg +0 -0
  78. data/public/screenshots/v2.0.0/migrations.png +0 -0
  79. data/public/screenshots/v2.0.0/new_migration.png +0 -0
  80. data/public/screenshots/v2.0.0/new_model.png +0 -0
  81. data/public/vendor/jquery-3.7.1.min.js +2 -0
  82. data/public/vendor/lucide.min.js +12 -0
  83. data/public/vendor/monokai-sublime.css +80 -0
  84. data/public/vendor/rails-ujs.min.js +8 -0
  85. data/spec/dummy/Gemfile +1 -1
  86. data/spec/dummy/Gemfile.lock +146 -104
  87. data/spec/dummy/config/database.yml +4 -6
  88. data/spec/dummy/config/puma.rb +1 -1
  89. data/spec/dummy/db/schema.rb +2 -39
  90. data/spec/dummy/lib/tasks/reset.rake +16 -0
  91. data/spec/dummy/log/development.log +22746 -15994
  92. data/spec/dummy/log/localtower.log +747 -1891
  93. data/spec/dummy/log/test.log +1145 -0
  94. data/spec/dummy/tmp/cache/sessions/localtower/726/FE1/_session_id%3A2%3A%3A69d6764784f832ea25700ea2f242210f3f8d94b48912b0f09ffc44311f0376eb +0 -0
  95. data/spec/dummy/tmp/cache/sessions/localtower/77E/121/_session_id%3A2%3A%3A0b3c1fe7154461ba023ba6c81dd1b999348757880b505f4b082faed263a627f9 +1 -0
  96. data/spec/dummy/tmp/cache/sessions/localtower/7EB/8A1/_session_id%3A2%3A%3Af88237c1d157546a5dcde894fd6c1410162a8eba318748d4ac573ee75e40df16 +0 -0
  97. data/spec/dummy/tmp/local_secret.txt +1 -0
  98. data/spec/factories/migration.rb +77 -40
  99. data/spec/factories/model.rb +46 -26
  100. data/spec/lib/localtower/generators/migration_spec.rb +16 -24
  101. data/spec/lib/localtower/generators/model_spec.rb +71 -8
  102. data/spec/lib/localtower/generators/service_objects/insert_array_spec.rb +1 -1
  103. data/spec/lib/localtower/generators/service_objects/insert_defaults_spec.rb +1 -1
  104. data/spec/lib/localtower/generators/service_objects/insert_foreign_keys_spec.rb +101 -0
  105. data/spec/lib/localtower/generators/service_objects/insert_indexes_spec.rb +1 -1
  106. data/spec/lib/localtower/generators/service_objects/insert_nullable_spec.rb +2 -2
  107. data/spec/spec_helper.rb +2 -3
  108. metadata +107 -238
  109. data/app/views/localtower/pages/models.html.erb +0 -63
  110. data/public/css/app.css +0 -55
  111. data/public/js/app.js +0 -337
  112. data/public/light-bootstrap-dashboard-master/assets/css/animate.min.css +0 -6
  113. data/public/light-bootstrap-dashboard-master/assets/css/bootstrap.min.css +0 -5
  114. data/public/light-bootstrap-dashboard-master/assets/css/demo.css +0 -61
  115. data/public/light-bootstrap-dashboard-master/assets/css/light-bootstrap-dashboard.css +0 -2789
  116. data/public/light-bootstrap-dashboard-master/assets/css/pe-icon-7-stroke.css +0 -632
  117. data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.eot +0 -0
  118. data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.svg +0 -212
  119. data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.ttf +0 -0
  120. data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.woff +0 -0
  121. data/public/light-bootstrap-dashboard-master/assets/img/default-avatar.png +0 -0
  122. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-0.jpg +0 -0
  123. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-1.jpg +0 -0
  124. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-2.jpg +0 -0
  125. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-3.jpg +0 -0
  126. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-4.jpg +0 -0
  127. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-5.jpg +0 -0
  128. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-6.jpg +0 -0
  129. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-7.jpg +0 -0
  130. data/public/light-bootstrap-dashboard-master/assets/img/faces/tim_vector.jpe +0 -0
  131. data/public/light-bootstrap-dashboard-master/assets/img/favicon.ico +0 -0
  132. data/public/light-bootstrap-dashboard-master/assets/img/loading-bubbles.svg +0 -14
  133. data/public/light-bootstrap-dashboard-master/assets/img/mask.png +0 -0
  134. data/public/light-bootstrap-dashboard-master/assets/img/new_logo.png +0 -0
  135. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-1.jpg +0 -0
  136. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-2.jpg +0 -0
  137. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-3.jpg +0 -0
  138. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-4.jpg +0 -0
  139. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-5.jpg +0 -0
  140. data/public/light-bootstrap-dashboard-master/assets/img/tim_80x80.png +0 -0
  141. data/public/light-bootstrap-dashboard-master/assets/js/bootstrap-checkbox-radio-switch.js +0 -502
  142. data/public/light-bootstrap-dashboard-master/assets/js/bootstrap-notify.js +0 -404
  143. data/public/light-bootstrap-dashboard-master/assets/js/bootstrap-select.js +0 -438
  144. data/public/light-bootstrap-dashboard-master/assets/js/bootstrap.min.js +0 -7
  145. data/public/light-bootstrap-dashboard-master/assets/js/chartist.min.js +0 -9
  146. data/public/light-bootstrap-dashboard-master/assets/js/demo.js +0 -152
  147. data/public/light-bootstrap-dashboard-master/assets/js/jquery-1.10.2.js +0 -9789
  148. data/public/light-bootstrap-dashboard-master/assets/js/light-bootstrap-dashboard.js +0 -179
  149. data/public/logo-localtower-white-300.png +0 -0
  150. data/public/logo-localtower-white.png +0 -0
  151. data/public/logo-localtower.png +0 -0
  152. data/public/vendor/font-awesome.min.css +0 -4
  153. data/public/vendor/highlight-js-default.min.css +0 -9
  154. data/spec/dummy/app/models/post.rb +0 -3
  155. data/spec/dummy/app/models/user.rb +0 -3
  156. data/spec/dummy/db/migrate/20230119221452_create_users.rb +0 -14
  157. data/spec/dummy/db/migrate/20230119221751_change_users_at1674166670.rb +0 -7
  158. data/spec/dummy/db/migrate/20230119222054_create_posts.rb +0 -11
  159. data/spec/dummy/db/migrate/20230119222106_change_posts_at1674166865.rb +0 -5
  160. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-Y/-YOiiBKqc2UODHFjctm8xc7xFoZaL7zOjWQj6qQ2wyE.cache +0 -1
  161. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-d/-dwueM4vmPt8L51S3jeSyg_AjGDcj0GUN6pDpCA1gCg.cache +0 -3
  162. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/0g/0gaJnJQdtd2ACbihXxn8OnjLWlDjnQ_WxfgOpbiLzhg.cache +0 -1
  163. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/0r/0rFCsCV9kZnEYtZZ6sfig8329OU31bqjecDFqSVank8.cache +0 -1
  164. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/1J/1J2k_CpnQE3d-PZAQwOVGQALGkta4qVvhdsKjgG0e4Q.cache +0 -0
  165. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2p/2pYVH2Z_syqh6ok8QYxJNKxXpx1Iwppf6JGElZI0gpw.cache +0 -0
  166. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/3W/3WBmqd-2V6q5N-jvbyp-tlcfn3aHYMwBppbOUm7x4qg.cache +0 -1
  167. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/4K/4KFPlHkhdDW0riGUmlbaR-kmDz6JUnQvY6fwW8qsdaE.cache +0 -3
  168. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/6x/6xMeRWmLpNK_flx6-JA3KazvUxSCxyPxHv9Zm3eC26Q.cache +0 -1
  169. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7d/7dNqI_dCDJLJmI1oM4xwFp9nRRNOem-4P4OD7PMyz2E.cache +0 -0
  170. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8X/8XquhxVcp5A8QquLtxO8NgKTMJch0eqQmzFmRGIZP6I.cache +0 -1
  171. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ah/AhdfXXtU63kXS4TnsH2Vi1yWgVkIEeV8Z8XA68hrNQc.cache +0 -0
  172. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Bt/BtAePnwLSGw82xUGI7wuhWDfuwarOQVS91YqCsweMcs.cache +0 -0
  173. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Bx/BxzoG0KxeNLac4xTNeJv3qfeytbNBw58xj2zD-xdbrE.cache +0 -2
  174. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/CC/CCD0ROPX0yxHwNpVZmuP8ZNtgQpaVCMXpdzC0Wb5n24.cache +0 -1
  175. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/DS/DS43oxBg6K5PMWLn2mTy_4EnxI03ehHkxpjV7NCi8yM.cache +0 -1
  176. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Do/Do83AoOat5W-c1g7piDGy2GMmffsY6JY0Qfuh5PY3GM.cache +0 -2
  177. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/EI/EI0Nxk-VRATWstMuVCVc0_GdYlQ-a0dx6n2g0l3vIik.cache +0 -0
  178. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/EN/ENhJnzJAU2IK-7aHqubj9N8Jo_UTmjG_VEQqyIkolQ8.cache +0 -1
  179. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Fc/FcS6VUHN3Bd4pHGqd5NHA8jA4OLwWrU94s3b4GGxX9c.cache +0 -1
  180. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/G0/G0kukI-r0q0Vbrg6e_jnYJoYcOX8K__h-mwKbCf4twE.cache +0 -0
  181. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/I1/I1Jw08-mz8xzgrgi6giCzpf1UmzGTSbl4eJEw4DAoJM.cache +0 -1
  182. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/IV/IVOO1dXBmgjieDk__g57p6aYt0Z3CmfTa32jhegoyko.cache +0 -3
  183. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/JY/JYPmv5WP4wxdI9EKEEPkK_fVtqeSLfmint_5E8fQLQ8.cache +0 -1
  184. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/MX/MXI3KxaQPZGImSvCNZ_TbQVruWCJ3E0xiVxza1ZCAjM.cache +0 -1
  185. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/OU/OUoioCqXALK909jXPV3VSyCJIdNC7bsogUfdnRTpc5o.cache +0 -1
  186. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/PH/PHjtqNLUPAUDiSlu5AbPjlIo20mOGNm0uNjMLhX2NvM.cache +0 -0
  187. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/RC/RC9vfALY5K634pTeau0BAhTHl7d5_5yA3tM-QTLiKtI.cache +0 -0
  188. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/RG/RG1PrmlixwaUlG8BV0kcm_3F7OQekxsrLYjBdf403-k.cache +0 -2
  189. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ut/UtoMO6n6FHTpRCGk9VfxlfTI2Ao2GYJ_6kMzx3B9VH8.cache +0 -1
  190. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/VE/VExnbpDk3LxYdPk3htUrZQXPI8NK_zlKtSFfVXJlxU4.cache +0 -1
  191. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Wm/WmKTjykiU-Tx_Faf5zduEeEQ-DozAs5omKToM2l1cZM.cache +0 -0
  192. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/X-/X-KjhDPd0nI155N_FaxFSgaOiYo0_ytqlmkBlLM7ayw.cache +0 -1
  193. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/XX/XXVhj-O91tJ5c8pz7DQlTABOv8TIRVg5haw9VOq9HuI.cache +0 -1
  194. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/YC/YCiifo5NCMwDChFqYFiV4EaYEx8hy3Efle1PsGbIdak.cache +0 -1
  195. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ya/YayMISAqD-Y3vBFywwKrXbUovGf5o77HUF5s8mnQgO0.cache +0 -0
  196. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Zl/Zl-NEb0aDLmZ9gN4gdY1OYlbUXD4JhkFY_y23m55zmo.cache +0 -0
  197. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_h/_hnjPptBeD3GP5B0iJR6pvyVkiMiq-o2TxaYmGf9KJo.cache +0 -3
  198. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_p/_poEF6QbTPYJiQCFGoXxIXjmvcn6T0I87ElzJGHguk0.cache +0 -1
  199. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/aa/aaSj2zt8ddc87nZqTpOI9gRCKVnoalXKFBww7t4t3Kg.cache +0 -0
  200. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/bZ/bZHWUkrOLp0WM_Ogo36Qjt4cxDt-rOFgtcj4LNB-BVE.cache +0 -1
  201. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/cP/cPSNG_663TNT944Rke919luRS6FtpMwVc_7aDph645w.cache +0 -1
  202. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ce/ceq8fcZGIoqWrCl9vrCRrywEdx42iy9PrGG9CwFSIF4.cache +0 -0
  203. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/cl/cljhP0Jc018nLnG1rpdg-FUf6mlIqrQYvXTNXTNG9Bw.cache +0 -0
  204. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dm/dmod3fTZdoKso2FGM5RTQtb4kTB6vywsiXLWDygYFN4.cache +0 -1
  205. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dy/dySDGcUTqlKx2MTvOmIEP-WzhyhCfU5xhN9qgxbz3rI.cache +0 -0
  206. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gQ/gQYdmEzbLjTcFCnsfzXzEmeminOchF263snAk3IvXM0.cache +0 -1
  207. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gh/ghvuMAqccBGljlmEaI3Gt5tH5rEg6hseKYMYfRMkHdY.cache +0 -1
  208. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gt/gt8QC7k92A4hXA3HlCpQulW73tqd6x63I3uT-YrGMj0.cache +0 -1
  209. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hf/hfVg-y7dPSQKbb7V3I7M5w7IpOhDiIB2H31d2tmbZMU.cache +0 -0
  210. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/iF/iFLwyhZIu1Jxm77NUT2qWeTDMmyELW4U85t9rGE_KVg.cache +0 -0
  211. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/kF/kFlIcBBnSyKE00OjpM90pqSn93mLMUv9esz86nrO-Cs.cache +0 -1
  212. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ma/MazNt_5OaYexRuZnccZZ_7AONlxn1a4W3KdWyHyBdws.cache +0 -0
  213. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ma/ma3w08gnDTeqwY2-C9BlToxA6-AS8bvXlu-nBiz0UYs.cache +0 -1
  214. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -2
  215. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -2
  216. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pv/pv6tV3CDkIAmLXdU8EPLlNEkXAKJPufVD4VP30o4fWo.cache +0 -0
  217. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache +0 -2
  218. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/sY/sYvTb1uPWWmnHJNXKuW_xSco-aUb-rN2f0J35zSIzuc.cache +0 -1
  219. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/su/suQ_jjDxRiIn4VEqFJYKaBWJILaeGKBvoTv49XNX0vo.cache +0 -1
  220. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/u8/u8IrW5IIQ7espwk2Vpk23zheL9YZA0tnbKq9X7E-WA0.cache +0 -1
  221. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/wh/whzETExjcZCkn4msasD2aylgfhfpKPZrNxTkY-SOIDg.cache +0 -2
  222. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/x7/x7PYh8DJvPykcEqpVab2vcY9-GFz-3cqtoMlRAu94Uc.cache +0 -2
  223. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/y6/y6oxsJD3pAY9ph1_5M-77uiEjTVw8BheLZNygCKPm1g.cache +0 -1
  224. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/yH/yHZ-a1J23ZCf2n5mEHINMz23Iec2cLGTKauW7k4yGTE.cache +0 -0
  225. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/z7/z7KfUWYoSaGq8tQ5mbHwyfXyT3Pa4FWKJswHcIdJuds.cache +0 -1
  226. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/zu/zuExWc5WHxeOUPZUKHl9a9ZRmN50g7jMOD28macn6M0.cache +0 -0
  227. data/spec/dummy/tmp/pids/server.pid +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9db89fe02b54c1eb46633f4df610405c050aaf5a44bcdc22a90ffe7cbb54637b
4
- data.tar.gz: 6738a7be7646e0c4cf0844def2b6785f659922c064cf5e7e0ac39242c6f5f7b4
3
+ metadata.gz: fd3ff9f10242f64a0f36e8d73592bef75040acd230395290234a92334072098a
4
+ data.tar.gz: a105385c40e1e640751a1547c45fb6e06070992d061efbea8f4d570632cd14b9
5
5
  SHA512:
6
- metadata.gz: 2388bae27139b79e346b70fab53701f87112aca41d104fa3dcd8b2b9d3537dc9d54742c990384135cc347b50207d5023d96b699847b568731e78ed1204a3afe5
7
- data.tar.gz: 18959e622626a9452fdc67dae321ef93f1be65e81657e66ad692f330bfe2fc47c29fb731c66adddd3d61f718c286caf70b9b0fa9e219ec616aea5acfd8aaee71
6
+ metadata.gz: 46963d7e5e65127f9e374f1b2d3f7311b5d1bca07b75d4036db746232c8d14da1a25daef877ee58e74e157bd1b35960c76c7ee921721aebf80eadf3785666b9a
7
+ data.tar.gz: 3789b9562e8b06f2e040d404ea0a5f6e7a002ba08e1b42a19fd07c85dee65e07911c229120b57a0f9492f1ec6a6aa523dd98600a397f52760c2b0200185ce56d
data/README.md CHANGED
@@ -1,46 +1,80 @@
1
+ ![Gem](https://img.shields.io/gem/v/localtower) ![Gem](https://img.shields.io/gem/dt/localtower?label=gem%20downloads)
2
+
1
3
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/damln/localtower/master/public/logo-localtower-white-300.png" alt="Localtower">
4
+ <img src="https://raw.githubusercontent.com/damln/localtower/0f279b82e9a7701b9f0aab21a8e4561468535046/public/com/twitter-cover-2.png" alt="Localtower">
3
5
  </p>
4
6
 
5
- ## Intro
7
+ ## Introduction
6
8
 
7
- Please use localtower version `>= 1.0.0`
8
- See installation process below.
9
+ ![New Model](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.44.30.jpg)
9
10
 
10
- Compatibility:
11
- - Rails >= 5.2
12
- - Ruby >= 2.3
11
+ **- What is Localtower?**
12
+
13
+ Localtower is a Rails Engine mountable in development environment to help you generate migrations for your Rails application.
14
+ It's like ActiveAdmin or Sidekiq UI.
15
+ You plug it in your `config/routes.rb` and it works out of the box.
16
+ Check the _Installation_ section below for more details.
17
+
18
+ **- How Localtower works?**
19
+
20
+ Localtower gives you a UI to create models and migrations. It will generate a migration file like you would do with `rails generate migration add_index_to_users`. You will see the generated file in `db/migrate/` folder.
21
+
22
+ **- Why creating a UI for Rails migrations?**
23
+
24
+ Rails migrations are well documented in the official [Rails Guides](https://guides.rubyonrails.org/active_record_migrations.html) but we often tend to forget some commands or do typo errors. Like writing `add_index :user, :email` instead of `add_index :users, :email` (did you spot the typo?). Working from a UI with a fixed list of commands reduces the chance of making errors.
25
+
26
+ **- When I'm using Localtower, can I still generate migrations from the command line?**
27
+
28
+ Of course! Localtower does not lock you up. You can still generate migrations like you did before. Localtower is just a migration generator. You can also generate a migration from Localtower and then edit it manually before running `rails db:migrate`
29
+
30
+ **- What does happen when I want to remove Localtower?**
31
+
32
+ You just have to remove the gem from your `Gemfile`, run `bundle`, remove the engine in `config/routes.rb`, and that's it! All your previous migrations will stay in `db/migrate/`. You are never locked up with Localtower. You can install or uninstall anytime. Remember, it is just a UI to generate files. Do not hesitate to [open an issue on Github](https://github.com/damln/localtower/issues) and tell me why you don't want it anymore. It will be very valuable for me to understand what I can do better ❤.
33
+
34
+ **- Cool, but there are some migration options that are not available in Localtower, what can I do?**
35
+
36
+ Localtower doesn't implement all the Rails Migrations API. I focused on the most common scenarios. If you need to do something tricky in your migrations, you can still edit the migrations manually. You are also welcome to [open an issue on Github](https://github.com/damln/localtower/issues) to ask for a specific feature. I'm always open to extend the possibilities of Localtower.
37
+
38
+ ## Screenshots
13
39
 
14
40
  ### Create a model
15
- ![New Model](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v1.0.0/new_model.png)
41
+
42
+ ![New Model](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.44.30.jpg)
16
43
 
17
44
  ### Create a migration
18
- ![New Migration](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v1.0.0/new_migration.png)
19
45
 
20
- ### See the Models
21
- ![Models](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v1.0.0/models.png)
46
+ ![New Migration](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.48.21.jpg)
22
47
 
23
48
  ### See the Migrations (and migrate)
24
- ![Migrations](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v1.0.0/migrations.png)
25
49
 
26
- ## INSTALL
50
+ ![Migrations](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.50.11.jpg)
27
51
 
28
- Should work with any Rails 5.2+ application.
29
- Only tested with PostgreSQL.
52
+ ## Installation
53
+
54
+ Please use the best localtower version: `>= 2.0.0`
55
+ See installation process below.
56
+
57
+ Compatibility:
58
+
59
+ - Rails >= 5.2
60
+ - Ruby >= 2.3
30
61
 
31
62
  Add to your `Gemfile` file:
63
+
32
64
  ```ruby
33
65
  group :development do
34
- gem "localtower"
66
+ gem 'localtower', '~> 2.0'
35
67
  end
36
68
  ```
37
69
 
38
70
  Run command in your terminal:
71
+
39
72
  ```bash
40
73
  bundle install
41
74
  ```
42
75
 
43
76
  Add to your `config/routes.rb`:
77
+
44
78
  ```ruby
45
79
  MyApp::Application.routes.draw do
46
80
  if Rails.env.development?
@@ -52,7 +86,8 @@ MyApp::Application.routes.draw do
52
86
  end
53
87
  ```
54
88
 
55
- /!\ IMPORTANT /!\
89
+ **⚠ IMPORTANT ⚠**
90
+
56
91
  Change your config/environments/development.rb:
57
92
 
58
93
  ```ruby
@@ -71,13 +106,69 @@ If you know how to override this configuration in the gem instead of doing it in
71
106
 
72
107
  ## Usage
73
108
 
74
- Open your browser at [http://localhost:3000/localtower](http://localhost:3000/localtower).
109
+ To access the UI, run your local rails server and open your browser at [http://localhost:3000/localtower](http://localhost:3000/localtower).
110
+
111
+ ## Full scenario
112
+
113
+ ### Create a model
75
114
 
76
- ## Roadmap
115
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.44.30.jpg)
116
+
117
+ It will create a migration file:
118
+
119
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.44.42.jpg)
120
+
121
+ ### Create a migration
77
122
 
78
- - Be able to use `uuid` instead of `id` as primary when creating models.
79
- - Realtime preview of the migration files
80
- - Better frontend validation
123
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.48.21.jpg)
124
+
125
+ It will generate a migration file:
126
+
127
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.48.51.jpg)
128
+
129
+ ### Create another model
130
+
131
+ Now, we add a `Book` model:
132
+
133
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.50.04.jpg)
134
+
135
+ ### All the migrations generated
136
+
137
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.50.19.jpg)
138
+
139
+ ### Files generated
140
+
141
+ Every action made from the UI will generate native Rails migration files.
142
+ Exactly like the `rails generate` command.
143
+ But instead of generating files in the console, they are generated in the `db/migrate` folder.
144
+
145
+ - The models:
146
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.51.47.jpg)
147
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.51.48.jpg)
148
+
149
+ - The migration files:
150
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.52.18.jpg)
151
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.52.26.jpg)
152
+
153
+ - The final schema:
154
+ ![](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v2.0.0/Screenshot%202024-11-18%20at%2022.52.38.jpg)
155
+
156
+
157
+ ## Upgrading
158
+
159
+ I recommend you to upgrade to the latest version which is `2.0.0`.
160
+ To upgrade, just use the latest version of Localtower.
161
+ You have nothing else to do.
162
+
163
+ ```
164
+ bundle update localtower
165
+ ```
166
+
167
+ ## Contribute
168
+
169
+ Thanks for reporting issues, I'll do my best to fix the bugs 💪
170
+
171
+ ![ga](https://www.google-analytics.com/collect?v=1&tid=G-1XG3EBE2DZ&cid=555&aip=1&t=event&ec=github&ea=visit&dp=readme&dt=gem)
81
172
 
82
173
  ## Run test
83
174
 
@@ -90,29 +181,38 @@ LOCALTOWER_PG_USERNAME="admin"
90
181
  LOCALTOWER_PG_PASSWORD="root_or_smething"
91
182
  ```
92
183
 
184
+ drop / create database:
185
+
186
+ ```bash
187
+ cd spec/dummy
188
+ bundle exec rails db:drop
189
+ bundle exec rails db:create
190
+ rm app/models/*.rb
191
+ ```
192
+
93
193
  Run the spec:
194
+
94
195
  ```bash
95
196
  bundle install
96
197
  bundle exec rspec spec/
97
198
  ```
98
199
 
99
- ## Contribute
100
-
101
- Thanks for reporting issues, I'll do my best to fix the bugs 💪
102
-
103
- ![ga](https://www.google-analytics.com/collect?v=1&tid=G-1XG3EBE2DZ&cid=555&aip=1&t=event&ec=github&ea=visit&dp=readme&dt=gem)
104
-
105
- ## Deploy
200
+ ## Deploy latest gem version
106
201
 
107
202
  Only for official contributors.
108
203
 
109
- rm *.gem | gem build localtower.gemspec && gem push localtower-*.gem
204
+ git tag vX.X.X # change by last version
205
+ git push --tags
206
+ rm *.gem
207
+ gem build localtower.gemspec
208
+ gem push localtower-*.gem
110
209
 
111
210
  ## Notes
112
211
 
113
212
  Do not hesitate to open issues if you have troubles using the gem.
114
213
 
115
- - By Damian Le Nouaille Diez: https://damln.com
116
- - Supported by Explicit Ruby: https://explicit-ruby.run
214
+ - By Damian Le Nouaille:
215
+ - Twitter: https://twitter.com/damian_lnd
216
+ - Website: https://damln.com
117
217
  - Link on RubyGems.org: https://rubygems.org/gems/localtower
118
- - Stats on BestGems.org: https://bestgems.org/gems/localtower
218
+ - Stats on BestGems.org (30k+ downloads): https://bestgems.org/gems/localtower