jinda_mind 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (383) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +4 -0
  4. data/Rakefile +3 -0
  5. data/app/assets/config/manifest.js +4 -0
  6. data/app/assets/images/4dcity-old.ico +0 -0
  7. data/app/assets/images/4dcity.ico +0 -0
  8. data/app/assets/images/account.png +0 -0
  9. data/app/assets/images/add.png +0 -0
  10. data/app/assets/images/ajax-loader-circle.gif +0 -0
  11. data/app/assets/images/ajax-loader.gif +0 -0
  12. data/app/assets/images/anchor.png +0 -0
  13. data/app/assets/images/application_double.png +0 -0
  14. data/app/assets/images/application_form_edit.png +0 -0
  15. data/app/assets/images/arrow_left.png +0 -0
  16. data/app/assets/images/arrow_right.png +0 -0
  17. data/app/assets/images/arrow_turn_left.png +0 -0
  18. data/app/assets/images/arrow_turn_right.png +0 -0
  19. data/app/assets/images/calendar.png +0 -0
  20. data/app/assets/images/cancel.png +0 -0
  21. data/app/assets/images/chart_bar.png +0 -0
  22. data/app/assets/images/clock.png +0 -0
  23. data/app/assets/images/cog.png +0 -0
  24. data/app/assets/images/control_fastforward.png +0 -0
  25. data/app/assets/images/control_play.png +0 -0
  26. data/app/assets/images/cross.png +0 -0
  27. data/app/assets/images/delete.png +0 -0
  28. data/app/assets/images/external-link.png +0 -0
  29. data/app/assets/images/facebook-continue-button.png +0 -0
  30. data/app/assets/images/facebooksmall.png +0 -0
  31. data/app/assets/images/favicon.ico +0 -0
  32. data/app/assets/images/freemind(mm).png +0 -0
  33. data/app/assets/images/google-continue-button.png +0 -0
  34. data/app/assets/images/help.png +0 -0
  35. data/app/assets/images/highway-menu.png +0 -0
  36. data/app/assets/images/highway.png +0 -0
  37. data/app/assets/images/house.png +0 -0
  38. data/app/assets/images/icons-18-black.png +0 -0
  39. data/app/assets/images/icons-18-white.png +0 -0
  40. data/app/assets/images/icons-36-black.png +0 -0
  41. data/app/assets/images/icons-36-white.png +0 -0
  42. data/app/assets/images/logo.png +0 -0
  43. data/app/assets/images/logo_jinda.png +0 -0
  44. data/app/assets/images/logout.png +0 -0
  45. data/app/assets/images/new.gif +0 -0
  46. data/app/assets/images/new.png +0 -0
  47. data/app/assets/images/page.png +0 -0
  48. data/app/assets/images/page_attach.png +0 -0
  49. data/app/assets/images/page_green.png +0 -0
  50. data/app/assets/images/page_output.png +0 -0
  51. data/app/assets/images/page_pdf.png +0 -0
  52. data/app/assets/images/pencil.png +0 -0
  53. data/app/assets/images/printer.png +0 -0
  54. data/app/assets/images/refresh.png +0 -0
  55. data/app/assets/images/report.png +0 -0
  56. data/app/assets/images/rssmall.png +0 -0
  57. data/app/assets/images/tick.png +0 -0
  58. data/app/assets/images/twittersmall.png +0 -0
  59. data/app/assets/images/user.png +0 -0
  60. data/app/assets/images/user_admin_gear.png +0 -0
  61. data/app/assets/images/view_code.png +0 -0
  62. data/app/assets/javascripts/application.js-org +24 -0
  63. data/app/assets/javascripts/cable.js +13 -0
  64. data/app/assets/javascripts/disable_enter_key.js +10 -0
  65. data/app/assets/javascripts/iscroll-wrapper.js +32 -0
  66. data/app/assets/javascripts/iscroll.js +1084 -0
  67. data/app/assets/javascripts/jinda.js +14 -0
  68. data/app/assets/javascripts/jinda_jqm.js +24 -0
  69. data/app/assets/javascripts/jquery.mobile-1.2.1.js +9272 -0
  70. data/app/assets/javascripts/jquery.mobile.datebox.js +1778 -0
  71. data/app/assets/javascripts/jquery.mobile.splitview.js +695 -0
  72. data/app/assets/stylesheets/app.scss +90 -0
  73. data/app/assets/stylesheets/articles.scss +94 -0
  74. data/app/assets/stylesheets/fonts/sarabun.eot +0 -0
  75. data/app/assets/stylesheets/fonts/sarabun.ttf +0 -0
  76. data/app/assets/stylesheets/fonts/sarabun.woff +0 -0
  77. data/app/assets/stylesheets/fonts/sarabun_bold.ttf +0 -0
  78. data/app/assets/stylesheets/fonts/sarabun_bolditalic.ttf +0 -0
  79. data/app/assets/stylesheets/fonts/sarabun_italic.ttf +0 -0
  80. data/app/assets/stylesheets/fonts/thsarabunnew-webfont.eot +0 -0
  81. data/app/assets/stylesheets/fonts/thsarabunnew-webfont.ttf +0 -0
  82. data/app/assets/stylesheets/fonts/thsarabunnew-webfont.woff +0 -0
  83. data/app/assets/stylesheets/fonts/thsarabunnew.css +47 -0
  84. data/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.eot +0 -0
  85. data/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.ttf +0 -0
  86. data/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.woff +0 -0
  87. data/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.eot +0 -0
  88. data/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.ttf +0 -0
  89. data/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.woff +0 -0
  90. data/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.eot +0 -0
  91. data/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.ttf +0 -0
  92. data/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.woff +0 -0
  93. data/app/assets/stylesheets/images/ajax-loader.gif +0 -0
  94. data/app/assets/stylesheets/images/button_black.png +0 -0
  95. data/app/assets/stylesheets/images/button_blue.png +0 -0
  96. data/app/assets/stylesheets/images/button_red.png +0 -0
  97. data/app/assets/stylesheets/images/gears.png +0 -0
  98. data/app/assets/stylesheets/images/icons-18-black.png +0 -0
  99. data/app/assets/stylesheets/images/icons-18-white.png +0 -0
  100. data/app/assets/stylesheets/images/icons-36-black.png +0 -0
  101. data/app/assets/stylesheets/images/icons-36-white.png +0 -0
  102. data/app/assets/stylesheets/images/indicator.gif +0 -0
  103. data/app/assets/stylesheets/jinda.scss +185 -0
  104. data/app/assets/stylesheets/jinda_jqm.css.scss +32 -0
  105. data/app/assets/stylesheets/jquery.mobile-1.2.1.css +2339 -0
  106. data/app/assets/stylesheets/jquery.mobile.datebox.css +65 -0
  107. data/app/assets/stylesheets/jquery.mobile.grids.collapsible.css +122 -0
  108. data/app/assets/stylesheets/jquery.mobile.splitview.css +128 -0
  109. data/app/assets/stylesheets/kul-4.2.css +1516 -0
  110. data/app/assets/stylesheets/kul-4.2.min.css +11 -0
  111. data/app/assets/stylesheets/modules.scss +84 -0
  112. data/app/assets/stylesheets/sarabun.css +37 -0
  113. data/app/assets/stylesheets/social.scss +133 -0
  114. data/app/controllers/concerns/jinda_general_concern.rb +179 -0
  115. data/app/controllers/concerns/jinda_run_concern.rb +368 -0
  116. data/app/controllers/jinda_controller.rb +66 -0
  117. data/bin/console +14 -0
  118. data/bin/setup +8 -0
  119. data/config/mongoid.yml +19 -0
  120. data/config/routes.rb +44 -0
  121. data/lib/generators/jinda/USAGE +2 -0
  122. data/lib/generators/jinda/config_generator.rb +102 -0
  123. data/lib/generators/jinda/install_generator.rb +269 -0
  124. data/lib/generators/jinda/installer/gems_install.rb +132 -0
  125. data/lib/generators/jinda/installer/test.rb +6 -0
  126. data/lib/generators/jinda/minitest_generator.rb +30 -0
  127. data/lib/generators/jinda/rspec_generator.rb +30 -0
  128. data/lib/generators/jinda/templates/Dockerfile +26 -0
  129. data/lib/generators/jinda/templates/README.md +173 -0
  130. data/lib/generators/jinda/templates/app/assets/config/manifest.js +4 -0
  131. data/lib/generators/jinda/templates/app/assets/javascripts/application.js +15 -0
  132. data/lib/generators/jinda/templates/app/assets/stylesheets/application.css.scss +15 -0
  133. data/lib/generators/jinda/templates/app/channels/application_cable/channel.rb +4 -0
  134. data/lib/generators/jinda/templates/app/channels/application_cable/connection.rb +4 -0
  135. data/lib/generators/jinda/templates/app/controllers/api/v1/notes_controller.rb +81 -0
  136. data/lib/generators/jinda/templates/app/controllers/jinda_org/admins_controller.rb +6 -0
  137. data/lib/generators/jinda/templates/app/controllers/jinda_org/application_controller.rb +41 -0
  138. data/lib/generators/jinda/templates/app/controllers/jinda_org/articles_controller.rb +110 -0
  139. data/lib/generators/jinda/templates/app/controllers/jinda_org/comments_controller.rb +31 -0
  140. data/lib/generators/jinda/templates/app/controllers/jinda_org/docs_controller.rb +56 -0
  141. data/lib/generators/jinda/templates/app/controllers/jinda_org/identities_controller.rb +5 -0
  142. data/lib/generators/jinda/templates/app/controllers/jinda_org/notes_controller.rb +84 -0
  143. data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets.rb +28 -0
  144. data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets_controller.rb +34 -0
  145. data/lib/generators/jinda/templates/app/controllers/jinda_org/sessions_controller.rb +44 -0
  146. data/lib/generators/jinda/templates/app/controllers/jinda_org/sitemap_controller.rb +12 -0
  147. data/lib/generators/jinda/templates/app/controllers/jinda_org/users_controller.rb +35 -0
  148. data/lib/generators/jinda/templates/app/helpers/admins_helper.rb +2 -0
  149. data/lib/generators/jinda/templates/app/helpers/application_helper.rb +33 -0
  150. data/lib/generators/jinda/templates/app/helpers/articles_helper.rb +2 -0
  151. data/lib/generators/jinda/templates/app/helpers/basic_helper.rb +2 -0
  152. data/lib/generators/jinda/templates/app/helpers/comments_helper.rb +2 -0
  153. data/lib/generators/jinda/templates/app/helpers/ctrs_helper.rb +2 -0
  154. data/lib/generators/jinda/templates/app/helpers/devs_helper.rb +2 -0
  155. data/lib/generators/jinda/templates/app/helpers/pictures_helper.rb +2 -0
  156. data/lib/generators/jinda/templates/app/helpers/sitemap_helper.rb +2 -0
  157. data/lib/generators/jinda/templates/app/helpers/users_helper.rb +2 -0
  158. data/lib/generators/jinda/templates/app/jinda/index.mm +486 -0
  159. data/lib/generators/jinda/templates/app/jinda/template/index.mm +366 -0
  160. data/lib/generators/jinda/templates/app/jinda/template/linkview.haml +21 -0
  161. data/lib/generators/jinda/templates/app/jinda/template/view.html.erb +34 -0
  162. data/lib/generators/jinda/templates/app/mailers/application_mailer.rb +4 -0
  163. data/lib/generators/jinda/templates/app/mailers/jinda_mailer.rb +7 -0
  164. data/lib/generators/jinda/templates/app/mailers/note_mailer.rb +10 -0
  165. data/lib/generators/jinda/templates/app/mailers/user_mailer.rb +15 -0
  166. data/lib/generators/jinda/templates/app/models/address.rb +14 -0
  167. data/lib/generators/jinda/templates/app/models/article.rb +14 -0
  168. data/lib/generators/jinda/templates/app/models/comment.rb +14 -0
  169. data/lib/generators/jinda/templates/app/models/identity.rb +18 -0
  170. data/lib/generators/jinda/templates/app/models/jinda/doc.rb +36 -0
  171. data/lib/generators/jinda/templates/app/models/jinda/module.rb +11 -0
  172. data/lib/generators/jinda/templates/app/models/jinda/notice.rb +14 -0
  173. data/lib/generators/jinda/templates/app/models/jinda/role.rb +8 -0
  174. data/lib/generators/jinda/templates/app/models/jinda/runseq.rb +24 -0
  175. data/lib/generators/jinda/templates/app/models/jinda/service.rb +17 -0
  176. data/lib/generators/jinda/templates/app/models/jinda/xmain.rb +38 -0
  177. data/lib/generators/jinda/templates/app/models/note.rb +22 -0
  178. data/lib/generators/jinda/templates/app/models/param.rb +41 -0
  179. data/lib/generators/jinda/templates/app/models/person.rb +14 -0
  180. data/lib/generators/jinda/templates/app/models/user.rb +66 -0
  181. data/lib/generators/jinda/templates/app/views/adminbsbs/content.haml +241 -0
  182. data/lib/generators/jinda/templates/app/views/admins/edit_role/edit_role.html.erb +7 -0
  183. data/lib/generators/jinda/templates/app/views/admins/edit_role/select_user.html.erb +4 -0
  184. data/lib/generators/jinda/templates/app/views/api/v1/note.haml +0 -0
  185. data/lib/generators/jinda/templates/app/views/articles/_report.haml +35 -0
  186. data/lib/generators/jinda/templates/app/views/articles/edit.haml +23 -0
  187. data/lib/generators/jinda/templates/app/views/articles/edit_article/edit_article.html.erb +15 -0
  188. data/lib/generators/jinda/templates/app/views/articles/edit_article/select_article.html.erb +12 -0
  189. data/lib/generators/jinda/templates/app/views/articles/index.haml +5 -0
  190. data/lib/generators/jinda/templates/app/views/articles/my.haml +5 -0
  191. data/lib/generators/jinda/templates/app/views/articles/new_article/form_article.html.erb +16 -0
  192. data/lib/generators/jinda/templates/app/views/articles/show.html.haml +58 -0
  193. data/lib/generators/jinda/templates/app/views/articles/xedit_article/edit_article.html.erb +13 -0
  194. data/lib/generators/jinda/templates/app/views/ctrs/vfolder1/viewfile1.html.erb +23 -0
  195. data/lib/generators/jinda/templates/app/views/ctrs/vfolder1/viewfile2.html.erb +23 -0
  196. data/lib/generators/jinda/templates/app/views/ctrs/vfolder2/viewfile2.html.erb +23 -0
  197. data/lib/generators/jinda/templates/app/views/custom/_adsense.haml +6 -0
  198. data/lib/generators/jinda/templates/app/views/docs/doc_edit/doc_edit.html.erb +21 -0
  199. data/lib/generators/jinda/templates/app/views/docs/doc_edit/doc_select.html.erb +14 -0
  200. data/lib/generators/jinda/templates/app/views/docs/doc_new/doc_form.html.erb +32 -0
  201. data/lib/generators/jinda/templates/app/views/docs/doc_new/doc_form.md +36 -0
  202. data/lib/generators/jinda/templates/app/views/docs/doc_xedit/doc_edit.html.erb +21 -0
  203. data/lib/generators/jinda/templates/app/views/docs/edit/select_note.html.erb +14 -0
  204. data/lib/generators/jinda/templates/app/views/docs/index.haml +21 -0
  205. data/lib/generators/jinda/templates/app/views/docs/my.haml +27 -0
  206. data/lib/generators/jinda/templates/app/views/identities/new.html.haml +32 -0
  207. data/lib/generators/jinda/templates/app/views/jinda/_activity.md +10 -0
  208. data/lib/generators/jinda/templates/app/views/jinda/_menu.haml +27 -0
  209. data/lib/generators/jinda/templates/app/views/jinda/_menu_mm.haml +44 -0
  210. data/lib/generators/jinda/templates/app/views/jinda/_model.md +5 -0
  211. data/lib/generators/jinda/templates/app/views/jinda/_modul.md +9 -0
  212. data/lib/generators/jinda/templates/app/views/jinda/_pending_home.haml +5 -0
  213. data/lib/generators/jinda/templates/app/views/jinda/_pending_page.haml +24 -0
  214. data/lib/generators/jinda/templates/app/views/jinda/_service.md +24 -0
  215. data/lib/generators/jinda/templates/app/views/jinda/_static.haml +13 -0
  216. data/lib/generators/jinda/templates/app/views/jinda/doc-thai.md +37 -0
  217. data/lib/generators/jinda/templates/app/views/jinda/doc.md +36 -0
  218. data/lib/generators/jinda/templates/app/views/jinda/error_logs.haml +22 -0
  219. data/lib/generators/jinda/templates/app/views/jinda/feed.rss.builder +27 -0
  220. data/lib/generators/jinda/templates/app/views/jinda/help.haml +20 -0
  221. data/lib/generators/jinda/templates/app/views/jinda/index.html.haml +53 -0
  222. data/lib/generators/jinda/templates/app/views/jinda/logs.haml +22 -0
  223. data/lib/generators/jinda/templates/app/views/jinda/notice_logs.haml +18 -0
  224. data/lib/generators/jinda/templates/app/views/jinda/pending.haml +1 -0
  225. data/lib/generators/jinda/templates/app/views/jinda/run_form.haml +42 -0
  226. data/lib/generators/jinda/templates/app/views/jinda/run_output.haml +38 -0
  227. data/lib/generators/jinda/templates/app/views/jinda/search.haml +20 -0
  228. data/lib/generators/jinda/templates/app/views/jinda/status.haml +61 -0
  229. data/lib/generators/jinda/templates/app/views/jinda_mailer/gmail.html.erb +9 -0
  230. data/lib/generators/jinda/templates/app/views/layouts/_head.html.erb +10 -0
  231. data/lib/generators/jinda/templates/app/views/layouts/_meta_tag.html.erb +19 -0
  232. data/lib/generators/jinda/templates/app/views/layouts/application.haml +4 -0
  233. data/lib/generators/jinda/templates/app/views/layouts/bsb/_footer.haml +7 -0
  234. data/lib/generators/jinda/templates/app/views/layouts/bsb/_header.haml +147 -0
  235. data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu.haml +47 -0
  236. data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu_mm.haml +34 -0
  237. data/lib/generators/jinda/templates/app/views/layouts/bsb/_rightbar.haml +123 -0
  238. data/lib/generators/jinda/templates/app/views/layouts/bsb/_sidebar.haml +155 -0
  239. data/lib/generators/jinda/templates/app/views/layouts/bsb/application.haml-bsb +47 -0
  240. data/lib/generators/jinda/templates/app/views/layouts/gmail.html.erb +9 -0
  241. data/lib/generators/jinda/templates/app/views/layouts/jqm/_full.haml +33 -0
  242. data/lib/generators/jinda/templates/app/views/layouts/jqm/_page.haml +16 -0
  243. data/lib/generators/jinda/templates/app/views/layouts/jqm/application.haml-jqm +4 -0
  244. data/lib/generators/jinda/templates/app/views/layouts/mailer.html.erb +13 -0
  245. data/lib/generators/jinda/templates/app/views/layouts/mailer.html.haml +3 -0
  246. data/lib/generators/jinda/templates/app/views/layouts/mailer.text.erb +1 -0
  247. data/lib/generators/jinda/templates/app/views/layouts/mailer.text.haml +1 -0
  248. data/lib/generators/jinda/templates/app/views/layouts/mobile.html.erb +13 -0
  249. data/lib/generators/jinda/templates/app/views/layouts/mobilejq.html.erb +31 -0
  250. data/lib/generators/jinda/templates/app/views/layouts/print.html.erb +22 -0
  251. data/lib/generators/jinda/templates/app/views/layouts/utf8.html.erb +22 -0
  252. data/lib/generators/jinda/templates/app/views/note_mailer/gmail.html.haml +7 -0
  253. data/lib/generators/jinda/templates/app/views/note_mailer/gmail.text.haml +8 -0
  254. data/lib/generators/jinda/templates/app/views/notes/delete/select_note.html.erb +14 -0
  255. data/lib/generators/jinda/templates/app/views/notes/edit/edit_note.html.erb +10 -0
  256. data/lib/generators/jinda/templates/app/views/notes/edit/select_note.html.erb +14 -0
  257. data/lib/generators/jinda/templates/app/views/notes/index.haml +71 -0
  258. data/lib/generators/jinda/templates/app/views/notes/mail/display_mail.html.erb +20 -0
  259. data/lib/generators/jinda/templates/app/views/notes/mail/select_note.html.erb +19 -0
  260. data/lib/generators/jinda/templates/app/views/notes/mail/show.html.haml +13 -0
  261. data/lib/generators/jinda/templates/app/views/notes/my.haml +21 -0
  262. data/lib/generators/jinda/templates/app/views/notes/new/new_note.html.erb +13 -0
  263. data/lib/generators/jinda/templates/app/views/notes/show.haml +10 -0
  264. data/lib/generators/jinda/templates/app/views/notes/xedit/edit_note.html.erb +10 -0
  265. data/lib/generators/jinda/templates/app/views/password_resets/edit.html.erb +21 -0
  266. data/lib/generators/jinda/templates/app/views/password_resets/new.html.haml +11 -0
  267. data/lib/generators/jinda/templates/app/views/sessions/new.html.haml +22 -0
  268. data/lib/generators/jinda/templates/app/views/sitemap/index.xml.haml +10 -0
  269. data/lib/generators/jinda/templates/app/views/user_mailer/password_reset.html.haml +3 -0
  270. data/lib/generators/jinda/templates/app/views/user_mailer/password_reset.text.erb +3 -0
  271. data/lib/generators/jinda/templates/app/views/user_mailer/password_reset.text.haml +3 -0
  272. data/lib/generators/jinda/templates/app/views/users/index.haml +13 -0
  273. data/lib/generators/jinda/templates/app/views/users/pwd/enter.html.erb +6 -0
  274. data/lib/generators/jinda/templates/app/views/users/user/enter_user.html.erb +10 -0
  275. data/lib/generators/jinda/templates/config/cloudinary.yml +9 -0
  276. data/lib/generators/jinda/templates/config/initializers/fix_mongoid_generator.rb-org +14 -0
  277. data/lib/generators/jinda/templates/config/mongoid.yml-docker +182 -0
  278. data/lib/generators/jinda/templates/config/mongoid.yml-localhost +182 -0
  279. data/lib/generators/jinda/templates/db/seeds.rb +6 -0
  280. data/lib/generators/jinda/templates/docker-compose.yml +17 -0
  281. data/lib/generators/jinda/templates/dot/dot.env +2 -0
  282. data/lib/generators/jinda/templates/dotrspec +3 -0
  283. data/lib/generators/jinda/templates/entrypoint.sh +13 -0
  284. data/lib/generators/jinda/templates/jinda.yml +10 -0
  285. data/lib/generators/jinda/templates/public/404.html +67 -0
  286. data/lib/generators/jinda/templates/public/422.html +67 -0
  287. data/lib/generators/jinda/templates/public/500.html +66 -0
  288. data/lib/generators/jinda/templates/public/assets/images/logo.png +0 -0
  289. data/lib/generators/jinda/templates/public/favicon.ico +0 -0
  290. data/lib/generators/jinda/templates/public/robots.txt +3 -0
  291. data/lib/generators/jinda/templates/spec/controllers/api/v1_get_index_spec.rb +23 -0
  292. data/lib/generators/jinda/templates/spec/controllers/api/v1_get_my_spec.rb +14 -0
  293. data/lib/generators/jinda/templates/spec/controllers/api/v1_post_spec.rb +19 -0
  294. data/lib/generators/jinda/templates/spec/controllers/sessions_controller_spec.rb +98 -0
  295. data/lib/generators/jinda/templates/spec/features/userlogins_spec.rb +23 -0
  296. data/lib/generators/jinda/templates/spec/mailers/note_spec.rb +24 -0
  297. data/lib/generators/jinda/templates/spec/mailers/previews/note_preview.rb +9 -0
  298. data/lib/generators/jinda/templates/spec/models/note_spec.rb +41 -0
  299. data/lib/generators/jinda/templates/spec/models/user_spec.rb +12 -0
  300. data/lib/generators/jinda/templates/spec/rails_helper.rb +42 -0
  301. data/lib/generators/jinda/templates/spec/spec_helper.rb +80 -0
  302. data/lib/generators/jinda/templates/spec/support/authentication_helper.rb +20 -0
  303. data/lib/generators/jinda/templates/spec/support/databasecleaner.rb +13 -0
  304. data/lib/generators/jinda/templates/spec/support/factory_bot.rb +12 -0
  305. data/lib/generators/jinda/templates/spec/support/omniauth_macros.rb +38 -0
  306. data/lib/generators/jinda/templates/spec/support/request_spec_helper.rb +8 -0
  307. data/lib/generators/jinda/templates/spec/views/articles/_article.html.erb_spec.rbx +14 -0
  308. data/lib/generators/jinda/templates/test/application_system_test_case.rb +5 -0
  309. data/lib/generators/jinda/templates/test/integration/jinda_routes_test.rb +42 -0
  310. data/lib/generators/jinda/templates/test/test_helper.rb +6 -0
  311. data/lib/jinda/date_helpers.rb +109 -0
  312. data/lib/jinda/gem_helpers.rb +11 -0
  313. data/lib/jinda/gen_class.rb +13 -0
  314. data/lib/jinda/gen_freemind.rb +33 -0
  315. data/lib/jinda/gen_helpers.rb +141 -0
  316. data/lib/jinda/gen_models.rb +137 -0
  317. data/lib/jinda/gen_modules.rb +17 -0
  318. data/lib/jinda/gen_runseq.rb +71 -0
  319. data/lib/jinda/gen_services.rb +90 -0
  320. data/lib/jinda/gen_xmain.rb +38 -0
  321. data/lib/jinda/get_app.rb +34 -0
  322. data/lib/jinda/helpers.rb +26 -0
  323. data/lib/jinda/init_vars.rb +36 -0
  324. data/lib/jinda/railtie.rb +18 -0
  325. data/lib/jinda/rake_views.rb +63 -0
  326. data/lib/jinda/refresh.rb +67 -0
  327. data/lib/jinda/themes.rb +175 -0
  328. data/lib/jinda.rb +7 -0
  329. data/lib/jquery.validate.js +1293 -0
  330. data/lib/tasks/jinda.rake +42 -0
  331. data/test/dummy/Rakefile +6 -0
  332. data/test/dummy/app/assets/config/manifest.js +3 -0
  333. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  334. data/test/dummy/app/channels/application_cable/channel.rb +4 -0
  335. data/test/dummy/app/channels/application_cable/connection.rb +4 -0
  336. data/test/dummy/app/controllers/application_controller.rb +2 -0
  337. data/test/dummy/app/helpers/application_helper.rb +2 -0
  338. data/test/dummy/app/javascript/packs/application.js +15 -0
  339. data/test/dummy/app/jobs/application_job.rb +7 -0
  340. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  341. data/test/dummy/app/models/application_record.rb +3 -0
  342. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  343. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  344. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  345. data/test/dummy/bin/rails +4 -0
  346. data/test/dummy/bin/rake +4 -0
  347. data/test/dummy/bin/setup +33 -0
  348. data/test/dummy/config/application.rb +19 -0
  349. data/test/dummy/config/boot.rb +5 -0
  350. data/test/dummy/config/cable.yml +10 -0
  351. data/test/dummy/config/database.yml +25 -0
  352. data/test/dummy/config/environment.rb +5 -0
  353. data/test/dummy/config/environments/development.rb +62 -0
  354. data/test/dummy/config/environments/production.rb +112 -0
  355. data/test/dummy/config/environments/test.rb +49 -0
  356. data/test/dummy/config/initializers/application_controller_renderer.rb +8 -0
  357. data/test/dummy/config/initializers/assets.rb +12 -0
  358. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  359. data/test/dummy/config/initializers/content_security_policy.rb +28 -0
  360. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  361. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  362. data/test/dummy/config/initializers/inflections.rb +16 -0
  363. data/test/dummy/config/initializers/mime_types.rb +4 -0
  364. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  365. data/test/dummy/config/locales/en.yml +33 -0
  366. data/test/dummy/config/puma.rb +38 -0
  367. data/test/dummy/config/routes.rb +3 -0
  368. data/test/dummy/config/spring.rb +6 -0
  369. data/test/dummy/config/storage.yml +34 -0
  370. data/test/dummy/config.ru +5 -0
  371. data/test/dummy/db/development.sqlite3 +0 -0
  372. data/test/dummy/log/development.log +8 -0
  373. data/test/dummy/public/404.html +67 -0
  374. data/test/dummy/public/422.html +67 -0
  375. data/test/dummy/public/500.html +66 -0
  376. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  377. data/test/dummy/public/apple-touch-icon.png +0 -0
  378. data/test/dummy/public/favicon.ico +0 -0
  379. data/test/dummy/tmp/development_secret.txt +1 -0
  380. data/test/integration/navigation_test.rb +7 -0
  381. data/test/jinda_test.rb +7 -0
  382. data/test/test_helper.rb +19 -0
  383. metadata +466 -0
