engineyard-serverside 2.8.0.pre → 3.0.3

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 (312) hide show
  1. checksums.yaml +7 -0
  2. data/bin/engineyard-serverside-execute-service-hook +1 -1
  3. data/features/hook/running-a-deploy-hook.feature +277 -0
  4. data/features/hook/step_definitions/running-a-deploy-hook-steps.rb +200 -0
  5. data/features/step_definitions/command_steps.rb +8 -0
  6. data/features/step_definitions/version_steps.rb +5 -0
  7. data/features/support/env.rb +63 -0
  8. data/features/support/error_codes.rb +17 -0
  9. data/features/support/fs_helpers.rb +82 -0
  10. data/features/support/output_helpers.rb +7 -0
  11. data/features/support/runner.rb +41 -0
  12. data/features/version.feature +7 -0
  13. data/lib/engineyard-serverside.rb +2 -5
  14. data/lib/engineyard-serverside/callbacks/collection/base.rb +12 -5
  15. data/lib/engineyard-serverside/callbacks/distributor.rb +2 -7
  16. data/lib/engineyard-serverside/callbacks/executor/executable.rb +2 -0
  17. data/lib/engineyard-serverside/cli/app.rb +6 -0
  18. data/lib/engineyard-serverside/cli/workflows/calling_deploy_hooks.rb +1 -2
  19. data/lib/engineyard-serverside/configuration.rb +3 -3
  20. data/lib/engineyard-serverside/deploy.rb +4 -8
  21. data/lib/engineyard-serverside/shell.rb +38 -10
  22. data/lib/engineyard-serverside/version.rb +1 -1
  23. data/spec/engineyard-serverside/callbacks/collection/combined_spec.rb +232 -0
  24. data/spec/engineyard-serverside/callbacks/collection/deploy_hooks_spec.rb +170 -0
  25. data/spec/engineyard-serverside/callbacks/collection/service_hooks/collection_spec.rb +171 -0
  26. data/spec/engineyard-serverside/callbacks/collection/service_hooks/combined_spec.rb +174 -0
  27. data/spec/engineyard-serverside/callbacks/collection/service_hooks_spec.rb +31 -0
  28. data/spec/engineyard-serverside/callbacks/collection_spec.rb +49 -0
  29. data/spec/engineyard-serverside/callbacks/distributor/remote_spec.rb +135 -0
  30. data/spec/engineyard-serverside/callbacks/distributor/viability_filter_spec.rb +208 -0
  31. data/spec/engineyard-serverside/callbacks/distributor_spec.rb +43 -0
  32. data/spec/engineyard-serverside/callbacks/executor/executable_spec.rb +386 -0
  33. data/spec/engineyard-serverside/callbacks/executor/ruby/context_spec.rb +538 -0
  34. data/spec/engineyard-serverside/callbacks/executor/ruby/executor_spec.rb +313 -0
  35. data/spec/engineyard-serverside/callbacks/executor/ruby_spec.rb +35 -0
  36. data/spec/engineyard-serverside/callbacks/executor_spec.rb +45 -0
  37. data/spec/engineyard-serverside/callbacks_spec.rb +31 -0
  38. data/spec/engineyard-serverside/cli/workflows/base_spec.rb +237 -0
  39. data/spec/engineyard-serverside/cli/workflows/calling_deploy_hooks_spec.rb +65 -0
  40. data/spec/engineyard-serverside/cli/workflows/deploying_applications_spec.rb +61 -0
  41. data/spec/engineyard-serverside/cli/workflows/disabling_maintenance_spec.rb +61 -0
  42. data/spec/engineyard-serverside/cli/workflows/enabling_maintenance_spec.rb +61 -0
  43. data/spec/engineyard-serverside/cli/workflows/helpers_spec.rb +64 -0
  44. data/spec/engineyard-serverside/cli/workflows/rolling_back_applications_spec.rb +61 -0
  45. data/spec/engineyard-serverside/cli/workflows/showing_maintenance_status_spec.rb +60 -0
  46. data/spec/engineyard-serverside/cli/workflows_spec.rb +87 -0
  47. data/spec/engineyard-serverside/dependency_manager/base_spec.rb +139 -0
  48. data/spec/engineyard-serverside/paths_spec.rb +820 -0
  49. data/spec/engineyard-serverside/propagator_spec.rb +56 -0
  50. data/spec/engineyard-serverside/server_spec.rb +390 -0
  51. data/spec/engineyard-serverside/shell/helpers_spec.rb +98 -0
  52. data/spec/engineyard-serverside/shell/yieldio_spec.rb +33 -0
  53. data/spec/engineyard-serverside/shell_spec.rb +543 -0
  54. data/spec/engineyard-serverside/slug/distributor_spec.rb +199 -0
  55. data/spec/engineyard-serverside/slug/enabler_spec.rb +191 -0
  56. data/spec/engineyard-serverside/slug/failure_handler_spec.rb +114 -0
  57. data/spec/engineyard-serverside/slug/finalizer_spec.rb +191 -0
  58. data/spec/engineyard-serverside/slug/generator_spec.rb +82 -0
  59. data/spec/engineyard-serverside/slug/migrator_spec.rb +137 -0
  60. data/spec/engineyard-serverside/slug/restarter_spec.rb +226 -0
  61. data/spec/engineyard-serverside/slug/source/updater_spec.rb +710 -0
  62. data/spec/engineyard-serverside/slug/source_spec.rb +40 -0
  63. data/spec/engineyard-serverside/source_spec.rb +171 -0
  64. data/spec/railway_spec.rb +130 -0
  65. data/spec/result/failure_spec.rb +113 -0
  66. data/spec/result/success_spec.rb +109 -0
  67. data/spec/result_spec.rb +23 -0
  68. data/spec/spec_helper.rb +3 -349
  69. metadata +327 -602
  70. data/lib/vendor/json_pure/COPYING +0 -57
  71. data/lib/vendor/json_pure/GPL +0 -340
  72. data/lib/vendor/json_pure/README.rdoc +0 -358
  73. data/lib/vendor/json_pure/VERSION +0 -1
  74. data/lib/vendor/json_pure/lib/json.rb +0 -62
  75. data/lib/vendor/json_pure/lib/json/add/bigdecimal.rb +0 -28
  76. data/lib/vendor/json_pure/lib/json/add/complex.rb +0 -22
  77. data/lib/vendor/json_pure/lib/json/add/core.rb +0 -11
  78. data/lib/vendor/json_pure/lib/json/add/date.rb +0 -34
  79. data/lib/vendor/json_pure/lib/json/add/date_time.rb +0 -48
  80. data/lib/vendor/json_pure/lib/json/add/exception.rb +0 -31
  81. data/lib/vendor/json_pure/lib/json/add/ostruct.rb +0 -31
  82. data/lib/vendor/json_pure/lib/json/add/range.rb +0 -29
  83. data/lib/vendor/json_pure/lib/json/add/rational.rb +0 -22
  84. data/lib/vendor/json_pure/lib/json/add/regexp.rb +0 -30
  85. data/lib/vendor/json_pure/lib/json/add/struct.rb +0 -30
  86. data/lib/vendor/json_pure/lib/json/add/symbol.rb +0 -25
  87. data/lib/vendor/json_pure/lib/json/add/time.rb +0 -38
  88. data/lib/vendor/json_pure/lib/json/common.rb +0 -484
  89. data/lib/vendor/json_pure/lib/json/ext.rb +0 -21
  90. data/lib/vendor/json_pure/lib/json/generic_object.rb +0 -70
  91. data/lib/vendor/json_pure/lib/json/pure.rb +0 -21
  92. data/lib/vendor/json_pure/lib/json/pure/generator.rb +0 -522
  93. data/lib/vendor/json_pure/lib/json/pure/parser.rb +0 -359
  94. data/lib/vendor/json_pure/lib/json/version.rb +0 -8
  95. data/lib/vendor/multi_json/CHANGELOG.md +0 -121
  96. data/lib/vendor/multi_json/CONTRIBUTING.md +0 -46
  97. data/lib/vendor/multi_json/Gemfile +0 -31
  98. data/lib/vendor/multi_json/LICENSE.md +0 -20
  99. data/lib/vendor/multi_json/README.md +0 -105
  100. data/lib/vendor/multi_json/Rakefile +0 -12
  101. data/lib/vendor/multi_json/lib/multi_json.rb +0 -137
  102. data/lib/vendor/multi_json/lib/multi_json/adapters/gson.rb +0 -20
  103. data/lib/vendor/multi_json/lib/multi_json/adapters/json_common.rb +0 -35
  104. data/lib/vendor/multi_json/lib/multi_json/adapters/json_gem.rb +0 -12
  105. data/lib/vendor/multi_json/lib/multi_json/adapters/json_pure.rb +0 -12
  106. data/lib/vendor/multi_json/lib/multi_json/adapters/nsjsonserialization.rb +0 -35
  107. data/lib/vendor/multi_json/lib/multi_json/adapters/oj.rb +0 -29
  108. data/lib/vendor/multi_json/lib/multi_json/adapters/ok_json.rb +0 -58
  109. data/lib/vendor/multi_json/lib/multi_json/adapters/yajl.rb +0 -20
  110. data/lib/vendor/multi_json/lib/multi_json/vendor/okjson.rb +0 -602
  111. data/lib/vendor/multi_json/lib/multi_json/version.rb +0 -3
  112. data/lib/vendor/multi_json/spec/adapter_shared_example.rb +0 -162
  113. data/lib/vendor/multi_json/spec/helper.rb +0 -45
  114. data/lib/vendor/multi_json/spec/json_common_shared_example.rb +0 -36
  115. data/lib/vendor/multi_json/spec/multi_json_spec.rb +0 -151
  116. data/spec/archive_deploy_spec.rb +0 -53
  117. data/spec/basic_deploy_spec.rb +0 -26
  118. data/spec/bundler_deploy_spec.rb +0 -160
  119. data/spec/configuration_spec.rb +0 -206
  120. data/spec/custom_deploy_spec.rb +0 -128
  121. data/spec/deploy_hook_spec.rb +0 -378
  122. data/spec/deprecation_spec.rb +0 -23
  123. data/spec/ey_yml_customized_deploy_spec.rb +0 -99
  124. data/spec/fixtures/gitrepo.tar.gz +0 -0
  125. data/spec/fixtures/invalid_hook.rb +0 -1
  126. data/spec/fixtures/lockfiles/0.9-no-bundler +0 -111
  127. data/spec/fixtures/lockfiles/0.9-with-bundler +0 -117
  128. data/spec/fixtures/lockfiles/1.0-no-bundler +0 -54
  129. data/spec/fixtures/lockfiles/1.0.0.rc.1-with-bundler +0 -162
  130. data/spec/fixtures/lockfiles/1.0.18-do_mysql +0 -88
  131. data/spec/fixtures/lockfiles/1.0.18-do_postgres +0 -79
  132. data/spec/fixtures/lockfiles/1.0.18-mysql +0 -43
  133. data/spec/fixtures/lockfiles/1.0.18-mysql2 +0 -43
  134. data/spec/fixtures/lockfiles/1.0.18-pg +0 -43
  135. data/spec/fixtures/lockfiles/1.0.6-no-bundler +0 -51
  136. data/spec/fixtures/lockfiles/1.0.6-with-any-bundler +0 -52
  137. data/spec/fixtures/lockfiles/1.0.6-with-bundler +0 -52
  138. data/spec/fixtures/lockfiles/1.15.1-no-bundler +0 -51
  139. data/spec/fixtures/lockfiles/1.3.1-rails-3.2.13 +0 -112
  140. data/spec/fixtures/lockfiles/not-a-lockfile +0 -1
  141. data/spec/fixtures/repos/assets_detected/Gemfile +0 -5
  142. data/spec/fixtures/repos/assets_detected/Gemfile.lock +0 -88
  143. data/spec/fixtures/repos/assets_detected/README +0 -1
  144. data/spec/fixtures/repos/assets_detected/Rakefile +0 -5
  145. data/spec/fixtures/repos/assets_detected/app/assets/empty +0 -0
  146. data/spec/fixtures/repos/assets_detected/config/application.rb +0 -5
  147. data/spec/fixtures/repos/assets_detected/config/ey.yml +0 -3
  148. data/spec/fixtures/repos/assets_disabled/Gemfile +0 -5
  149. data/spec/fixtures/repos/assets_disabled/Gemfile.lock +0 -88
  150. data/spec/fixtures/repos/assets_disabled/README +0 -1
  151. data/spec/fixtures/repos/assets_disabled/Rakefile +0 -6
  152. data/spec/fixtures/repos/assets_disabled/app/assets/empty +0 -0
  153. data/spec/fixtures/repos/assets_disabled/config/application.rb +0 -5
  154. data/spec/fixtures/repos/assets_disabled/config/ey.yml +0 -3
  155. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +0 -5
  156. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +0 -88
  157. data/spec/fixtures/repos/assets_disabled_in_ey_yml/README +0 -1
  158. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +0 -6
  159. data/spec/fixtures/repos/assets_disabled_in_ey_yml/app/assets/empty +0 -0
  160. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb +0 -5
  161. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +0 -5
  162. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile +0 -5
  163. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile.lock +0 -88
  164. data/spec/fixtures/repos/assets_disabled_utf8/README +0 -3
  165. data/spec/fixtures/repos/assets_disabled_utf8/Rakefile +0 -5
  166. data/spec/fixtures/repos/assets_disabled_utf8/app/assets/empty +0 -0
  167. data/spec/fixtures/repos/assets_disabled_utf8/config/application.rb +0 -7
  168. data/spec/fixtures/repos/assets_disabled_utf8/config/ey.yml +0 -3
  169. data/spec/fixtures/repos/assets_enabled_all/Gemfile +0 -5
  170. data/spec/fixtures/repos/assets_enabled_all/Gemfile.lock +0 -88
  171. data/spec/fixtures/repos/assets_enabled_all/README +0 -1
  172. data/spec/fixtures/repos/assets_enabled_all/app/assets/empty +0 -0
  173. data/spec/fixtures/repos/assets_enabled_all/config/application.rb +0 -5
  174. data/spec/fixtures/repos/assets_enabled_all/config/ey.yml +0 -6
  175. data/spec/fixtures/repos/assets_enabled_all/script/assets +0 -5
  176. data/spec/fixtures/repos/assets_enabled_all/tmp/obstruction +0 -1
  177. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile +0 -3
  178. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile.lock +0 -10
  179. data/spec/fixtures/repos/assets_enabled_in_ey_yml/README +0 -1
  180. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +0 -8
  181. data/spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml +0 -4
  182. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile +0 -5
  183. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile.lock +0 -88
  184. data/spec/fixtures/repos/assets_enabled_util_only/README +0 -1
  185. data/spec/fixtures/repos/assets_enabled_util_only/Rakefile +0 -6
  186. data/spec/fixtures/repos/assets_enabled_util_only/app/assets/empty +0 -0
  187. data/spec/fixtures/repos/assets_enabled_util_only/config/application.rb +0 -5
  188. data/spec/fixtures/repos/assets_enabled_util_only/config/ey.yml +0 -6
  189. data/spec/fixtures/repos/assets_error/Gemfile +0 -5
  190. data/spec/fixtures/repos/assets_error/Gemfile.lock +0 -88
  191. data/spec/fixtures/repos/assets_error/README +0 -1
  192. data/spec/fixtures/repos/assets_error/Rakefile +0 -4
  193. data/spec/fixtures/repos/assets_error/app/assets/empty +0 -0
  194. data/spec/fixtures/repos/assets_error/config/application.rb +0 -5
  195. data/spec/fixtures/repos/assets_error/config/ey.yml +0 -4
  196. data/spec/fixtures/repos/assets_in_hook/Gemfile +0 -5
  197. data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +0 -88
  198. data/spec/fixtures/repos/assets_in_hook/README +0 -2
  199. data/spec/fixtures/repos/assets_in_hook/Rakefile +0 -5
  200. data/spec/fixtures/repos/assets_in_hook/app/assets/empty +0 -0
  201. data/spec/fixtures/repos/assets_in_hook/config/application.rb +0 -5
  202. data/spec/fixtures/repos/assets_in_hook/config/ey.yml +0 -3
  203. data/spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb +0 -2
  204. data/spec/fixtures/repos/bundle_fails/Gemfile +0 -1
  205. data/spec/fixtures/repos/bundle_fails/README +0 -1
  206. data/spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb +0 -1
  207. data/spec/fixtures/repos/bundler_disabled/Gemfile +0 -4
  208. data/spec/fixtures/repos/bundler_disabled/Gemfile.lock +0 -12
  209. data/spec/fixtures/repos/bundler_disabled/README +0 -1
  210. data/spec/fixtures/repos/bundler_disabled/config/ey.yml +0 -2
  211. data/spec/fixtures/repos/bundler_disabled/deploy/after_bundle.rb +0 -1
  212. data/spec/fixtures/repos/bundler_disabled/deploy/before_bundle.rb +0 -1
  213. data/spec/fixtures/repos/bundler_old/Gemfile +0 -5
  214. data/spec/fixtures/repos/bundler_old/Gemfile.lock +0 -15
  215. data/spec/fixtures/repos/bundler_old/README +0 -1
  216. data/spec/fixtures/repos/default/Gemfile +0 -4
  217. data/spec/fixtures/repos/default/Gemfile.lock +0 -12
  218. data/spec/fixtures/repos/default/README +0 -5
  219. data/spec/fixtures/repos/default/ey.yml +0 -3
  220. data/spec/fixtures/repos/executable_hooks/README +0 -1
  221. data/spec/fixtures/repos/executable_hooks/deploy/before_restart +0 -72
  222. data/spec/fixtures/repos/executable_hooks_not_executable/README +0 -3
  223. data/spec/fixtures/repos/executable_hooks_not_executable/deploy/before_restart +0 -3
  224. data/spec/fixtures/repos/ey_yml/Gemfile +0 -4
  225. data/spec/fixtures/repos/ey_yml/Gemfile.lock +0 -12
  226. data/spec/fixtures/repos/ey_yml/README +0 -1
  227. data/spec/fixtures/repos/ey_yml/config/ey.yml +0 -18
  228. data/spec/fixtures/repos/ey_yml/deploy/before_migrate.rb +0 -6
  229. data/spec/fixtures/repos/ey_yml_alt/Gemfile +0 -4
  230. data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +0 -12
  231. data/spec/fixtures/repos/ey_yml_alt/README +0 -1
  232. data/spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb +0 -6
  233. data/spec/fixtures/repos/ey_yml_alt/ey.yml +0 -12
  234. data/spec/fixtures/repos/hook_fails/README +0 -1
  235. data/spec/fixtures/repos/hook_fails/deploy/before_deploy.rb +0 -1
  236. data/spec/fixtures/repos/hooks/README +0 -1
  237. data/spec/fixtures/repos/hooks/deploy/after_bundle.rb +0 -1
  238. data/spec/fixtures/repos/hooks/deploy/after_compile_assets.rb +0 -1
  239. data/spec/fixtures/repos/hooks/deploy/after_deploy.rb +0 -1
  240. data/spec/fixtures/repos/hooks/deploy/after_migrate.rb +0 -1
  241. data/spec/fixtures/repos/hooks/deploy/after_restart.rb +0 -1
  242. data/spec/fixtures/repos/hooks/deploy/after_symlink.rb +0 -1
  243. data/spec/fixtures/repos/hooks/deploy/before_bundle.rb +0 -1
  244. data/spec/fixtures/repos/hooks/deploy/before_compile_assets.rb +0 -1
  245. data/spec/fixtures/repos/hooks/deploy/before_deploy.rb +0 -1
  246. data/spec/fixtures/repos/hooks/deploy/before_migrate.rb +0 -1
  247. data/spec/fixtures/repos/hooks/deploy/before_restart.rb +0 -1
  248. data/spec/fixtures/repos/hooks/deploy/before_symlink.rb +0 -1
  249. data/spec/fixtures/repos/multi_dep_manager/README +0 -1
  250. data/spec/fixtures/repos/multi_dep_manager/composer.json +0 -5
  251. data/spec/fixtures/repos/multi_dep_manager/composer.lock +0 -462
  252. data/spec/fixtures/repos/multi_dep_manager/package.json +0 -7
  253. data/spec/fixtures/repos/multi_dep_manager/public/index.php +0 -4
  254. data/spec/fixtures/repos/no_ey_config/Gemfile +0 -3
  255. data/spec/fixtures/repos/no_ey_config/Gemfile.lock +0 -10
  256. data/spec/fixtures/repos/no_ey_config/README +0 -1
  257. data/spec/fixtures/repos/no_ey_config/ey.yml +0 -3
  258. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile +0 -3
  259. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile.lock +0 -10
  260. data/spec/fixtures/repos/no_ey_config_no_warning/README +0 -1
  261. data/spec/fixtures/repos/no_ey_config_no_warning/ey.yml +0 -5
  262. data/spec/fixtures/repos/no_gemfile_lock/Gemfile +0 -4
  263. data/spec/fixtures/repos/no_gemfile_lock/README +0 -1
  264. data/spec/fixtures/repos/no_gemfile_lock/ey.yml +0 -3
  265. data/spec/fixtures/repos/nodejs/README +0 -1
  266. data/spec/fixtures/repos/nodejs/package.json +0 -7
  267. data/spec/fixtures/repos/not_bundled/README +0 -1
  268. data/spec/fixtures/repos/npm_disabled/README +0 -1
  269. data/spec/fixtures/repos/npm_disabled/config/ey.yml +0 -2
  270. data/spec/fixtures/repos/npm_disabled/package.json +0 -7
  271. data/spec/fixtures/repos/php_composer_disabled/README +0 -1
  272. data/spec/fixtures/repos/php_composer_disabled/composer.json +0 -5
  273. data/spec/fixtures/repos/php_composer_disabled/composer.lock +0 -462
  274. data/spec/fixtures/repos/php_composer_disabled/config/ey.yml +0 -2
  275. data/spec/fixtures/repos/php_composer_disabled/public/index.php +0 -4
  276. data/spec/fixtures/repos/php_composer_lock/README +0 -1
  277. data/spec/fixtures/repos/php_composer_lock/composer.json +0 -5
  278. data/spec/fixtures/repos/php_composer_lock/composer.lock +0 -462
  279. data/spec/fixtures/repos/php_composer_lock/public/index.php +0 -4
  280. data/spec/fixtures/repos/php_no_composer_lock/README +0 -1
  281. data/spec/fixtures/repos/php_no_composer_lock/composer.json +0 -21
  282. data/spec/fixtures/repos/php_no_composer_lock/public/index.php +0 -4
  283. data/spec/fixtures/repos/public_system/Gemfile +0 -4
  284. data/spec/fixtures/repos/public_system/Gemfile.lock +0 -12
  285. data/spec/fixtures/repos/public_system/README +0 -5
  286. data/spec/fixtures/repos/public_system/ey.yml +0 -3
  287. data/spec/fixtures/repos/public_system/public/system/cant_touch_this.txt +0 -3
  288. data/spec/fixtures/repos/sqlite3/Gemfile +0 -4
  289. data/spec/fixtures/repos/sqlite3/Gemfile.lock +0 -89
  290. data/spec/fixtures/repos/sqlite3/README +0 -1
  291. data/spec/fixtures/retwisj.war +0 -0
  292. data/spec/fixtures/valid_hook.rb +0 -1
  293. data/spec/git_strategy_spec.rb +0 -34
  294. data/spec/lockfile_parser_spec.rb +0 -126
  295. data/spec/maintenance_spec.rb +0 -44
  296. data/spec/multi_dependency_manager_spec.rb +0 -25
  297. data/spec/nodejs_deploy_spec.rb +0 -30
  298. data/spec/php_deploy_spec.rb +0 -81
  299. data/spec/platform_configure_spec.rb +0 -61
  300. data/spec/rails31_deploy_spec.rb +0 -172
  301. data/spec/restart_spec.rb +0 -43
  302. data/spec/rollback_spec.rb +0 -87
  303. data/spec/server_spec.rb +0 -70
  304. data/spec/services_deploy_spec.rb +0 -165
  305. data/spec/shell_spec.rb +0 -57
  306. data/spec/source/archive_spec.rb +0 -33
  307. data/spec/source/git_spec.rb +0 -44
  308. data/spec/sqlite3_deploy_spec.rb +0 -38
  309. data/spec/support/integration.rb +0 -103
  310. data/spec/support/source_doubles.rb +0 -28
  311. data/spec/support/timecop.rb +0 -5
  312. data/spec/symlink_spec.rb +0 -15
