smartcloud 0.0.31

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 (192) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README.md +79 -0
  4. data/bin/runner +20 -0
  5. data/bin/smartcloud +54 -0
  6. data/lib/smartcloud.rb +16 -0
  7. data/lib/smartcloud/boot.rb +93 -0
  8. data/lib/smartcloud/docker.rb +120 -0
  9. data/lib/smartcloud/grids/grid-mysql/docker-entrypoint-initdb.d/.keep +0 -0
  10. data/lib/smartcloud/grids/grid-nginx/fastcgi.conf +9 -0
  11. data/lib/smartcloud/grids/grid-nginx/nginx.tmpl +373 -0
  12. data/lib/smartcloud/grids/grid-runner/Dockerfile +27 -0
  13. data/lib/smartcloud/grids/grid-runner/buildpacks/rails/Dockerfile +30 -0
  14. data/lib/smartcloud/grids/grid-solr/docker-entrypoint-initdb.d/.keep +0 -0
  15. data/lib/smartcloud/grids/grid-solr/sunspot/conf/schema.xml +278 -0
  16. data/lib/smartcloud/grids/grid-solr/sunspot/conf/solrconfig.xml +632 -0
  17. data/lib/smartcloud/grids/mysql.rb +60 -0
  18. data/lib/smartcloud/grids/nginx.rb +133 -0
  19. data/lib/smartcloud/grids/runner.rb +373 -0
  20. data/lib/smartcloud/grids/solr.rb +92 -0
  21. data/lib/smartcloud/machine.rb +63 -0
  22. data/lib/smartcloud/templates/dotsmartcloud/config/environment.rb +13 -0
  23. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-mysql/data/.keep +0 -0
  24. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-nginx/certificates/.keep +0 -0
  25. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-nginx/htpasswd/.keep +0 -0
  26. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-nginx/users.yml +1 -0
  27. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-runner/apps/containers/.keep +0 -0
  28. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-runner/apps/repositories/.keep +0 -0
  29. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-runner/buildpacks/rails/gems/.keep +0 -0
  30. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-runner/pre-receive +13 -0
  31. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/.keep +0 -0
  32. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/README.txt +77 -0
  33. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/contractions_ca.txt +8 -0
  34. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/contractions_fr.txt +15 -0
  35. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/contractions_ga.txt +5 -0
  36. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/contractions_it.txt +23 -0
  37. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/hyphenations_ga.txt +5 -0
  38. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stemdict_nl.txt +6 -0
  39. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stoptags_ja.txt +420 -0
  40. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ar.txt +125 -0
  41. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_bg.txt +193 -0
  42. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ca.txt +220 -0
  43. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_cz.txt +172 -0
  44. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_da.txt +110 -0
  45. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_de.txt +294 -0
  46. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_el.txt +78 -0
  47. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_en.txt +54 -0
  48. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_es.txt +356 -0
  49. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_eu.txt +99 -0
  50. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_fa.txt +313 -0
  51. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_fi.txt +97 -0
  52. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_fr.txt +186 -0
  53. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ga.txt +110 -0
  54. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_gl.txt +161 -0
  55. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_hi.txt +235 -0
  56. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_hu.txt +211 -0
  57. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_hy.txt +46 -0
  58. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_id.txt +359 -0
  59. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_it.txt +303 -0
  60. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ja.txt +127 -0
  61. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_lv.txt +172 -0
  62. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_nl.txt +119 -0
  63. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_no.txt +194 -0
  64. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_pt.txt +253 -0
  65. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ro.txt +233 -0
  66. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ru.txt +243 -0
  67. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_sv.txt +133 -0
  68. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_th.txt +119 -0
  69. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_tr.txt +212 -0
  70. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/userdict_ja.txt +29 -0
  71. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/managed-schema +1007 -0
  72. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/params.json +20 -0
  73. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/protwords.txt +21 -0
  74. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/solrconfig.xml +1355 -0
  75. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/stopwords.txt +14 -0
  76. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/synonyms.txt +29 -0
  77. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/_rest_managed.json +1 -0
  78. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/_schema_analysis_stopwords_english.json +38 -0
  79. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/_schema_analysis_synonyms_english.json +11 -0
  80. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/clustering/carrot2/README.txt +11 -0
  81. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/clustering/carrot2/kmeans-attributes.xml +19 -0
  82. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/clustering/carrot2/lingo-attributes.xml +24 -0
  83. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/clustering/carrot2/stc-attributes.xml +19 -0
  84. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/currency.xml +67 -0
  85. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/elevate.xml +42 -0
  86. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/contractions_ca.txt +8 -0
  87. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/contractions_fr.txt +15 -0
  88. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/contractions_ga.txt +5 -0
  89. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/contractions_it.txt +23 -0
  90. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/hyphenations_ga.txt +5 -0
  91. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stemdict_nl.txt +6 -0
  92. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stoptags_ja.txt +420 -0
  93. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ar.txt +125 -0
  94. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_bg.txt +193 -0
  95. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ca.txt +220 -0
  96. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ckb.txt +136 -0
  97. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_cz.txt +172 -0
  98. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_da.txt +110 -0
  99. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_de.txt +294 -0
  100. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_el.txt +78 -0
  101. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_en.txt +54 -0
  102. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_es.txt +356 -0
  103. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_eu.txt +99 -0
  104. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_fa.txt +313 -0
  105. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_fi.txt +97 -0
  106. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_fr.txt +186 -0
  107. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ga.txt +110 -0
  108. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_gl.txt +161 -0
  109. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_hi.txt +235 -0
  110. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_hu.txt +211 -0
  111. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_hy.txt +46 -0
  112. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_id.txt +359 -0
  113. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_it.txt +303 -0
  114. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ja.txt +127 -0
  115. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_lv.txt +172 -0
  116. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_nl.txt +119 -0
  117. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_no.txt +194 -0
  118. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_pt.txt +253 -0
  119. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ro.txt +233 -0
  120. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ru.txt +243 -0
  121. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_sv.txt +133 -0
  122. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_th.txt +119 -0
  123. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_tr.txt +212 -0
  124. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/userdict_ja.txt +29 -0
  125. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/managed-schema +1187 -0
  126. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/mapping-FoldToASCII.txt +3813 -0
  127. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/mapping-ISOLatin1Accent.txt +246 -0
  128. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/params.json +11 -0
  129. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/protwords.txt +21 -0
  130. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/solrconfig.xml +1616 -0
  131. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/spellings.txt +2 -0
  132. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/stopwords.txt +14 -0
  133. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/synonyms.txt +29 -0
  134. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/update-script.js +53 -0
  135. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/README.txt +101 -0
  136. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/VM_global_library.vm +186 -0
  137. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/browse.vm +33 -0
  138. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/cluster.vm +19 -0
  139. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/cluster_results.vm +31 -0
  140. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/debug.vm +28 -0
  141. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/did_you_mean.vm +11 -0
  142. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/error.vm +11 -0
  143. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facet_fields.vm +24 -0
  144. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facet_pivot.vm +12 -0
  145. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facet_queries.vm +12 -0
  146. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facet_ranges.vm +23 -0
  147. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facets.vm +10 -0
  148. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/footer.vm +43 -0
  149. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/head.vm +37 -0
  150. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/header.vm +7 -0
  151. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/hit.vm +25 -0
  152. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/hit_grouped.vm +43 -0
  153. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/hit_plain.vm +25 -0
  154. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/join_doc.vm +20 -0
  155. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.css +48 -0
  156. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.js +763 -0
  157. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/layout.vm +24 -0
  158. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/main.css +231 -0
  159. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/mime_type_lists.vm +68 -0
  160. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/pagination_bottom.vm +22 -0
  161. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/pagination_top.vm +29 -0
  162. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/product_doc.vm +32 -0
  163. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/query.vm +42 -0
  164. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/query_form.vm +64 -0
  165. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/query_group.vm +43 -0
  166. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/query_spatial.vm +75 -0
  167. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/results_list.vm +22 -0
  168. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/richtext_doc.vm +153 -0
  169. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/suggest.vm +8 -0
  170. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/tabs.vm +50 -0
  171. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/example.xsl +132 -0
  172. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/example_atom.xsl +67 -0
  173. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/example_rss.xsl +66 -0
  174. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/luke.xsl +337 -0
  175. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/updateXml.xsl +70 -0
  176. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/_rest_managed.json +1 -0
  177. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/admin-extra.html +31 -0
  178. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/currency.xml +67 -0
  179. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/elevate.xml +36 -0
  180. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/lang/stopwords_en.txt +54 -0
  181. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/mapping-ISOLatin1Accent.txt +246 -0
  182. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/protwords.txt +21 -0
  183. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/schema.xml +278 -0
  184. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/scripts.conf +24 -0
  185. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/solrconfig.xml +632 -0
  186. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/spellings.txt +2 -0
  187. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/synonyms.txt +29 -0
  188. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/lib/.keep +0 -0
  189. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/solr.xml +53 -0
  190. data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/zoo.cfg +31 -0
  191. data/lib/smartcloud/user.rb +72 -0
  192. metadata +237 -0