@@ -0,0 +1,269 @@
1
+ module Jinda
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ desc "Install jinda component to existing Rails app "
5
+ def self.source_root
6
+ File.dirname(__FILE__) + "/templates"
7
+ end
8
+ def setup_gems
9
+ # define required gems: jinda_gem, jinda_dev_gem
10
+ jinda_gem =
11
+ [
12
+ ["bson", "4.4.2"],
13
+ ["maruku", "~> 0.7.3"],
14
+ ["bcrypt"],
15
+ ["rouge"],
16
+ ["normalize-rails"],
17
+ ["font-awesome-rails"],
18
+ ["font-awesome-sass", "~> 5.12.0"],
19
+ ["meta-tags"],
20
+ ["jquery-turbolinks", "2.1.0"],
21
+ ["mongo", "2.11.3"],
22
+ ["turbolinks_render"],
23
+ ["haml-rails", "~> 2.0.1"],
24
+ ["haml", "~> 5.1", ">= 5.1.2"],
25
+ ["mail"],
26
+ ["prawn"],
27
+ ["redcarpet"],
28
+ ["oauth2", "1.4.4"],
29
+ ["omniauth", "1.9.1"],
30
+ ["omniauth-oauth2", "1.6.0"],
31
+ ["omniauth-identity", "~> 1.1.1"],
32
+ ["omniauth-facebook", "6.0.0"],
33
+ ["omniauth-google-oauth2", "0.8.0"],
34
+ ["dotenv-rails"],
35
+ ["cloudinary", "1.13.2"],
36
+ ["kaminari", "1.2.0"],
37
+ ["jquery-rails", "4.3.5"],
38
+ ["mongoid"],
39
+ ["rexml", "~> 3.2.4"]
40
+
41
+ ]
42
+
43
+ jinda_custom =
44
+ [
45
+ ["mongoid-paperclip", require: "mongoid_paperclip"],
46
+ ["kaminari-mongoid", "1.0.1"],
47
+ ["nokogiri", "~> 1.11.0"]
48
+ ]
49
+
50
+ jinda_dev_gem =
51
+ [
52
+ ["shoulda"],
53
+ ["rspec"],
54
+ ["rspec-rails"],
55
+ ["better_errors"],
56
+ ["binding_of_caller"],
57
+ ["pry-byebug"],
58
+ ["factory_bot_rails"],
59
+ ["database_cleaner-mongoid"],
60
+ ["guard"],
61
+ ["guard-rspec"],
62
+ ["guard-minitest"],
63
+ ["capybara"],
64
+ ["selenium-webdriver"],
65
+ ["rb-fsevent"],
66
+ ["valid_attribute"],
67
+ ["faker"]
68
+ ]
69
+
70
+ # Check each jinda_gem and create new array if found one otherwise just create.
71
+ # Open Gemfile add gem if not exist
72
+ jinda_gem.each do |g|
73
+ unless (%x(gem list -e --no-versions #{g[0]})) == "#{g[0]}\n"
74
+ if g.count == 2
75
+ gem g[0], g[1]
76
+ else
77
+ gem g[0]
78
+ end
79
+ else
80
+ if g.count == 2
81
+ xgem_0 = %x(gem list -e #{g[0]})
82
+ unless xgem_0.include?(("#{g[1]}").gsub(/[~> ]/, ''))
83
+ say " Found existing #{xgem_0} in Gemfile or System, Please edit Gemfile", :red
84
+ gem g[0], g[1]
85
+ else
86
+ say " Checking #{g[0]} found Ver. #{g[1]} already exist in Gemfile", :green
87
+ end
88
+ end
89
+ say " SKIP adding #{g[0]} in Gemfile", :yellow
90
+ end
91
+ end
92
+
93
+ # create list of gem in sub-group dev and test
94
+ jinda_dev_new = Array.new
95
+ jinda_dev_gem.each do |g|
96
+ unless (%x(gem list -e --no-versions #{g[0]})) == "#{g[0]}\n"
97
+ jinda_dev_new << g
98
+ else
99
+ say " #{g[0]} already exist in Gemfile", :yellow
100
+ end
101
+ end
102
+ unless jinda_dev_new.count == 0
103
+ gem_group :development, :test do
104
+ jinda_dev_new.each do |n|
105
+ if n.count == 1
106
+ gem n[0]
107
+ else
108
+ gem n[0], n[1]
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+ # create list of custom gem
115
+ jinda_custom_new = Array.new
116
+ jinda_custom.each do |g|
117
+ unless (%x(gem list -e --no-versions #{g[0]})) == "#{g[0]}\n"
118
+ jinda_custom_new << g
119
+ else
120
+ say " #{g[0]} already exist in Gemfile", :yellow
121
+ end
122
+ end
123
+ unless jinda_custom_new.count == 0
124
+ jinda_custom_new.each do |c|
125
+ say " Checking if #{c[0]} already exist in Gemfile", :yellow
126
+ if c.count == 1
127
+ gem c[0]
128
+ else
129
+ gem c[0], c[1]
130
+ end
131
+ end
132
+ end
133
+
134
+ end
135
+ def setup_app
136
+ # inside("public") { run "FileUtils.mv index.html index.html.bak" }
137
+ inside("db") {(File.file? "seeds.rb") ? (FileUtils.mv "seeds.rb", "seeds.rb.bak") : ( say "no seeds.rb", :green)}
138
+ inside("app/views/layouts") {(File.file? "application.html.erb") ? (FileUtils.mv 'application.html.erb', 'application.html.erb.bak') : ( say "no app/views/layout/ application.html.erb", :blue )}
139
+ inside("app/controllers") {(File.file? "application_controller.rb") ? (FileUtils.mv 'application_controller.rb', 'application_controller.rb.bak' ) : ( say "no app/controller/application_controller.rb, :blue ")}
140
+ inside("app/helpers") {(File.file? "application_helper.rb") ? (FileUtils.mv 'application_helper.rb', 'application_helper.rb.bak') : ( say "no app/helpers/application_helper.rb", :blue)}
141
+ inside("app/assets/javascripts") {(File.file? 'application.js') ? (FileUtils.mv 'application.js', 'application.js.bak') : ( say "no application.js", :blue)}
142
+ inside("app/assets/stylesheets") {(File.file? "application.css") ? (FileUtils.mv 'application.css', 'application.css.bak') : ( say "no application.css", :blue)}
143
+ inside("config/initializers") {(File.file? "omniauth.rb") ? (FileUtils.mv 'omniauth.rb', 'omniauth.rb.bak') : (say "no omniauth.rb", :blue)}
144
+ inside("config/initializers") {(File.file? "mongoid.rb") ? (FileUtils.mv 'mongoid.rb', 'mongoid.rb.bak') : (say "no mongoid.rb")}
145
+ inside("app/assets/config") {(File.file? "manifest.js") ? (FileUtils.mv "manifest.js", "manifest.js-rails") : (puts "backup to manifest.js-rails")}
146
+ directory "app"
147
+ directory "spec"
148
+ directory "db"
149
+ directory "config"
150
+ directory "dot"
151
+ #
152
+ # CHECK IF EXISTING CODE THEN REQUIRED MANUAL MIGRATION
153
+ # If no javascripts.js or css (New application), then can use javascript.js or css from org files.
154
+ # inside("app/assets/javascripts") {(File.file? "application.js") ? ( say "Please include application-org.js in application.js", :red) : (FileUtils.mv 'application-org.js', 'application.js')}
155
+ # inside("app/assets/stylesheets") {(File.file? "application.css") ? ( say "Please include application-org.css in application.css", :red) : (FileUtils.mv 'application-org.css', 'application.css')}
156
+ # inside("app/assets/stylesheets") {(File.file? "application.css.scss") ? ( say "Please include application-org.css.scss in application.css.scss", :red) : (FileUtils.mv 'application-org.css.scss', 'application.css.scss')}
157
+ inside("app/controllers") {(File.file? "admins_controller.rb") ? ( say " Please merge existing jinda_org/admins_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/admins_controller.rb', 'admins_controller.rb')}
158
+ inside("app/controllers") {(File.file? "articles_controller.rb") ? ( say " Please merge existing jinda_org/articles_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/articles_controller.rb', 'articles_controller.rb')}
159
+ inside("app/controllers") {(File.file? "comments_controller.rb") ? ( say " Please merge existing jinda_org/comments_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/comments_controller.rb', 'comments_controller.rb')}
160
+ inside("app/controllers") {(File.file? "docs_controller.rb") ? ( say " Please merge existing jinda_org/docs_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/docs_controller.rb', 'docs_controller.rb')}
161
+ inside("app/controllers") {(File.file? "identities_controller.rb") ? ( say " Please merge existing jinda_org/identities_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/identities_controller.rb', 'identities_controller.rb')}
162
+ inside("app/controllers") {(File.file? "application_controller.rb") ? ( say " Pleas merge existing jinda_org/application_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/application_controller.rb', 'application_controller.rb')}
163
+ ## Moved to Engine
164
+ # inside("app/controllers") {(File.file? "jinda_controller.rb") ? ( say " Please merge existing jinda_org/jinda_controller.rb after this installation", :red) : (FileUtils.mv 'jinda_org/jinda_controller.rb', 'jinda_controller.rb')}
165
+ inside("app/controllers") {(File.file? "password_resets_controller.rb") ? ( say " Please merge existing jinda_org/password_resets_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/password_resets_controller.rb', 'password_resets_controller.rb')}
166
+ inside("app/controllers") {(File.file? "password_resets.rb") ? ( say " Please merge existing jinda_org/password_resets.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/password_resets.rb', 'password_resets.rb')}
167
+ inside("app/controllers") {(File.file? "sessions_controller.rb") ? ( say " Please merge existing jinda_org/sessions_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/sessions_controller.rb', 'sessions_controller.rb')}
168
+ inside("app/controllers") {(File.file? "users_controller.rb") ? ( say " Please merge existing jinda_org/users_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/users_controller.rb', 'users_controller.rb')}
169
+ inside("app/controllers") {(File.file? "sitemap_controller.rb") ? ( say " Please merge existing jinda_org/sitemap_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/sitemap_controller.rb', 'sitemap_controller.rb')}
170
+ inside("app/controllers") {(File.file? "notes_controller.rb") ? ( say " Please merge existing jinda_org/notes_controller.rb after this installation", :yellow) : (FileUtils.mv 'jinda_org/notes_controller.rb', 'notes_controller.rb')}
171
+ end
172
+ # routes created each line as reversed order in routes
173
+ # Moved routes to Engine
174
+ def setup_routes
175
+ route "root :to => 'jinda#index'"
176
+ end
177
+
178
+ def setup_env
179
+ FileUtils.mv "README.md", "README.md.bak"
180
+ create_file 'README.md', ''
181
+ application do
182
+ %q{
183
+ # Jinda default
184
+ config.generators do |g|
185
+ g.orm :mongoid
186
+ g.template_engine :haml
187
+ g.test_framework :rspec
188
+ g.integration_tool :rspec
189
+ end
190
+
191
+ # config time zone
192
+ config.time_zone = "Central Time (US & Canada)"
193
+
194
+ # gmail config
195
+ # config.action_mailer.delivery_method = :smtp
196
+ # config.action_mailer.smtp_settings = {
197
+ # :address => "smtp.gmail.com",
198
+ # :port => 587,
199
+ # :user_name => 'user@gmail.com',
200
+ # :password => 'secret',
201
+ # :authentication => 'plain',
202
+ # :enable_starttls_auto => true }
203
+ # config.action_mailer.raise_delivery_errors = true
204
+ # config.action_mailer.perform_deliveries = true
205
+ }
206
+ end
207
+ initializer "jinda.rb" do
208
+ %q{# encoding: utf-8
209
+ MM = "#{Rails.root}/app/jinda/index.mm"
210
+ DEFAULT_TITLE = 'Jinda'
211
+ DEFAULT_HEADER = 'Jinda'
212
+ DEFAULT_DESCRIPTION = 'Rails Application Generator'
213
+ DEFAULT_KEYWORDS = %w[Jinda Rails ruby Generator, Prateep Kul]
214
+ GMAP = false
215
+ # ADSENSE = true
216
+ NEXT = "Next >"
217
+ # comment IMAGE_LOCATION to use cloudinary (specify params in config/cloudinary.yml)
218
+ IMAGE_LOCATION = "upload"
219
+ # for debugging
220
+ # DONT_SEND_MAIL = true
221
+ }
222
+ end
223
+ # Move mongoid.rb to jinda:config
224
+ # To avoid repeate install jinda:install crash
225
+ initializer "mongoid.rb" do
226
+ %q{# encoding: utf-8
227
+ #
228
+ # Mongoid 6 follows the new pattern of AR5 requiring a belongs_to relation to always require its parent
229
+ # belongs_to` will now trigger a validation error by default if the association is not present.
230
+ # You can turn this off on a per-association basis with `optional: true`.
231
+ # (Note this new default only applies to new Rails apps that will be generated with
232
+ # `config.active_record.belongs_to_required_by_default = true` in initializer.)
233
+ #
234
+ Mongoid::Config.belongs_to_required_by_default = false
235
+ }
236
+ end
237
+
238
+ inject_into_file 'config/environment.rb', :after => "initialize!" do
239
+ "\n\n# hack to fix cloudinary error https://github.com/archiloque/rest-client/issues/141" +
240
+ "\nclass Hash\n remove_method :read\nrescue\nend"
241
+ end
242
+ inject_into_file 'config/environments/development.rb', :after => 'config.action_mailer.raise_delivery_errors = false' do
243
+ "\n config.action_mailer.default_url_options = { :host => 'localhost:3000' }"
244
+ "\n config.assets.check_precompiled_asset = false"
245
+ end
246
+ inject_into_file 'config/environments/production.rb', :after => 'config.assets.compile = false' do
247
+ "\n config.assets.compile = true"
248
+ end
249
+ inject_into_file 'config/initializers/assets.rb', :after => '# Precompile additional assets.
250
+ ' do
251
+ "Rails.application.config.assets.precompile += %w( sarabun.css )" +
252
+ "\nRails.application.config.assets.precompile += %w( disable_enter_key.js )\n"
253
+ end
254
+ end
255
+
256
+ def finish
257
+ say "\n"
258
+ say "Jinda gem ready for next configuration install.\n"
259
+ say "Normally you will use the following command:\n"
260
+ say "----------------------------------------\n"
261
+ say "bundle install\n"
262
+ say "rails generate jinda:config\n"
263
+ say "rake jinda:seed\n"
264
+ say
265
+ say "----------------------------------------\n"
266
+ end
267
+ end
268
+ end
269
+ end
@@ -0,0 +1,132 @@
1
+ def setup_gems
2
+ # # define required gems: jinda_gem, jinda_dev_gem
3
+ jinda_gem =
4
+ [
5
+ ["bson", "4.4.2"],
6
+ ["maruku", "~> 0.7.3"],
7
+ ["bcrypt"],
8
+ ["rouge"],
9
+ ["normalize-rails"],
10
+ ["font-awesome-rails"],
11
+ ["font-awesome-sass", "~> 5.12.0"],
12
+ ["meta-tags"],
13
+ ["jquery-turbolinks", "2.1.0"],
14
+ ["mongo", "2.11.3"],
15
+ ["turbolinks_render"],
16
+ ["haml-rails", "~> 2.0.1"],
17
+ ["haml", "~> 5.1", ">= 5.1.2"],
18
+ ["mail"],
19
+ ["prawn"],
20
+ ["redcarpet"],
21
+ ["oauth2", "1.4.4"],
22
+ ["omniauth", "1.9.1"],
23
+ ["omniauth-oauth2", "1.6.0"],
24
+ ["omniauth-identity", "~> 1.1.1"],
25
+ ["omniauth-facebook", "6.0.0"],
26
+ ["omniauth-google-oauth2", "0.8.0"],
27
+ ["dotenv-rails"],
28
+ ["cloudinary", "1.13.2"],
29
+ ["kaminari", "1.2.0"],
30
+ ["jquery-rails", "4.3.5"]
31
+ ]
32
+ #
33
+ jinda_custom_gem =
34
+ [
35
+ ["mongoid-paperclip", require: "mongoid_paperclip"],
36
+ ["kaminari-mongoid", "1.0.1"],
37
+ ["nokogiri", "~> 1.11.0"],
38
+ ["mongoid", git: "git@github.com:kul1/mongoid-jinda.git"]
39
+ # ["mongoid", "~> 7.1.0"]
40
+ ]
41
+ #
42
+ jinda_dev_gem =
43
+ [
44
+ ["shoulda"],
45
+ ["rspec"],
46
+ ["rspec-rails"],
47
+ ["better_errors"],
48
+ ["binding_of_caller"],
49
+ ["pry-byebug"],
50
+ ["factory_bot_rails"],
51
+ ["database_cleaner"],
52
+ ["guard"],
53
+ ["guard-rspec"],
54
+ ["guard-minitest"],
55
+ ["capybara"],
56
+ ["selenium-webdriver"],
57
+ ["rb-fsevent"],
58
+ ["valid_attribute"],
59
+ ["faker"]
60
+ ]
61
+
62
+ # Check each jinda_gem and create new array if found one otherwise just create.
63
+ # Open Gemfile add gem if not exist
64
+ jinda_gem.each do |g|
65
+ unless (%x(gem list -e --no-versions #{g[0]})) == "#{g[0]}\n"
66
+ if g.count == 2
67
+ gem g[0], g[1]
68
+ else
69
+ gem g[0]
70
+ end
71
+ else
72
+ if g.count == 2
73
+ xgem_0 = %x(gem list -e #{g[0]})
74
+ unless xgem_0.include?(("#{g[1]}").gsub(/[~> ]/, ''))
75
+ # puts " Found existing #{xgem_0} in Gemfile or System, Please edit Gemfile", :red
76
+ puts " Found existing #{xgem_0} in Gemfile or System, Please edit Gemfile"
77
+ gem g[0], g[1]
78
+ else
79
+ # puts " Checking #{g[0]} found Ver. #{g[1]} already exist in Gemfile", :green
80
+ puts " Checking #{g[0]} found Ver. #{g[1]} already exist in Gemfile"
81
+ end
82
+ end
83
+ # puts " SKIP adding #{g[0]} in Gemfile", :yellow
84
+ puts " SKIP adding #{g[0]} in Gemfile"
85
+ end
86
+ end
87
+
88
+ # create list of gem in sub-group dev and test
89
+ jinda_dev_new = Array.new
90
+ jinda_dev_gem.each do |g|
91
+ unless (%x(gem list -e --no-versions #{g[0]})) == "#{g[0]}\n"
92
+ jinda_dev_new << g
93
+ else
94
+ # puts " #{g[0]} already exist in Gemfile", :yellow
95
+ puts " #{g[0]} already exist in Gemfile"
96
+ end
97
+ end
98
+ unless jinda_dev_new.count == 0
99
+ gem_group :development, :test do
100
+ jinda_dev_new.each do |n|
101
+ if n.count == 1
102
+ gem n[0]
103
+ else
104
+ gem n[0], n[1]
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ # create list of custom gem
111
+ jinda_custom_new = Array.new
112
+ jinda_custom_gem.each do |g|
113
+ # unless (%x(gem list -e --no-versions #{g[0]})) == "#{g[0]}\n"
114
+ unless File.read("Gemfile").include?("#{g[0]}, #{g[1]}")
115
+ jinda_custom_new << g
116
+ else
117
+ puts " #{g[0]} already exist in Gemfile", :yellow
118
+ puts " #{g[0]} already exist in Gemfile", :yellow
119
+ end
120
+ end
121
+ unless jinda_custom_new.count == 0
122
+ jinda_custom_new.each do |c|
123
+ # puts " Checking if #{c[0]} already exist in Gemfile", :yellow
124
+ puts " Checking if #{c[0]} already exist in Gemfile"
125
+ if c.count == 1
126
+ gem c[0]
127
+ else
128
+ gem c[0], c[1]
129
+ end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,6 @@
1
+ binding.pry
2
+ puts 'This is test'
3
+ puts 'This is test'
4
+ puts 'This is test'
5
+ puts 'This is test'
6
+ puts 'This is test'
@@ -0,0 +1,30 @@
1
+ module Jinda
2
+ module Generators
3
+ class MinitestGenerator < Rails::Generators::Base
4
+ def self.source_root
5
+ File.dirname(__FILE__) + "/templates"
6
+ end
7
+
8
+ desc "config minitest"
9
+ def gen_minitest
10
+ #copy test directory with jinda test for minitest
11
+ directory "test"
12
+ run "guard init minitest"
13
+ end
14
+
15
+ desc "Finish guard init minitest"
16
+ def finish
17
+ puts " Finish guard init minitest.\n"
18
+ puts " Finish copy test directory for minitest\n"
19
+ puts " Finish copy jinda test for minitest\n"
20
+ puts "-----------------------------------------\n"
21
+ puts " Please remove spec directory if exist\n"
22
+ puts " To start guard run:\n"
23
+ puts "-----------------------------------------\n"
24
+ puts "guard \n"
25
+ puts "-----------------------------------------\n"
26
+ end
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,30 @@
1
+ module Jinda
2
+ module Generators
3
+ class RspecGenerator < Rails::Generators::Base
4
+ def self.source_root
5
+ File.dirname(__FILE__) + "/templates"
6
+ end
7
+
8
+ desc "config rspec"
9
+ def gen_rspec
10
+ # generate "rspec:install"
11
+ # empty_directory "spec/support"
12
+ # empty_directory "spec/model"
13
+ # empty_directory "spec/routing"
14
+ # copy_file ".rspec", ".rspec.bak"
15
+ run "guard init"
16
+ copy_file "dotrspec",".rspec"
17
+ end
18
+
19
+ desc "Finish generate rspec:install"
20
+ def finish
21
+ puts " Finish generate rspec:install.\n"
22
+ puts " To start guard run:\n"
23
+ puts "-----------------------------------------\n"
24
+ puts "guard \n"
25
+ puts "-----------------------------------------\n"
26
+ end
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,26 @@
1
+ # https://docs.docker.com/compose/rails/
2
+ FROM ruby:2.6.8
3
+ RUN apt-get update -qq
4
+ RUN mkdir /myapp
5
+ WORKDIR /myapp
6
+ COPY Gemfile /myapp/Gemfile
7
+ COPY Gemfile.lock /myapp/Gemfile.lock
8
+ # Fix from here
9
+ RUN gem install bundler:2.2.27
10
+ # Fix end here
11
+ RUN bundle install
12
+ COPY . /myapp
13
+
14
+ # Set Rails environment to production
15
+ # ENV RAILS_ENV production
16
+ # RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
17
+ # && apt install -y nodejs
18
+
19
+ # Add a script to be executed every time the container starts.
20
+ COPY entrypoint.sh /usr/bin/
21
+ RUN chmod +x /usr/bin/entrypoint.sh
22
+ ENTRYPOINT ["entrypoint.sh"]
23
+ EXPOSE 3000
24
+
25
+ # Start the main process.
26
+ CMD ["rails", "server", "-b", "0.0.0.0"]
@@ -0,0 +1,173 @@
1
+ # Jinda
2
+ Rails Application Generator using Freemind
3
+
4
+ * [jinda](https://github.com/kul1/jinda)
5
+ - ![jinda-screen](https://user-images.githubusercontent.com/3953832/41832753-0143339a-7813-11e8-9ef9-c1601443c604.png)
6
+
7
+ ## Additional Extension themes also available at
8
+ * [jinda_adminlte](https://github.com/kul1/jinda_adminlte)
9
+ - ![j18-screen](https://user-images.githubusercontent.com/3953832/34298172-faa7e962-e6e1-11e7-93e2-19dfd4ab42af.png)
10
+
11
+ * [jinda_adminbsb](https://github.com/kul1/jinda_adminbsb)
12
+ - ![jinda-bsb](https://user-images.githubusercontent.com/3953832/34320779-bb0980d2-e7c6-11e7-855c-fafc23487ba5.png)
13
+
14
+ ## Prerequisites
15
+
16
+ These versions works for sure but others may do.
17
+
18
+ * Ruby 2.7.0
19
+ * Rails 6.0.3
20
+ * MongoDB 6
21
+ * Freemind 1.0.1
22
+
23
+ ## Convention
24
+
25
+ * database is MongoDB
26
+ * images stored in upload directory, unset IMAGE_LOCATION in `initializer/jinda.rb` to use Cloudinary
27
+ * mail use Gmail SMTP, config in `config/application.rb`
28
+ * authentication use omniauth-identity
29
+
30
+ ## Sample Application
31
+
32
+ Supposed we want to create ecommerce web site, first create a Rails
33
+ app without ActiveRecord
34
+
35
+ $ rails new YOURAPP -BOTJ
36
+
37
+ ## Add jinda to your Gemfile:
38
+
39
+ gem 'jinda'
40
+
41
+ For Development (most updated)
42
+
43
+ gem 'jinda', github:'kul1/jinda'
44
+
45
+ depend on your operating system, you may need to uncomment
46
+
47
+ gem 'therubyracer', :platforms => :ruby
48
+
49
+ install gems
50
+
51
+ $ bundle
52
+
53
+ generate jinda application
54
+
55
+ $ rails generate jinda:install
56
+
57
+ Then run bundle again to install additional gems added by jinda
58
+
59
+ $ bundle
60
+
61
+ (or run all with "sh install.sh" )
62
+
63
+ configure mongoid, omniauth
64
+
65
+ $ rails generate jinda:config
66
+
67
+ Please make sure mongod is running then create admin user
68
+
69
+ $ rails jinda:seed
70
+
71
+ now the application is ready, start it as any Rails application
72
+
73
+ $ rails server
74
+
75
+ go to http://localhost:3000, click *Sign In* on the left menu, and enter user name `admin` and password `secret`
76
+
77
+ ![login](https://user-images.githubusercontent.com/3953832/41832924-d868f8f0-7813-11e8-93bb-19c0357cf604.png)
78
+
79
+ Now open file `app/jinda/index.mm` using Freemind
80
+
81
+ ![index mm](https://user-images.githubusercontent.com/3953832/34680350-7906fbe8-f45e-11e7-8df5-969b4c735c6e.png)
82
+
83
+ The 3 main branches are
84
+
85
+ * models - this defines all the models to use in the application
86
+ * services - this defines services which will be come the menu on the left of the screen. There will be 2 levels; the first sub branch is the main menu (modules) and the second sub branch is the sub menu (services)
87
+ * roles - this defines role for all users
88
+
89
+ ### models
90
+
91
+ Fiirst, we need to create some product so we click on models we'll see 2 models person and address. These are sample only. You can delete them or modify them however you want. We'll take a look at them first
92
+
93
+ ![models](https://user-images.githubusercontent.com/3953832/34681380-50b27dd6-f461-11e7-8472-3a14d76e0f16.png)
94
+
95
+ The first sub branch (e.g. person) is the model name. According to Rails convention, this should be a singular word. The next sub branch are columns in the database. Let's take a look at each:
96
+
97
+ * `fname` - this create a column (field) called fname which is a String by default
98
+ * `sex: integer` - this create a column called sex, it is integer so must be explicity defined. The next sub branch (1: male) is disregarded by Jinda so we can put whatever we want. Here I just put some reminder.
99
+ * `belongs_to :address` - here we have ![pen](https://cloud.githubusercontent.com/assets/3953832/25600038/3a4ffb66-2f0b-11e7-9f03-b875e550eefe.png)
100
+ icon. this means whatever text on this line will be added as is to the model Jinda generates. You use this to specify anything you want such as association, index, remarks in code, etc. according to mongoid gem. To draw the icon, rest mouse on the branch and hit &ltAlt-I&gt.
101
+ * `dob: date` - use any type that mongoid provides.
102
+ * `photo` - for file field, just use String here. Jinda will receive the binary file and store in file system or cloudinary then generate a url link to it.
103
+
104
+ In this example we just want a product model, so delete the person and address model and add a product branch like so
105
+
106
+ ![freemind1](https://user-images.githubusercontent.com/3953832/34680349-78f1eea6-f45e-11e7-8e43-50d9025bb449.png)
107
+
108
+ Save the mind map then run:
109
+
110
+ rake jinda:update
111
+
112
+ This will create file `app/models/product.rb`. In this file, note the comment lines `# jinda begin` and ` # jinda end`. Everything inside these comments will get overwritten when you change the models branch in the mind map so if you need to put anything inside here, use the mind map instead. You can add anything outside these comment lines which will be preserved when doing jinda:update.
113
+
114
+ ### services
115
+
116
+ Next we'll add some product into the database, we'll first take a look at the services branch, which already has 3 sub branches; users, admins, and devs. Unlike models person and address branches, these branches are actively used by the system so I recommend that you leave them alone. Let's open the users branch
117
+
118
+ ![image](https://cloud.githubusercontent.com/assets/3953832/25599895/ecf46466-2f09-11e7-82aa-81ade6b9cd83.png)
119
+
120
+ The text `users:User` on the sub branch has these implications:
121
+
122
+ * `users` correspond to `app/controllers/users_controller.rb` which already exist when you do rails generate jinda:install. New branch will create new controller if not exist. In Jinda term, this will be called module.
123
+ * `User` will create entry in main menu on the left of the screen. You don't see it in the screenshot above because it's controlled by the sub branch `role:m` which means this menu only available for login member. If you already signed in as admin, you should see it now.
124
+
125
+ The next sub branches has the following:
126
+
127
+ * `role: m` - means that this module (menu) is available only to user who has role m (if you open the role branch now will see that role m is member). All registered user has role m by default. User who is not log on would not be able to access this module.
128
+ * `link:info: /users` - means that this is a link, the format is link: *submenu label* : *url* where submenu label is the text to show in the submenu and url is the link to go to, in this case, it woud go to http://localhost:3000/users which will perform index action of UsersController.
129
+ * `user:edit` the branch that do not start with role:, rule:, nor link: will be a Jinda service. You will then specify the sequence of the execution as in this example there are 3 sub branches - enter_user, update_user, and rule:login? Let's take a look at them:
130
+
131
+ * `enter_user:edit` - the first step is to display a form to input user information, this is accompanied by icon ![image](https://cloud.githubusercontent.com/assets/3953832/25599946/47c32cf6-2f0a-11e7-80a8-2c02c6294c9a.png)
132
+ which means user interface screen. and will correspond to a view file `app/views/users/user/enter_user.html.erb` where `/users` comes from the module name (the sub branch of services), `/user` comes from the service name (the sub branch of users), and `enter_user.html.erb` comes from the first part of this branch. The `edit` after the colon is just a description of this step. This branch also has sub branch `rule:login? && own_xmain?` which specify rule for this step that the user must be login and can continue this task if he is the one who started it. *task* in here means each instance of service.
133
+ * `update_user` - this icon ![image](https://cloud.githubusercontent.com/assets/3953832/25599976/87b69ad2-2f0a-11e7-9aba-1bd4e9546d3e.png) means to execute method update_user within `users_controller.rb`
134
+
135
+ Armed with this knowledge, we are ready to add new product into our application like so:
136
+
137
+ ![add_enter](https://cloud.githubusercontent.com/assets/3953832/25600158/582d1fbe-2f0c-11e7-9bde-01a195a45b6c.png)
138
+
139
+
140
+ To generate controller and views we save this mind map and run
141
+
142
+ rake jinda:update
143
+
144
+ open file `app/views/products/add/enter.html.erb` you'll see some sample view already in there but commented. edit the file so it look like this
145
+
146
+
147
+ ![product_enter](https://cloud.githubusercontent.com/assets/3953832/25600363/e5cc8282-2f0d-11e7-81f7-273c9bdc1a63.png)
148
+
149
+
150
+ Note that we do not specify form_tag and submit_tag, these will be supplied by Jinda.
151
+
152
+ then open file `app/controllers/products_controller.rb` and add `create` method as follow. The method name has to be correspond to the ![bookmark](http://songrit.googlecode.com/files/bookmark.png) branch.
153
+
154
+ ![products_controller](http://songrit.googlecode.com/files/products_controller.png)
155
+
156
+ ## Testing
157
+
158
+ run following command:
159
+
160
+ rails generate jinda:rspec
161
+ guard init
162
+ guard
163
+
164
+ ![rspec](https://user-images.githubusercontent.com/3953832/34680352-7931d426-f45e-11e7-9f40-8b85b94c61bf.png)
165
+
166
+
167
+ ## Contributing
168
+
169
+ 1. Fork it
170
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
171
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
172
+ 4. Push to the branch (`git push origin my-new-feature`)
173
+ 5. Create new Pull Request