@@ -0,0 +1,8 @@
1
+ Then %(the command has an unsuccessful exit status) do
2
+ step %{the exit status should not be 0}
3
+ step %{the exit status should not be 255}
4
+ end
5
+
6
+ Then %(the command suffers a critical failure) do
7
+ step %{the exit status should be 255}
8
+ end
@@ -0,0 +1,5 @@
1
+ require 'engineyard-serverside/version'
2
+
3
+ Then %{the current version is displayed} do
4
+ expect(output_text).to include(EY::Serverside::VERSION)
5
+ end
@@ -0,0 +1,63 @@
1
+ unless RUBY_VERSION =~ /^1\.8\./
2
+ require 'simplecov'
3
+ SimpleCov.coverage_dir 'coverage/outside'
4
+ SimpleCov.start do
5
+ add_filter '/spec/'
6
+ add_filter '/features/'
7
+ add_filter '/mock/'
8
+ add_filter '/lib/vendor/'
9
+ add_group 'CLI Workflows', 'lib/engineyard-serverside/cli/workflows/'
10
+ add_group 'Callbacks', 'lib/engineyard-serverside/callbacks/'
11
+ end
12
+ end
13
+
14
+ require 'cucumber/rspec/doubles'
15
+ require 'aruba/cucumber'
16
+ require 'factis/cucumber'
17
+ require 'devnull'
18
+ require 'engineyard-serverside'
19
+
20
+ # This is a fun bit of glue to allow us to use Aruba's in-process runner
21
+ class Runatron
22
+ include RSpec::Mocks::ExampleMethods
23
+
24
+ def initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel)
25
+ @argv, @stdin, @stdout, @stderr, @kernel = argv, stdin, stdout, stderr, kernel
26
+ end
27
+
28
+ def execute!
29
+ exit_code = begin
30
+ $stderr = @stderr
31
+ $stdin = @stdin
32
+ $stdout = @stdout
33
+ $logger = Logger.new(DevNull.new)
34
+ allow(Logger).to receive(:new).and_return($logger)
35
+
36
+ EY::Serverside::CLI::App.start(@argv)
37
+ 0
38
+ rescue StandardError => e
39
+ b = e.backtrace
40
+ @stderr.puts("#{b.shift}: #{e.message} (#{e.class})")
41
+ @stderr.puts(b.map {|s| "\tfrom #{s}"}.join("\n"))
42
+ 255
43
+ rescue SystemExit => e
44
+ e.status
45
+ ensure
46
+ $stderr = STDERR
47
+ $stdin = STDIN
48
+ $stdout = STDOUT
49
+ end
50
+
51
+ @kernel.exit(exit_code)
52
+ end
53
+ end
54
+
55
+ Aruba.configure do |config|
56
+ config.command_launcher = :in_process
57
+ config.main_class = Runatron
58
+ end
59
+
60
+ After do
61
+ ExecutedCommands.reset
62
+ cleanup_fs
63
+ end
@@ -0,0 +1,17 @@
1
+ Before('@error') do
2
+ memorize_fact(:exit_status, 1)
3
+ end
4
+
5
+ Before('@failure') do
6
+ memorize_fact(:exit_status, 255)
7
+ end
8
+
9
+ After do
10
+ exit_status = begin
11
+ recall_fact(:exit_status)
12
+ rescue
13
+ 0
14
+ end
15
+
16
+ step %{the exit status should be #{exit_status}}
17
+ end
@@ -0,0 +1,82 @@
1
+ require 'pathname'
2
+ module FsHelpers
3
+ def project_root
4
+ Pathname.new(File.expand_path(File.join(__FILE__, '..', '..', '..')))
5
+ end
6
+
7
+ def data_path
8
+ project_root.join('tmp', 'data')
9
+ end
10
+
11
+ def setup_data_path
12
+ data_path.mkpath
13
+ end
14
+
15
+ def cleanup_data_path
16
+ data_path.rmtree if data_path.exist?
17
+ end
18
+
19
+ def app_path
20
+ data_path.join(app_name)
21
+ end
22
+
23
+ def setup_app_path
24
+ app_path.mkpath
25
+ end
26
+
27
+ def release_path
28
+ app_path.join('20200212024800')
29
+ end
30
+
31
+ def setup_release_path
32
+ release_path.mkpath
33
+ end
34
+
35
+ def deploy_hooks_path
36
+ release_path.join('deploy')
37
+ end
38
+
39
+ def setup_deploy_hooks_path
40
+ deploy_hooks_path.mkpath
41
+ end
42
+
43
+ def cleanup_deploy_hooks_path
44
+ deploy_hooks_path.rmtree if deploy_hooks_path.exist?
45
+ end
46
+
47
+ def shared_app_path
48
+ app_path.join('shared')
49
+ end
50
+
51
+ def shared_hooks_path
52
+ shared_app_path.join('hooks')
53
+ end
54
+
55
+ def setup_shared_hooks_path
56
+ shared_hooks_path.mkpath
57
+ end
58
+
59
+ def cleanup_shared_hooks_path
60
+ shared_hooks_path.rmtree if shared_hooks_path.exist?
61
+ end
62
+
63
+ def service_path(service)
64
+ shared_hooks_path.join(service)
65
+ end
66
+
67
+ def setup_service_path(service)
68
+ service_path(service).mkpath
69
+ end
70
+
71
+ def setup_fs
72
+ setup_deploy_hooks_path
73
+ setup_shared_hooks_path
74
+ end
75
+
76
+ def cleanup_fs
77
+ cleanup_data_path
78
+ end
79
+
80
+ end
81
+
82
+ World(FsHelpers)
@@ -0,0 +1,7 @@
1
+ module OutputHelpers
2
+ def output_text
3
+ last_command_started.output
4
+ end
5
+ end
6
+
7
+ World(OutputHelpers)
@@ -0,0 +1,41 @@
1
+ require 'runner'
2
+ require 'engineyard-serverside/spawner'
3
+
4
+ module ExecutedCommands
5
+ def self.record(cmd)
6
+ executed.push(cmd)
7
+
8
+ EY::Serverside::Spawner::Result.new(cmd, true, nil, nil)
9
+ end
10
+
11
+ def self.executed
12
+ @executed ||= []
13
+ end
14
+
15
+ def self.reset
16
+ @executed = nil
17
+ end
18
+
19
+ def self.deploy_hook_executed?(callback_name)
20
+ executed.
21
+ select {|x|
22
+ x.match(%r{engineyard-serverside-execute-hook #{callback_name}})
23
+ }.length > 0
24
+ end
25
+
26
+ def self.service_hook_executed?(service_name, callback_name)
27
+ executed.
28
+ select {|x|
29
+ x.match(
30
+ %r{engineyard-serverside-execute-service-hook #{service_name}/#{callback_name}}
31
+ )
32
+ }.length > 0
33
+ end
34
+
35
+ end
36
+
37
+ module Runner
38
+ def run(cmd)
39
+ ExecutedCommands.record(cmd)
40
+ end
41
+ end
@@ -0,0 +1,7 @@
1
+ Feature: Showing the version
2
+ In order to know what iteration of engineyard-serverside I'm using, I want to
3
+ be able to have it print out the version.
4
+
5
+ Scenario: User issues the vesion command
6
+ When I run `engineyard-serverside version`
7
+ Then the current version is displayed
@@ -13,13 +13,10 @@ if defined?(Encoding) && Encoding.respond_to?(:default_internal=) # String.insta
13
13
  end
14
14
 
15
15
  $LOAD_PATH.unshift File.expand_path('vendor/thor/lib', File.dirname(__FILE__))
16
- $LOAD_PATH.unshift File.expand_path('vendor/systemu/lib', File.dirname(__FILE__))
17
16
  $LOAD_PATH.unshift File.expand_path('vendor/escape/lib', File.dirname(__FILE__))
18
- $LOAD_PATH.unshift File.expand_path('vendor/json_pure/lib', File.dirname(__FILE__))
19
- $LOAD_PATH.unshift File.expand_path('vendor/multi_json/lib', File.dirname(__FILE__))
20
17
 
21
18
  require 'escape'
22
- require 'multi_json'
19
+ require 'json'
23
20
  require 'uri'
24
21
 
25
22
  require 'engineyard-serverside/version'
@@ -39,7 +36,7 @@ module EY
39
36
  RemoteFailure = Class.new StandardError
40
37
 
41
38
  def self.node
42
- @node ||= deep_indifferentize(MultiJson.load(dna_json))
39
+ @node ||= deep_indifferentize(JSON.load(dna_json))
43
40
  end
44
41
 
45
42
  def self.dna_json
@@ -20,6 +20,10 @@ module EY
20
20
  hooks
21
21
  end
22
22
 
23
+ def empty?
24
+ hooks.empty?
25
+ end
26
+
23
27
  def matching(callback)
24
28
  favor(
25
29
  :ruby,
@@ -37,11 +41,14 @@ module EY
37
41
  end
38
42
 
39
43
  def execute(config, shell, callback)
40
- Executor.execute(
41
- config,
42
- shell,
43
- matching(callback)
44
- )
44
+ matches = matching(callback)
45
+
46
+ if matches.empty?
47
+ shell.info("No hooks detected for #{callback}. Skipping.")
48
+ return
49
+ end
50
+
51
+ Executor.execute(config, shell, matches)
45
52
  end
46
53
 
47
54
  private
@@ -6,13 +6,8 @@ module EY
6
6
  module Callbacks
7
7
 
8
8
  module Distributor
9
- def self.distribute(runner, hooks)
10
- ViabilityFilter.
11
- new.
12
- call({:candidates => hooks, :shell => runner.shell}).
13
- and_then {|callback_name|
14
- Remote.distribute(runner, callback_name)
15
- }
9
+ def self.distribute(runner, callback_name)
10
+ Remote.distribute(runner, callback_name)
16
11
  end
17
12
  end
18
13
 
@@ -29,6 +29,8 @@ module EY
29
29
 
30
30
  def validate_hook(input = {})
31
31
  unless hook_path.executable?
32
+ shell.warning("Skipping possible deploy hook #{hook} because it is not executable.")
33
+
32
34
  return Failure(
33
35
  input.merge(
34
36
  {
@@ -8,6 +8,7 @@ require 'engineyard-serverside/cli/server_hash_extractor'
8
8
  require 'engineyard-serverside/servers'
9
9
  require 'engineyard-serverside/cli/helpers'
10
10
  require 'engineyard-serverside/cli/workflows'
11
+ require 'engineyard-serverside/version'
11
12
 
12
13
  module EY
13
14
  module Serverside
@@ -130,6 +131,11 @@ module EY
130
131
  def restart
131
132
  Workflows.perform(:restart, options)
132
133
  end
134
+
135
+ desc "version", "Show the engineyard-serverside version"
136
+ def version
137
+ puts EY::Serverside::VERSION
138
+ end
133
139
  end
134
140
  end
135
141
  end
@@ -11,8 +11,7 @@ module EY
11
11
  class CallingDeployHooks < Base
12
12
  private
13
13
  def procedure
14
- Callbacks.
15
- load(config.paths).
14
+ Callbacks.load(config.paths).
16
15
  execute(config, shell, hook_name)
17
16
  end
18
17
 
@@ -1,4 +1,4 @@
1
- require 'multi_json'
1
+ require 'json'
2
2
  require 'thor'
3
3
  require 'pp'
4
4
  require 'yaml'
@@ -131,7 +131,7 @@ module EY
131
131
 
132
132
  def initialize(options)
133
133
  opts = string_keys(options)
134
- config = MultiJson.load(opts.delete("config") || "{}")
134
+ config = JSON.load(opts.delete("config") || "{}")
135
135
  append_config_source opts # high priority
136
136
  append_config_source config # lower priority
137
137
  end
@@ -216,7 +216,7 @@ module EY
216
216
  end
217
217
 
218
218
  def to_json
219
- MultiJson.dump(configuration)
219
+ JSON.dump(configuration)
220
220
  end
221
221
 
222
222
  def node
@@ -1,11 +1,12 @@
1
1
  # Inspired by capistrano, thanks Jamis!
2
2
  require 'base64'
3
- require 'multi_json'
3
+ #require 'multi_json'
4
+ require 'json'
4
5
  require 'engineyard-serverside/rails_assets'
5
6
  require 'engineyard-serverside/maintenance'
6
7
  require 'engineyard-serverside/dependency_manager'
7
8
  require 'engineyard-serverside/dependency_manager/legacy_helpers'
8
- require 'engineyard-serverside/callbacks'
9
+ require 'engineyard-serverside/callbacks/distributor'
9
10
 
10
11
  module EY
11
12
  module Serverside
@@ -451,9 +452,8 @@ defaults:
451
452
  end
452
453
 
453
454
  def callback(what)
454
- load_callbacks
455
455
  @callbacks_reached ||= true
456
- @callbacks_collection.distribute(self, what)
456
+ Callbacks::Distributor.distribute(self, what)
457
457
  end
458
458
 
459
459
  def source
@@ -512,10 +512,6 @@ defaults:
512
512
  def compile_assets
513
513
  RailsAssets.detect_and_compile(config, shell, self)
514
514
  end
515
-
516
- def load_callbacks
517
- @callbacks_collection ||= Callbacks.load(paths)
518
- end
519
515
  end # DeployBase
520
516
 
521
517
  class Deploy < DeployBase
@@ -48,23 +48,51 @@ module EY
48
48
  debug msg.gsub(BOL, SUBSTATUS_PREFIX)
49
49
  end
50
50
 
51
- def fatal(msg) logger.fatal "FATAL: #{msg}" end
52
- def error(msg) logger.error "ERROR: #{msg}" end
53
- def warning(msg) logger.warn "WARNING: #{msg}" end
51
+ def fatal(msg)
52
+ logger.fatal("FATAL: #{msg}")
53
+ end
54
+
55
+ def error(msg)
56
+ logger.error("ERROR: #{msg}")
57
+ end
58
+
59
+ def warning(msg)
60
+ logger.warn("WARNING: #{msg}")
61
+ end
54
62
  alias warn warning
55
- def notice(msg) logger.warn msg end
56
- def info(msg) logger.info msg end
57
- def debug(msg) logger.debug msg end
58
- def unknown(msg) logger.unknown msg end
63
+
64
+ def notice(msg)
65
+ logger.warn(msg)
66
+ end
67
+
68
+ def info(msg)
69
+ logger.info(msg)
70
+ end
71
+
72
+ def debug(msg)
73
+ logger.debug(msg)
74
+ end
75
+
76
+ def unknown(msg)
77
+ logger.unknown(msg)
78
+ end
59
79
 
60
80
  # a debug outputter that displays a command being run
61
81
  # Formatis like this:
62
82
  # $ cmd blah do \
63
83
  # > something more
64
84
  # > end
65
- def command_show(cmd) debug cmd.gsub(BOL,CMD_CONTINUE).sub(CMD_CONTINUE, CMD_PREFIX) end
66
- def command_out(msg) debug msg.gsub(BOL,CMD_INDENT) end
67
- def command_err(msg) unknown msg.gsub(BOL,CMD_INDENT) end
85
+ def command_show(cmd)
86
+ debug(cmd.gsub(BOL,CMD_CONTINUE).sub(CMD_CONTINUE, CMD_PREFIX))
87
+ end
88
+
89
+ def command_out(msg)
90
+ debug(msg.gsub(BOL,CMD_INDENT))
91
+ end
92
+
93
+ def command_err(msg)
94
+ unknown(msg.gsub(BOL,CMD_INDENT))
95
+ end
68
96
 
69
97
  def logged_system(cmd, server = nil)
70
98
  EY::Serverside::Spawner.run(cmd, self, server)