@@ -0,0 +1,60 @@
1
+ # The main Smartcloud Grids Mysql driver
2
+ module Smartcloud
3
+ module Grids
4
+ class Mysql
5
+ def initialize
6
+ end
7
+
8
+ def self.up(exposed)
9
+ if Smartcloud::Docker.running?
10
+ # Creating networks
11
+ unless system("docker network inspect mysql-network", [:out, :err] => File::NULL)
12
+ print "-----> Creating network mysql-network ... "
13
+ if system("docker network create mysql-network", out: File::NULL)
14
+ puts "done"
15
+ end
16
+ end
17
+
18
+ # Creating & Starting containers
19
+ print "-----> Creating container mysql ... "
20
+ if system("docker create \
21
+ --name='mysql' \
22
+ --env MYSQL_RANDOM_ROOT_PASSWORD=yes \
23
+ #{"--publish='3306:3306'" if exposed == '--exposed'} \
24
+ --volume='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-mysql/data:/var/lib/mysql' \
25
+ --restart='always' \
26
+ --network='mysql-network' \
27
+ mysql:5.7.27 \
28
+ --default-authentication-plugin=mysql_native_password", out: File::NULL)
29
+
30
+ puts "done"
31
+ print "-----> Starting container mysql ... "
32
+ if system("docker start mysql", out: File::NULL)
33
+ puts "done"
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ def self.down
40
+ if Smartcloud::Docker.running?
41
+ # Stopping & Removing containers - in reverse order
42
+ print "-----> Stopping container mysql ... "
43
+ if system("docker stop 'mysql'", out: File::NULL)
44
+ puts "done"
45
+ print "-----> Removing container mysql ... "
46
+ if system("docker rm 'mysql'", out: File::NULL)
47
+ puts "done"
48
+ end
49
+ end
50
+
51
+ # Removing networks
52
+ print "-----> Removing network mysql-network ... "
53
+ if system("docker network rm mysql-network", out: File::NULL)
54
+ puts "done"
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,133 @@
1
+ # The main Smartcloud Grids Nginx driver
2
+ module Smartcloud
3
+ module Grids
4
+ class Nginx
5
+ def initialize
6
+ end
7
+
8
+ def self.up(exposed)
9
+ if Smartcloud::Docker.running?
10
+ # Creating volumes
11
+ print "-----> Creating volume nginx-confd ... "
12
+ if system("docker volume create nginx-confd", out: File::NULL)
13
+ puts "done"
14
+ end
15
+
16
+ print "-----> Creating volume nginx-vhost ... "
17
+ if system("docker volume create nginx-vhost", out: File::NULL)
18
+ puts "done"
19
+ end
20
+
21
+ print "-----> Creating volume nginx-shtml ... "
22
+ if system("docker volume create nginx-shtml", out: File::NULL)
23
+ puts "done"
24
+ end
25
+
26
+ # Creating networks
27
+ unless system("docker network inspect nginx-network", [:out, :err] => File::NULL)
28
+ print "-----> Creating network nginx-network ... "
29
+ if system("docker network create nginx-network", out: File::NULL)
30
+ puts "done"
31
+ end
32
+ end
33
+
34
+ # Creating & Starting containers
35
+ print "-----> Creating container nginx ... "
36
+ if system("docker create \
37
+ --name='nginx' \
38
+ #{"--publish='80:80' --publish='443:443'" if exposed == '--exposed'} \
39
+ --volume='nginx-confd:/etc/nginx/conf.d/' \
40
+ --volume='nginx-vhost:/etc/nginx/vhost.d/' \
41
+ --volume='nginx-shtml:/usr/share/nginx/html' \
42
+ --volume='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-nginx/certificates:/etc/nginx/certs' \
43
+ --volume='#{Smartcloud.config.root_path}/lib/smartcloud/grids/grid-nginx/fastcgi.conf:/etc/nginx/fastcgi.conf:ro' \
44
+ --volume='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-nginx/htpasswd:/etc/nginx/htpasswd:ro' \
45
+ --restart='always' \
46
+ --network='nginx-network' \
47
+ nginx", out: File::NULL)
48
+
49
+ puts "done"
50
+ print "-----> Starting container nginx ... "
51
+ if system("docker start nginx", out: File::NULL)
52
+ puts "done"
53
+ end
54
+ end
55
+
56
+ print "-----> Creating container nginx-gen ... "
57
+ if system("docker create \
58
+ --name='nginx-gen' \
59
+ --volumes-from nginx \
60
+ --volume='#{Smartcloud.config.root_path}/lib/smartcloud/grids/grid-nginx/nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro' \
61
+ --volume='/var/run/docker.sock:/tmp/docker.sock:ro' \
62
+ --restart='always' \
63
+ --network='nginx-network' \
64
+ jwilder/docker-gen \
65
+ -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf", out: File::NULL)
66
+
67
+ puts "done"
68
+ print "-----> Starting container nginx-gen ... "
69
+ if system("docker start nginx-gen", out: File::NULL)
70
+ puts "done"
71
+ end
72
+ end
73
+
74
+ print "-----> Creating container nginx-letsencrypt ... "
75
+ if system("docker create \
76
+ --name='nginx-letsencrypt' \
77
+ --env NGINX_PROXY_CONTAINER=nginx \
78
+ --env NGINX_DOCKER_GEN_CONTAINER=nginx-gen \
79
+ --volumes-from nginx \
80
+ --volume='/var/run/docker.sock:/var/run/docker.sock:ro' \
81
+ --restart='always' \
82
+ --network='nginx-network' \
83
+ jrcs/letsencrypt-nginx-proxy-companion", out: File::NULL)
84
+
85
+ puts "done"
86
+ print "-----> Starting container nginx-letsencrypt ... "
87
+ if system("docker start nginx-letsencrypt", out: File::NULL)
88
+ puts "done"
89
+ end
90
+ end
91
+ end
92
+ end
93
+
94
+ def self.down
95
+ if Smartcloud::Docker.running?
96
+ # Stopping & Removing containers - in reverse order
97
+ print "-----> Stopping container nginx-letsencrypt ... "
98
+ if system("docker stop 'nginx-letsencrypt'", out: File::NULL)
99
+ puts "done"
100
+ print "-----> Removing container nginx-letsencrypt ... "
101
+ if system("docker rm 'nginx-letsencrypt'", out: File::NULL)
102
+ puts "done"
103
+ end
104
+ end
105
+
106
+ print "-----> Stopping container nginx-gen ... "
107
+ if system("docker stop 'nginx-gen'", out: File::NULL)
108
+ puts "done"
109
+ print "-----> Removing container nginx-gen ... "
110
+ if system("docker rm 'nginx-gen'", out: File::NULL)
111
+ puts "done"
112
+ end
113
+ end
114
+
115
+ print "-----> Stopping container nginx ... "
116
+ if system("docker stop 'nginx'", out: File::NULL)
117
+ puts "done"
118
+ print "-----> Removing container nginx ... "
119
+ if system("docker rm 'nginx'", out: File::NULL)
120
+ puts "done"
121
+ end
122
+ end
123
+
124
+ # Removing networks
125
+ print "-----> Removing network nginx-network ... "
126
+ if system("docker network rm nginx-network", out: File::NULL)
127
+ puts "done"
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,373 @@
1
+ # The main Smartcloud Grids Git driver
2
+ module Smartcloud
3
+ module Grids
4
+ class Runner
5
+ def initialize
6
+ end
7
+
8
+ def self.up
9
+ if Smartcloud::Docker.running?
10
+ # Creating swapfile
11
+ # self.create_swapfile
12
+
13
+ # Creating images
14
+ self.create_images
15
+
16
+ # Creating & Starting containers
17
+ if system("docker image inspect smartcloud/runner", [:out, :err] => File::NULL) && system("docker image inspect smartcloud/buildpacks/rails", [:out, :err] => File::NULL)
18
+ print "-----> Creating container runner ... "
19
+ if system("docker create \
20
+ --name='runner' \
21
+ --env VIRTUAL_PROTO=fastcgi \
22
+ --env VIRTUAL_HOST=#{Smartcloud.config.git_domain} \
23
+ --env LETSENCRYPT_HOST=#{Smartcloud.config.git_domain} \
24
+ --env LETSENCRYPT_EMAIL=#{Smartcloud.config.sysadmin_email} \
25
+ --env LETSENCRYPT_TEST=#{Smartcloud.config.letsencrypt_test} \
26
+ --env USER_HOME_PATH=#{Smartcloud.config.user_home_path} \
27
+ --expose='9000' \
28
+ --volume='#{Smartcloud.config.user_home_path}/.smartcloud/config:#{Smartcloud.config.user_home_path}/.smartcloud/config' \
29
+ --volume='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner:#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner' \
30
+ --volume='/var/run/docker.sock:/var/run/docker.sock' \
31
+ --user=#{File.basename(Smartcloud.config.user_home_path)} \
32
+ --workdir='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps' \
33
+ --restart='always' \
34
+ --network='nginx-network' \
35
+ smartcloud/runner \
36
+ spawn-fcgi -n -p 9000 /usr/bin/fcgiwrap -f", out: File::NULL)
37
+ puts "done"
38
+
39
+ print "-----> Starting container runner ... "
40
+ if system("docker start runner", out: File::NULL)
41
+ puts "done"
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+
48
+ def self.down
49
+ if Smartcloud::Docker.running?
50
+ # Stopping & Removing containers - in reverse order
51
+ print "-----> Stopping container runner ... "
52
+ if system("docker stop 'runner'", out: File::NULL)
53
+ puts "done"
54
+
55
+ print "-----> Removing container runner ... "
56
+ if system("docker rm 'runner'", out: File::NULL)
57
+ puts "done"
58
+ end
59
+ end
60
+
61
+ # Removing images
62
+ self.destroy_images
63
+
64
+ # Removing swapfile
65
+ # self.destroy_swapfile
66
+ end
67
+ end
68
+
69
+ def self.create_swapfile
70
+ # Creating swapfile for bundler to work properly
71
+ unless system("sudo swapon -s | grep -ci '/swapfile'", out: File::NULL)
72
+ print "-----> Creating swap swapfile ... "
73
+ system("sudo install -o root -g root -m 0600 /dev/null /swapfile", out: File::NULL)
74
+ system("sudo dd if=/dev/zero of=/swapfile bs=1k count=2048k", [:out, :err] => File::NULL)
75
+ system("sudo mkswap /swapfile", out: File::NULL)
76
+ system("sudo sh -c 'echo \"/swapfile none swap sw 0 0\" >> /etc/fstab'", out: File::NULL)
77
+ system("echo 10 | sudo tee /proc/sys/vm/swappiness", out: File::NULL)
78
+ system("sudo sed -i '/^vm.swappiness = /d' /etc/sysctl.conf", out: File::NULL)
79
+ system("echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf", out: File::NULL)
80
+ puts "done"
81
+
82
+ print "-----> Starting swap swapfile ... "
83
+ if system("sudo swapon /swapfile", out: File::NULL)
84
+ puts "done"
85
+ end
86
+ end
87
+ end
88
+
89
+ def self.destroy_swapfile
90
+ if system("sudo swapon -s | grep -ci '/swapfile'", out: File::NULL)
91
+ print "-----> Stopping swap swapfile ... "
92
+ if system("sudo swapoff /swapfile", out: File::NULL)
93
+ system("sudo sed -i '/^vm.swappiness = /d' /etc/sysctl.conf", out: File::NULL)
94
+ system("echo 60 | sudo tee /proc/sys/vm/swappiness", out: File::NULL)
95
+ puts "done"
96
+
97
+ print "-----> Removing swap swapfile ... "
98
+ system("sudo sed -i '/^\\/swapfile/d' /etc/fstab", out: File::NULL)
99
+ if system("sudo rm /swapfile", out: File::NULL)
100
+ puts "done"
101
+ end
102
+ end
103
+ end
104
+ end
105
+
106
+ def self.create_images
107
+ unless system("docker image inspect smartcloud/runner", [:out, :err] => File::NULL)
108
+ print "-----> Creating image smartcloud/runner ... "
109
+ if system("docker image build -t smartcloud/runner \
110
+ --build-arg DOCKER_GID=`getent group docker | cut -d: -f3` \
111
+ --build-arg USER_UID=`id -u` \
112
+ --build-arg USER_NAME=`id -un` \
113
+ #{Smartcloud.config.root_path}/lib/smartcloud/grids/grid-runner", out: File::NULL)
114
+ puts "done"
115
+ end
116
+ end
117
+
118
+ unless system("docker image inspect smartcloud/buildpacks/rails", [:out, :err] => File::NULL)
119
+ print "-----> Creating image smartcloud/buildpacks/rails ... "
120
+ if system("docker image build -t smartcloud/buildpacks/rails #{Smartcloud.config.root_path}/lib/smartcloud/grids/grid-runner/buildpacks/rails", out: File::NULL)
121
+ puts "done"
122
+ end
123
+ end
124
+ end
125
+
126
+ def self.destroy_images
127
+ if system("docker image inspect smartcloud/buildpacks/rails", [:out, :err] => File::NULL)
128
+ print "-----> Removing image smartcloud/buildpacks/rails ... "
129
+ if system("docker image rm smartcloud/buildpacks/rails", out: File::NULL)
130
+ puts "done"
131
+ end
132
+ end
133
+
134
+ if system("docker image inspect smartcloud/runner", [:out, :err] => File::NULL)
135
+ print "-----> Removing image smartcloud/runner ... "
136
+ if system("docker image rm smartcloud/runner", out: File::NULL)
137
+ puts "done"
138
+ end
139
+ end
140
+ end
141
+
142
+ # Creating App!
143
+ #
144
+ # Example:
145
+ # >> Apps.create
146
+ # => Creation Complete
147
+ #
148
+ # Arguments:
149
+ # appname => (String)
150
+ # username => (String)
151
+ def self.create_app(appname, username)
152
+ if Smartcloud::Docker.running?
153
+ repository_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/repositories/#{appname}.git"
154
+ container_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/containers/#{appname}"
155
+ print "-----> Creating Application ... "
156
+
157
+ # Checking if app with given name already exists
158
+ if Dir.exist?(repository_path)
159
+ puts "failed. App with name '#{appname}' already exists."
160
+ exit
161
+ end
162
+
163
+ # Creating Directories
164
+ FileUtils.mkdir_p(repository_path)
165
+ FileUtils.mkdir_p(container_path)
166
+
167
+ # Initializing bare repo and pre-receive
168
+ Dir.chdir(repository_path) do
169
+ %x[git init --bare]
170
+ %x[chmod +x #{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/pre-receive]
171
+ %x[ln -s #{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/pre-receive #{repository_path}/hooks/pre-receive]
172
+ puts "done"
173
+ end
174
+
175
+ # Creating Environment File
176
+ if File.exist?("#{Smartcloud.config.user_home_path}/.smartcloud/config/environment.rb")
177
+ require "#{Smartcloud.config.user_home_path}/.smartcloud/config/environment"
178
+ end
179
+ unless File.exist? "#{container_path}/env"
180
+ print "-----> Creating App Environment ... "
181
+ system("cat > #{container_path}/env <<- EOF
182
+ ## System
183
+ USERNAME=#{username}
184
+ KEEP_RELEASES=3
185
+
186
+ ## Docker
187
+ VIRTUAL_HOST=#{appname}.#{Smartcloud.config.apps_domain}
188
+ LETSENCRYPT_HOST=#{appname}.#{Smartcloud.config.apps_domain}
189
+ LETSENCRYPT_EMAIL=#{Smartcloud.config.sysadmin_email}
190
+ LETSENCRYPT_TEST=false
191
+ EOF")
192
+ puts "done"
193
+ end
194
+ end
195
+ end
196
+
197
+ def self.destroy_app(appname)
198
+ if Smartcloud::Docker.running?
199
+ # Stopping & Removing old container
200
+ self.stop_app(appname)
201
+
202
+ # Destroying Directories
203
+ print "-----> Deleting App #{appname} ... "
204
+ repository_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/repositories/#{appname}.git"
205
+ container_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/containers/#{appname}"
206
+ FileUtils.rm_r(repository_path)
207
+ FileUtils.rm_r(container_path)
208
+ puts "done"
209
+ end
210
+ end
211
+
212
+ def self.prereceive_app(appname, username, oldrev, newrev, refname)
213
+ container_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/containers/#{appname}"
214
+
215
+ ## Verify the user and ensure the user is correct and has access to this repository
216
+ print "-----> Verifying User ... "
217
+ unless File.exist? "#{container_path}/env"
218
+ puts "Environment could not be loaded ... Failed"
219
+ exit 1
220
+ end
221
+
222
+ # Load ENV vars
223
+ File.open("#{container_path}/env").each_line do |line|
224
+ line.chomp!
225
+ next if line.empty? || line.start_with?('#')
226
+ key, value = line.split "="
227
+ ENV[key] = value
228
+ end
229
+
230
+ # Match Username
231
+ unless ENV['USERNAME'] == username
232
+ puts "User is not authorized ... Failed"
233
+ exit 1
234
+ end
235
+ puts "done"
236
+
237
+ # Only run this script for the master branch. You can remove this
238
+ # if block if you wish to run it for others as well.
239
+ if refname == "refs/heads/master"
240
+ print "-----> Initializing Application ... "
241
+
242
+ # Note: There should be no space between + and " in now_date.
243
+ # Note: date will be UTC date until timezone has been changed.
244
+ now_date = `date +"%Y%m%d%H%M%S"`.chomp!
245
+ container_path_with_now_date = "#{container_path}/#{now_date}"
246
+
247
+ unless Dir.exist? container_path_with_now_date
248
+ FileUtils.mkdir_p(container_path_with_now_date)
249
+ if system("git archive #{newrev} | tar -x -C #{container_path_with_now_date}")
250
+ puts "done"
251
+
252
+ # Clean up very old versions
253
+ Dir.chdir(container_path) do
254
+ app_versions = Dir.glob('*').select { |f| File.directory? f }.sort
255
+ destroy_count = app_versions.count - ENV['KEEP_RELEASES'].to_i
256
+ if destroy_count > 0
257
+ print "-----> Deleting Old Application Versions ... "
258
+ destroy_count.times do
259
+ FileUtils.rm_r(File.join(Dir.pwd, app_versions.shift))
260
+ end
261
+ puts "done"
262
+ end
263
+ end
264
+
265
+ # Start App
266
+ self.start_app(appname)
267
+ else
268
+ puts "failed. Could not extract new app version."
269
+ exit 1
270
+ end
271
+ end
272
+ end
273
+ end
274
+
275
+ def self.start_app(appname, app_version = 0)
276
+ if Smartcloud::Docker.running?
277
+ container_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/containers/#{appname}"
278
+
279
+ Dir.chdir(container_path) do
280
+ if app_version == 0
281
+ app_versions = Dir.glob('*').select { |f| File.directory? f }.sort
282
+ app_version = app_versions.last
283
+ end
284
+
285
+ container_path_with_now_date = "#{container_path}/#{app_version}"
286
+
287
+ puts "-----> Launching Application ... "
288
+
289
+ if File.exist? "#{container_path_with_now_date}/bin/rails"
290
+ # Stopping & Removing container
291
+ self.stop_app(appname)
292
+
293
+ # Starting Rails App
294
+ self.start_rails_app(appname, container_path, container_path_with_now_date)
295
+ end
296
+ end
297
+
298
+ # This line is important to cancel pre-receive push if finally the app could not be started.
299
+ # If the app was finally started, then this line should never be executed.
300
+ exit 1
301
+ end
302
+ end
303
+
304
+ def self.stop_app(appname)
305
+ if Smartcloud::Docker.running?
306
+ if system("docker inspect -f '{{.State.Running}}' #{appname}", [:out, :err] => File::NULL)
307
+ print "-----> Stopping container #{appname} ... "
308
+ if system("docker stop '#{appname}'", out: File::NULL)
309
+ puts "done"
310
+
311
+ print "-----> Removing container #{appname} ... "
312
+ if system("docker rm '#{appname}'", out: File::NULL)
313
+ puts "done"
314
+ end
315
+ end
316
+ else
317
+ puts "-----> Container #{appname} is currently not running."
318
+ end
319
+ end
320
+ end
321
+
322
+ def self.start_rails_app(appname, container_path, container_path_with_now_date)
323
+ puts "-----> Ruby on Rails Application Detected"
324
+
325
+ # Setup rails env
326
+ env_path = "#{container_path}/env"
327
+ system("grep -q '^## Rails' #{env_path} || echo '\n## Rails' >> #{env_path}")
328
+ system("grep -q '^RAILS_ENV=' #{env_path} || echo 'RAILS_ENV=production' >> #{env_path}")
329
+ system("grep -q '^RACK_ENV=' #{env_path} || echo 'RACK_ENV=production' >> #{env_path}")
330
+ system("grep -q '^RAILS_LOG_TO_STDOUT=' #{env_path} || echo 'RAILS_LOG_TO_STDOUT=enabled' >> #{env_path}")
331
+ system("grep -q '^RAILS_SERVE_STATIC_FILES=' #{env_path} || echo 'RAILS_SERVE_STATIC_FILES=enabled' >> #{env_path}")
332
+ system("grep -q '^LANG=' #{env_path} || echo 'LANG=en_US.UTF-8' >> #{env_path}")
333
+ system("grep -q '^RAILS_MASTER_KEY=' #{env_path} || echo 'RAILS_MASTER_KEY=yourmasterkey' >> #{env_path}")
334
+ puts "-----> WARNING: Please set your RAILS_MASTER_KEY env var for this rails app." if system("grep -q '^RAILS_MASTER_KEY=yourmasterkey' #{env_path}")
335
+
336
+ # Setup Procfile
337
+ unless File.exist? "#{container_path_with_now_date}/Procfile"
338
+ puts "-----> WARNING: Procfile not detected. Adding a default Procfile. It is recommended to add your own Procfile."
339
+ system("cat > #{container_path_with_now_date}/Procfile <<- EOF
340
+ web: bundle exec puma -C config/puma.rb
341
+ EOF")
342
+ end
343
+
344
+ # Creating & Starting container
345
+ # IMPORTANT NOTE:
346
+ # The below commands of docker are executed here. However, they run from the host.
347
+ # Therefore, the ~ used in the commands below is used to denote the home directory of the host
348
+ # and not the runner.
349
+ print "-----> Creating container #{appname} ... "
350
+ if system("docker create \
351
+ --name='#{appname}' \
352
+ --env-file='#{container_path}/env' \
353
+ --expose='5000' \
354
+ --volume='~#{container_path_with_now_date}:/code' \
355
+ --restart='always' \
356
+ --network='nginx-network' \
357
+ smartcloud/buildpacks/rails", out: File::NULL)
358
+ puts "done"
359
+
360
+ system("docker network connect solr-network #{appname}")
361
+ system("docker network connect mysql-network #{appname}")
362
+
363
+ print "-----> Starting container #{appname} ... "
364
+ if system("docker start #{appname}", out: File::NULL)
365
+ puts "done"
366
+ system("docker logs #{appname} --follow")
367
+ exit 0
368
+ end
369
+ end
370
+ end
371
+ end
372
+ end
373
+ end