houston-core 0.5.0.beta1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +0 -2
  3. data/.gitignore +3 -0
  4. data/Gemfile +1 -0
  5. data/Gemfile.lock +63 -62
  6. data/README.md +13 -121
  7. data/app/adapters/houston/adapters/ci_server/errors.rb +4 -4
  8. data/app/adapters/houston/adapters/ci_server/jenkins_adapter/job.rb +50 -50
  9. data/app/adapters/houston/adapters/ci_server/jenkins_adapter.rb +4 -4
  10. data/app/adapters/houston/adapters/ci_server/none_adapter/job.rb +5 -5
  11. data/app/adapters/houston/adapters/ci_server/none_adapter.rb +4 -4
  12. data/app/adapters/houston/adapters/deployment/engineyard.rb +20 -20
  13. data/app/adapters/houston/adapters/error_tracker/errbit_adapter/app.rb +14 -14
  14. data/app/adapters/houston/adapters/error_tracker/errbit_adapter/connection.rb +41 -41
  15. data/app/adapters/houston/adapters/error_tracker/errbit_adapter/notice.rb +6 -6
  16. data/app/adapters/houston/adapters/error_tracker/errbit_adapter/problem.rb +25 -25
  17. data/app/adapters/houston/adapters/error_tracker/errbit_adapter.rb +20 -20
  18. data/app/adapters/houston/adapters/error_tracker/none_adapter.rb +8 -8
  19. data/app/adapters/houston/adapters/error_tracker/null_app.rb +13 -13
  20. data/app/adapters/houston/adapters/ticket_tracker/errors.rb +5 -5
  21. data/app/adapters/houston/adapters/ticket_tracker/github_adapter/connection.rb +41 -41
  22. data/app/adapters/houston/adapters/ticket_tracker/github_adapter/issue.rb +22 -22
  23. data/app/adapters/houston/adapters/ticket_tracker/github_adapter.rb +7 -7
  24. data/app/adapters/houston/adapters/ticket_tracker/houston_adapter/connection.rb +13 -13
  25. data/app/adapters/houston/adapters/ticket_tracker/houston_adapter/ticket.rb +15 -15
  26. data/app/adapters/houston/adapters/ticket_tracker/houston_adapter.rb +4 -4
  27. data/app/adapters/houston/adapters/ticket_tracker/none_adapter.rb +4 -4
  28. data/app/adapters/houston/adapters/ticket_tracker/null_connection.rb +13 -13
  29. data/app/adapters/houston/adapters/ticket_tracker/null_ticket.rb +19 -19
  30. data/app/adapters/houston/adapters/ticket_tracker/unfuddle_adapter/connection.rb +54 -54
  31. data/app/adapters/houston/adapters/ticket_tracker/unfuddle_adapter/milestone.rb +10 -10
  32. data/app/adapters/houston/adapters/ticket_tracker/unfuddle_adapter/ticket.rb +59 -59
  33. data/app/adapters/houston/adapters/ticket_tracker/unfuddle_adapter.rb +9 -9
  34. data/app/adapters/houston/adapters/version_control/commit.rb +4 -4
  35. data/app/adapters/houston/adapters/version_control/errors.rb +9 -9
  36. data/app/adapters/houston/adapters/version_control/git_adapter/github_repo.rb +15 -15
  37. data/app/adapters/houston/adapters/version_control/git_adapter/remote_repo.rb +53 -30
  38. data/app/adapters/houston/adapters/version_control/git_adapter/repo.rb +60 -55
  39. data/app/adapters/houston/adapters/version_control/git_adapter.rb +22 -22
  40. data/app/adapters/houston/adapters/version_control/none_adapter.rb +4 -4
  41. data/app/adapters/houston/adapters/version_control/null_commit.rb +4 -4
  42. data/app/adapters/houston/adapters/version_control/null_repo.rb +18 -18
  43. data/app/adapters/houston/adapters.rb +10 -10
  44. data/app/assets/javascripts/app/boot.coffee +5 -5
  45. data/app/assets/javascripts/app/infinite_scroll.coffee +6 -6
  46. data/app/assets/javascripts/app/models/commit.coffee +1 -1
  47. data/app/assets/javascripts/app/models/release.coffee +1 -1
  48. data/app/assets/javascripts/app/models/task.coffee +1 -1
  49. data/app/assets/javascripts/app/models/tester.coffee +1 -1
  50. data/app/assets/javascripts/app/models/testing_note.coffee +2 -2
  51. data/app/assets/javascripts/app/models/ticket.coffee +24 -24
  52. data/app/assets/javascripts/app/models/user.coffee +1 -1
  53. data/app/assets/javascripts/app/releases.coffee +6 -6
  54. data/app/assets/javascripts/app/stacked_area_graph.coffee +22 -22
  55. data/app/assets/javascripts/app/stacked_bar_graph.coffee +20 -20
  56. data/app/assets/javascripts/app/table_row_expander.coffee +10 -10
  57. data/app/assets/javascripts/app/ticket_tracker_refresh.coffee +19 -19
  58. data/app/assets/javascripts/app/views/_show_sprint_view.coffee +14 -14
  59. data/app/assets/javascripts/app/views/_tickets_view.coffee +8 -8
  60. data/app/assets/javascripts/app/views/all_tickets_view.coffee +1 -2
  61. data/app/assets/javascripts/app/views/commit_view.coffee +2 -2
  62. data/app/assets/javascripts/app/views/edit_sprint_view.coffee +36 -36
  63. data/app/assets/javascripts/app/views/find_or_create_ticket_view.coffee +3 -3
  64. data/app/assets/javascripts/app/views/keyboard_shortcuts_modal.coffee +14 -14
  65. data/app/assets/javascripts/app/views/new_ticket_modal.coffee +4 -4
  66. data/app/assets/javascripts/app/views/new_ticket_view.coffee +34 -34
  67. data/app/assets/javascripts/app/views/problems_view.coffee +8 -8
  68. data/app/assets/javascripts/app/views/reports_view.coffee +5 -5
  69. data/app/assets/javascripts/app/views/testing_note_view.coffee +10 -10
  70. data/app/assets/javascripts/app/views/testing_report_view.coffee +7 -7
  71. data/app/assets/javascripts/app/views/testing_ticket_view.coffee +36 -36
  72. data/app/assets/javascripts/app/views/ticket_modal_view.coffee +5 -5
  73. data/app/assets/javascripts/core/app.coffee +22 -22
  74. data/app/assets/javascripts/core/burndown_chart.coffee +21 -21
  75. data/app/assets/javascripts/core/errors.coffee +2 -2
  76. data/app/assets/javascripts/core/handlebars_helpers.coffee +6 -6
  77. data/app/assets/javascripts/core/jquery_extensions.coffee +28 -28
  78. data/app/assets/javascripts/dashboard/refresher.coffee +4 -4
  79. data/app/assets/stylesheets/application/ansi.scss +2 -2
  80. data/app/assets/stylesheets/application/commit.scss +1 -1
  81. data/app/assets/stylesheets/application/exceptions.scss +3 -3
  82. data/app/assets/stylesheets/application/find_or_create_ticket.scss +2 -2
  83. data/app/assets/stylesheets/application/follow_up.scss +2 -2
  84. data/app/assets/stylesheets/application/forms.scss +2 -2
  85. data/app/assets/stylesheets/application/freight_train.css.scss +5 -5
  86. data/app/assets/stylesheets/application/full_screen.scss +2 -2
  87. data/app/assets/stylesheets/application/infinite_scroll.scss +1 -1
  88. data/app/assets/stylesheets/application/keyboard_shortcuts.scss +3 -3
  89. data/app/assets/stylesheets/application/markdown.scss +2 -2
  90. data/app/assets/stylesheets/application/navigation.scss +15 -15
  91. data/app/assets/stylesheets/application/new_ticket_view.scss +16 -16
  92. data/app/assets/stylesheets/application/omnibar.scss +6 -6
  93. data/app/assets/stylesheets/application/project_banner_buttons.scss +6 -6
  94. data/app/assets/stylesheets/application/project_tiles.scss +2 -2
  95. data/app/assets/stylesheets/application/projects.css.scss +3 -3
  96. data/app/assets/stylesheets/application/pull_requests.scss +6 -6
  97. data/app/assets/stylesheets/application/queue.scss +2 -2
  98. data/app/assets/stylesheets/application/release_form.scss +10 -10
  99. data/app/assets/stylesheets/application/releases.scss +32 -39
  100. data/app/assets/stylesheets/application/sortable_table.scss +6 -6
  101. data/app/assets/stylesheets/application/sprint.scss +6 -6
  102. data/app/assets/stylesheets/application/tables.scss +6 -6
  103. data/app/assets/stylesheets/application/test_run.scss +16 -16
  104. data/app/assets/stylesheets/application/ticket.scss +13 -13
  105. data/app/assets/stylesheets/application/ticket_modal.scss +19 -19
  106. data/app/assets/stylesheets/application/tickets.scss +2 -2
  107. data/app/assets/stylesheets/application/timeline.scss +30 -30
  108. data/app/assets/stylesheets/application/tips.scss +1 -1
  109. data/app/assets/stylesheets/application/typeahead.scss +4 -4
  110. data/app/assets/stylesheets/application/uploading.scss +13 -13
  111. data/app/assets/stylesheets/application/welcome.scss +3 -3
  112. data/app/assets/stylesheets/core/burndown_chart.scss +11 -11
  113. data/app/assets/stylesheets/core/misc.scss +8 -8
  114. data/app/assets/stylesheets/core/overrides.scss +2 -2
  115. data/app/assets/stylesheets/core/scores.scss +26 -26
  116. data/app/assets/stylesheets/dashboard/dashboard.scss +16 -16
  117. data/app/assets/stylesheets/print.css.scss +3 -3
  118. data/app/concerns/commit_synchronizer.rb +24 -24
  119. data/app/concerns/feature_state.rb +7 -7
  120. data/app/concerns/feature_support.rb +4 -4
  121. data/app/concerns/historical_weekly_stats.rb +4 -4
  122. data/app/concerns/milestone_synchronizer.rb +14 -14
  123. data/app/concerns/nosync.rb +4 -4
  124. data/app/concerns/project_adapter.rb +22 -22
  125. data/app/concerns/retirement.rb +7 -7
  126. data/app/concerns/ticket_synchronizer.rb +31 -31
  127. data/app/concerns/unique_add.rb +2 -2
  128. data/app/controllers/api/v1/sprint_tasks_controller.rb +19 -19
  129. data/app/controllers/api/v1/ticket_tasks_controller.rb +14 -14
  130. data/app/controllers/application_controller.rb +46 -40
  131. data/app/controllers/commits_controller.rb +10 -10
  132. data/app/controllers/deploys_controller.rb +11 -11
  133. data/app/controllers/home_controller.rb +4 -4
  134. data/app/controllers/jobs_controller.rb +3 -3
  135. data/app/controllers/oauth_consumers_controller.rb +1 -1
  136. data/app/controllers/omnibar_controller.rb +6 -6
  137. data/app/controllers/project_exceptions_controller.rb +11 -11
  138. data/app/controllers/project_hooks_controller.rb +7 -7
  139. data/app/controllers/project_options_controller.rb +8 -8
  140. data/app/controllers/project_pretickets_controller.rb +6 -6
  141. data/app/controllers/project_roles_controller.rb +7 -7
  142. data/app/controllers/project_tickets_controller.rb +28 -28
  143. data/app/controllers/project_tickets_sync_controller.rb +8 -8
  144. data/app/controllers/projects_controller.rb +29 -29
  145. data/app/controllers/releases_controller.rb +25 -25
  146. data/app/controllers/reports_controller.rb +36 -36
  147. data/app/controllers/sessions_controller.rb +2 -2
  148. data/app/controllers/settings_controller.rb +3 -3
  149. data/app/controllers/sprint_task_locks_controller.rb +11 -11
  150. data/app/controllers/sprints_controller.rb +25 -25
  151. data/app/controllers/tasks_controller.rb +10 -10
  152. data/app/controllers/test_runs_controller.rb +8 -8
  153. data/app/controllers/tester_bar_controller.rb +2 -2
  154. data/app/controllers/testing_notes_controller.rb +15 -15
  155. data/app/controllers/testing_report_controller.rb +14 -14
  156. data/app/controllers/tickets_controller.rb +9 -9
  157. data/app/controllers/uploads_controller.rb +9 -9
  158. data/app/controllers/user_credentials_controller.rb +4 -4
  159. data/app/controllers/user_options_controller.rb +6 -6
  160. data/app/controllers/users_controller.rb +34 -34
  161. data/app/controllers/welcome_controller.rb +6 -6
  162. data/app/helpers/ansi_helper.rb +4 -4
  163. data/app/helpers/application_helper.rb +26 -26
  164. data/app/helpers/avatar_helper.rb +12 -12
  165. data/app/helpers/backtrace_helper.rb +2 -2
  166. data/app/helpers/breadcrumbs_helper.rb +9 -9
  167. data/app/helpers/commit_helper.rb +16 -12
  168. data/app/helpers/demo_helper.rb +4 -4
  169. data/app/helpers/email_helper.rb +3 -3
  170. data/app/helpers/emoji_helper.rb +1 -1
  171. data/app/helpers/excel_helpers.rb +2 -2
  172. data/app/helpers/exposure_helper.rb +3 -3
  173. data/app/helpers/flash_message_helper.rb +6 -6
  174. data/app/helpers/maintenance_light_helper.rb +3 -3
  175. data/app/helpers/markdown_helper.rb +3 -3
  176. data/app/helpers/navigation_helper.rb +12 -12
  177. data/app/helpers/project_helper.rb +5 -5
  178. data/app/helpers/release_helper.rb +9 -9
  179. data/app/helpers/score_card_helper.rb +16 -16
  180. data/app/helpers/sprint_helper.rb +2 -2
  181. data/app/helpers/static_chart_helper.rb +2 -2
  182. data/app/helpers/test_run_helper.rb +6 -6
  183. data/app/helpers/ticket_helper.rb +14 -14
  184. data/app/helpers/timeline_helper.rb +5 -5
  185. data/app/helpers/url_helper.rb +26 -26
  186. data/app/helpers/user_helper.rb +6 -6
  187. data/app/helpers/version_helper.rb +4 -4
  188. data/app/interactors/test_run_comparer.rb +9 -9
  189. data/app/interactors/ticket_report.rb +7 -7
  190. data/app/jobs/sync_all_tickets_job.rb +13 -13
  191. data/app/jobs/sync_commits_job.rb +3 -3
  192. data/app/jobs/sync_project_tickets_job.rb +9 -9
  193. data/app/mailers/deploy_notification.rb +9 -9
  194. data/app/mailers/project_notification.rb +29 -29
  195. data/app/mailers/view_mailer.rb +20 -38
  196. data/app/models/ability.rb +21 -21
  197. data/app/models/activity_feed.rb +25 -25
  198. data/app/models/antecedent.rb +3 -3
  199. data/app/models/code_climate/coverage_report.rb +25 -25
  200. data/app/models/commit.rb +77 -82
  201. data/app/models/consumer_token.rb +2 -2
  202. data/app/models/deploy.rb +31 -27
  203. data/app/models/environment.rb +12 -12
  204. data/app/models/github/commit_status_report.rb +16 -16
  205. data/app/models/github/pull_request.rb +35 -12
  206. data/app/models/github/pull_request_event.rb +6 -5
  207. data/app/models/github_token.rb +2 -2
  208. data/app/models/historical_head.rb +2 -2
  209. data/app/models/key_dependency.rb +17 -17
  210. data/app/models/maintenance_light.rb +3 -3
  211. data/app/models/measurement.rb +22 -22
  212. data/app/models/menu_item.rb +5 -5
  213. data/app/models/menu_item_divider.rb +1 -1
  214. data/app/models/milestone.rb +27 -27
  215. data/app/models/output_stream.rb +4 -4
  216. data/app/models/post_receive_payload.rb +7 -7
  217. data/app/models/project.rb +93 -89
  218. data/app/models/project_dependencies.rb +9 -9
  219. data/app/models/project_dependency.rb +33 -33
  220. data/app/models/project_menu_item.rb +3 -3
  221. data/app/models/release.rb +60 -60
  222. data/app/models/release_change.rb +18 -18
  223. data/app/models/role.rb +15 -15
  224. data/app/models/rubygems/gem.rb +21 -21
  225. data/app/models/run_tests_on_post_receive.rb +36 -36
  226. data/app/models/setting.rb +3 -3
  227. data/app/models/settings.rb +8 -8
  228. data/app/models/source_file_coverage.rb +2 -2
  229. data/app/models/sprint.rb +19 -19
  230. data/app/models/sprint_report.rb +7 -7
  231. data/app/models/sprint_task.rb +8 -8
  232. data/app/models/static_chart/area.rb +19 -19
  233. data/app/models/static_chart.rb +35 -35
  234. data/app/models/task.rb +64 -64
  235. data/app/models/test_error.rb +2 -2
  236. data/app/models/test_result.rb +7 -0
  237. data/app/models/test_run.rb +75 -79
  238. data/app/models/test_run_statistics.rb +18 -19
  239. data/app/models/testing_note.rb +19 -19
  240. data/app/models/ticket.rb +104 -104
  241. data/app/models/ticket_antecedent.rb +11 -11
  242. data/app/models/ticket_comment.rb +6 -6
  243. data/app/models/ticket_committer.rb +3 -3
  244. data/app/models/ticket_tag.rb +6 -6
  245. data/app/models/user.rb +44 -44
  246. data/app/models/user_credentials.rb +11 -11
  247. data/app/models/value_statement.rb +3 -3
  248. data/app/presenters/commit_presenter.rb +6 -6
  249. data/app/presenters/one_or_many.rb +4 -4
  250. data/app/presenters/problem_presenter.rb +8 -8
  251. data/app/presenters/release_presenter.rb +4 -4
  252. data/app/presenters/sprint_task_presenter.rb +9 -9
  253. data/app/presenters/task_presenter.rb +8 -8
  254. data/app/presenters/tasks_excel_presenter.rb +6 -6
  255. data/app/presenters/tester_presenter.rb +3 -3
  256. data/app/presenters/testing_note_presenter.rb +4 -4
  257. data/app/presenters/testing_report_ticket_presenter.rb +9 -9
  258. data/app/presenters/ticket_presenter.rb +4 -4
  259. data/app/views/deploys/show.html.erb +8 -0
  260. data/app/views/jobs/show.html.erb +0 -34
  261. data/app/views/layouts/application.html.erb +1 -0
  262. data/app/views/layouts/minimal.html.erb +1 -0
  263. data/app/views/projects/_form.html.erb +0 -7
  264. data/app/views/releases/_form.html.erb +9 -3
  265. data/app/views/releases/index.html.erb +1 -1
  266. data/config/application.rb +1 -2
  267. data/config/database.yml +3 -3
  268. data/config/environments/production.rb +1 -1
  269. data/config/environments/test.rb +1 -1
  270. data/config/initializers/action_view_field_error_proc.rb +3 -3
  271. data/config/initializers/constants.rb +3 -3
  272. data/config/initializers/devise.rb +8 -8
  273. data/config/initializers/hard_coded_knowledge.rb +3 -3
  274. data/config/initializers/houston_async.rb +2 -2
  275. data/config/initializers/houston_report_exception.rb +3 -3
  276. data/config/initializers/houston_try.rb +3 -3
  277. data/config/initializers/sync_commits_on_post_receive.rb +0 -5
  278. data/config/routes.rb +108 -108
  279. data/db/migrate/20120417175450_devise_create_users.rb +2 -2
  280. data/db/migrate/20120501230243_add_unfuddle_id_to_tickets.rb +1 -1
  281. data/db/migrate/20120504143615_link_tickets_and_releases.rb +3 -3
  282. data/db/migrate/20120626150333_add_last_release_at_to_tickets.rb +2 -2
  283. data/db/migrate/20120626151320_link_tickets_and_commits.rb +2 -2
  284. data/db/migrate/20120626152020_add_committer_email_to_commits.rb +2 -2
  285. data/db/migrate/20120715230922_create_user_notifications.rb +3 -3
  286. data/db/migrate/20120716010743_add_user_to_releases.rb +3 -3
  287. data/db/migrate/20120726231754_link_projects_and_maintainers.rb +2 -2
  288. data/db/migrate/20120826022643_add_authentication_token_to_users.rb +2 -2
  289. data/db/migrate/20120920023251_add_administrator_to_users.rb +3 -3
  290. data/db/migrate/20121026014457_split_users_name_into_first_and_last.rb +2 -2
  291. data/db/migrate/20121027160548_create_deploys.rb +1 -1
  292. data/db/migrate/20121222170917_add_version_control_adapter_to_projects.rb +2 -2
  293. data/db/migrate/20121222223635_add_ticket_tracking_adapter_to_projects.rb +2 -2
  294. data/db/migrate/20121224212623_rename_environments.rb +3 -3
  295. data/db/migrate/20121225175106_replace_environment_id_with_environment_name.rb +8 -8
  296. data/db/migrate/20121230174234_create_test_runs.rb +3 -3
  297. data/db/migrate/20130119203853_remove_cached_queries_from_projects.rb +1 -1
  298. data/db/migrate/20130119204608_add_extended_attributes_to_tickets.rb +10 -10
  299. data/db/migrate/20130120182026_create_ticket_prerequisites.rb +2 -2
  300. data/db/migrate/20130312224911_create_errors.rb +1 -1
  301. data/db/migrate/20130407195450_create_roles.rb +2 -2
  302. data/db/migrate/20130407200624_populate_roles.rb +9 -9
  303. data/db/migrate/20130407220039_add_project_id_to_testing_notes.rb +6 -6
  304. data/db/migrate/20130407220937_add_project_id_to_commits.rb +6 -6
  305. data/db/migrate/20130416020627_add_environments_subscribed_to_to_users.rb +3 -3
  306. data/db/migrate/20130420174126_add_error_tracker_name_to_projects.rb +2 -2
  307. data/db/migrate/20130427223925_create_project_quotas.rb +2 -2
  308. data/db/migrate/20130504014802_add_extended_attributes_to_projects.rb +3 -3
  309. data/db/migrate/20130504135741_add_antecedents_to_tickets.rb +6 -6
  310. data/db/migrate/20130505144446_add_tags_to_tickets.rb +1 -1
  311. data/db/migrate/20130505162039_add_type_to_tickets.rb +1 -1
  312. data/db/migrate/20130505212838_add_closed_at_to_tickets.rb +1 -1
  313. data/db/migrate/20130519163615_create_user_credentials.rb +2 -2
  314. data/db/migrate/20130526024851_give_default_values_for_counts_from_test_runs.rb +2 -2
  315. data/db/migrate/20130710233849_add_authored_at_to_commits.rb +10 -10
  316. data/db/migrate/20130711013156_link_commits_and_users.rb +6 -6
  317. data/db/migrate/20130806143651_link_commits_and_releases.rb +2 -2
  318. data/db/migrate/20130921141449_create_milestones.rb +3 -3
  319. data/db/migrate/20131004185618_add_first_release_at_to_tickets.rb +2 -2
  320. data/db/migrate/20131012152403_create_sprints.rb +3 -3
  321. data/db/migrate/20131112010815_delete_duplicate_commits.rb +7 -7
  322. data/db/migrate/20140217160450_add_email_addresses_to_users.rb +3 -3
  323. data/db/migrate/20140327020121_drop_ticket_prerequisites.rb +1 -1
  324. data/db/migrate/20140406183224_remove_new_relic_id_from_projects.rb +1 -1
  325. data/db/migrate/20140406230121_delete_automatically_generated_messages_for_releases.rb +1 -1
  326. data/db/migrate/20140407010111_drop_sprints_project_id.rb +1 -1
  327. data/db/migrate/20140418133005_change_ticket_antecedents_to_text_array.rb +1 -1
  328. data/db/migrate/20140425141946_embed_changes_in_releases.rb +3 -3
  329. data/db/migrate/20140515174322_create_tasks.rb +3 -3
  330. data/db/migrate/20140516012049_create_tasks_for_existing_tickets.rb +1 -1
  331. data/db/migrate/20140517012626_prevent_hstore_fields_from_being_null.rb +2 -2
  332. data/db/migrate/20140521014652_allow_task_descriptions_to_be_null.rb +1 -1
  333. data/db/migrate/20140526155845_add_commit_id_to_deploys.rb +5 -5
  334. data/db/migrate/20140526162645_add_commit_before_id_and_commit_after_id_to_releases.rb +4 -4
  335. data/db/migrate/20140526180608_associate_remaining_deploys_and_releases.rb +12 -12
  336. data/db/migrate/20140724231918_create_sprints_tasks.rb +3 -3
  337. data/db/migrate/20140824194031_add_project_id_to_tasks.rb +1 -1
  338. data/db/migrate/20140824194526_add_completed_at_to_tasks.rb +3 -3
  339. data/db/migrate/20140824211249_require_sprints_to_be_unique.rb +1 -1
  340. data/db/migrate/20140907012329_drop_table_changes.rb +1 -1
  341. data/db/migrate/20140907013836_drop_table_errors.rb +1 -1
  342. data/db/migrate/20140921190022_add_checked_out_to_sprints_tasks.rb +2 -2
  343. data/db/migrate/20140921201441_drop_users_name.rb +1 -1
  344. data/db/migrate/20140925021043_rename_deploys_commit_to_sha.rb +1 -1
  345. data/db/migrate/20140929004347_create_historical_heads.rb +4 -4
  346. data/db/migrate/20141027194819_make_users_environments_subscribed_to_an_array.rb +2 -2
  347. data/db/migrate/20141226171730_create_measurements.rb +1 -1
  348. data/db/migrate/20150119154013_drop_unused_fields_from_milestones.rb +1 -1
  349. data/db/migrate/20150222205616_add_features_to_projects.rb +2 -2
  350. data/db/migrate/20150323004452_add_deploys_completed_at.rb +1 -1
  351. data/db/migrate/20150805180939_add_commit_id_to_test_runs.rb +1 -1
  352. data/db/migrate/20150808161805_create_test_results.rb +1 -1
  353. data/db/migrate/20150809132417_rename_test_results_regression_to_difference.rb +1 -1
  354. data/db/migrate/20150927014445_required_pull_requests_to_be_unique_by_project_and_number.rb +13 -0
  355. data/db/structure.sql +9 -0
  356. data/houston.gemspec +23 -26
  357. data/lib/configuration.rb +0 -5
  358. data/lib/core_ext/duration.rb +4 -4
  359. data/lib/core_ext/hash.rb +17 -17
  360. data/lib/houston/version.rb +1 -1
  361. data/lib/houston_server.rb +6 -6
  362. data/lib/parallel_enumerable.rb +16 -16
  363. data/lib/tasks/specific_tests.rake +37 -0
  364. metadata +91 -107
  365. data/app/interactors/push_gemfile_to_gemnasium.rb +0 -88
  366. data/app/models/gemnasium/alert.rb +0 -25
  367. data/app/views/welcome/_tdl.html.erb +0 -31
  368. data/config/initializers/houston_tdl.rb +0 -104
@@ -4,7 +4,7 @@
4
4
  h2 { font-size: 1.33em; margin: 0.66em 0 0.33em 0; line-height: 1.42857142857143em; }
5
5
  h3 { font-size: 1.08em; font-weight: 500; margin: 0.66em 0 0.33em 0; line-height: 1.42857142857143em; ; }
6
6
  h4 { font-size: 1em; margin: 0.66em 0 0.33em 0; line-height: 1.42857142857143em; }
7
-
7
+
8
8
  blockquote {
9
9
  border-left: 5px solid #ccc;
10
10
  margin-top: 1em;
@@ -13,7 +13,7 @@
13
13
  font-size: 1.0666em;
14
14
  color: #555;
15
15
  }
16
-
16
+
17
17
  // so as not to look like project banners
18
18
  h1 {
19
19
  background: none;
@@ -7,11 +7,11 @@ $project-navbar-height: 30px;
7
7
  .nav-icon {
8
8
  display: inline-block;
9
9
  height: 18px;
10
-
10
+
11
11
  svg {
12
12
  width: 18px;
13
13
  height: 18px;
14
-
14
+
15
15
  * { fill: #999; }
16
16
  }
17
17
  }
@@ -74,7 +74,7 @@ $project-navbar-height: 30px;
74
74
  color: white;
75
75
  text-shadow: none;
76
76
  height: 20px;
77
-
77
+
78
78
  &::after {
79
79
  font-family: 'FontAwesome';
80
80
  content: '\f0dc';
@@ -92,9 +92,9 @@ $project-navbar-height: 30px;
92
92
  padding: 3px 3em 0;
93
93
  height: $project-navbar-height;
94
94
  overflow: hidden;
95
-
95
+
96
96
  .nav-icon svg * { fill: white; }
97
-
97
+
98
98
  .project-no-features {
99
99
  color: white;
100
100
  line-height: $project-navbar-height;
@@ -102,13 +102,13 @@ $project-navbar-height: 30px;
102
102
  }
103
103
 
104
104
  .project-navbar .nav > li { float: left; }
105
- .project-navbar .nav > li > a,
105
+ .project-navbar .nav > li > a,
106
106
  .project-navbar .nav > li.current {
107
107
  padding: 5px 15px;
108
108
  }
109
109
  .project-navbar .nav > li > a {
110
110
  color: white;
111
-
111
+
112
112
  &:hover, &:focus {
113
113
  text-decoration: none;
114
114
  background-color: rgba(255,255,255,0.25);
@@ -118,7 +118,7 @@ $project-navbar-height: 30px;
118
118
  .project-navbar .nav > li.current {
119
119
  background: white;
120
120
  color: black;
121
-
121
+
122
122
  .nav-icon svg * { fill: black; }
123
123
  }
124
124
 
@@ -137,7 +137,7 @@ $project-navbar-height: 30px;
137
137
  height: $avatar-size;
138
138
  opacity: 0.9;
139
139
  }
140
-
140
+
141
141
  a:hover .avatar, .dropdown.open .avatar { opacity: 1; }
142
142
  }
143
143
 
@@ -178,22 +178,22 @@ $threshhold: 820px;
178
178
  margin: 0 0 1em;
179
179
  font-weight: 200;
180
180
  font-size: 2em;
181
-
182
-
181
+
182
+
183
183
  a.btn { color: white ;}
184
-
184
+
185
185
  .buttons { float: right; }
186
-
186
+
187
187
  small {
188
188
  font-weight: 100;
189
189
  font-size: .75em;
190
190
  text-transform: uppercase;
191
191
  color: inherit;
192
-
192
+
193
193
  &.colon { font-family: arial; }
194
194
  &.postfix { text-transform: lowercase; }
195
195
  }
196
-
196
+
197
197
  .light { font-weight: 100; }
198
198
  }
199
199
 
@@ -1,66 +1,66 @@
1
1
  #new_ticket_view {
2
-
2
+
3
3
  &.full-page {
4
4
  position: fixed;
5
5
  margin-top: 8em;
6
6
  width: 80%;
7
7
  left: 10%;
8
8
  }
9
-
9
+
10
10
  &::after {
11
11
  position: absolute;
12
12
  top: -2em;
13
13
  }
14
-
14
+
15
15
  &[data-mode="type"]::after {
16
16
  content: 'What kind of ticket is this? [bug]? [feature]?';
17
17
  }
18
-
18
+
19
19
  &[data-mode="label"]::after {
20
20
  content: 'What view or feature does it have to do with? Profile? Enter Attendance?';
21
21
  }
22
-
22
+
23
23
  &[data-mode="summary"]::after {
24
24
  content: 'Hit return to finish making your ticket ⏎';
25
25
  }
26
-
26
+
27
27
  &[data-mode="description"]::after {
28
28
  content: 'Write a description that anyone can follow on their account (⌘+Enter to save)';
29
29
  }
30
-
30
+
31
31
  #ticket_summary {
32
32
  display: block;
33
33
  width: 100%;
34
34
  padding: 8px 12px;
35
35
  }
36
-
36
+
37
37
  #ticket_description {
38
38
  display: block;
39
39
  width: 100%;
40
40
  }
41
-
41
+
42
42
  #ticket_suggestions {
43
43
  display: block;
44
44
  margin: 0;
45
45
  padding: 0 1em;
46
-
46
+
47
47
  li {
48
48
  display: block;
49
49
  margin: 0;
50
50
  padding: 0;
51
-
51
+
52
52
  a {
53
53
  display: block;
54
54
  padding: 2px 0;
55
55
  }
56
56
  }
57
57
  }
58
-
58
+
59
59
  .ticket-closed {
60
60
  opacity: 0.3;
61
61
  text-decoration: line-through;
62
62
  }
63
-
63
+
64
64
  .new-ticket-full {
65
65
  display: none;
66
66
  }
@@ -69,16 +69,16 @@
69
69
  #new_ticket_modal {
70
70
  width: 720px;
71
71
  margin-left: -360px;
72
-
72
+
73
73
  .modal-body {
74
74
  min-height: 480px;
75
75
  overflow: hidden;
76
76
  }
77
-
77
+
78
78
  #new_ticket_view {
79
79
  position: relative;
80
80
  margin-top: 2em;
81
-
81
+
82
82
  #ticket_summary { width: 662px; }
83
83
  #ticket_description {
84
84
  width: 674px;
@@ -12,18 +12,18 @@ input[type="text"].omnibar {
12
12
 
13
13
  .omnibar-item {
14
14
  width: 528px;
15
-
15
+
16
16
  .bubble {
17
17
  width: 0.75em;
18
18
  height: 0.75em;
19
19
  border-radius: 0.75em;
20
20
  }
21
-
21
+
22
22
  .commit-sha, .ticket-number {
23
23
  font-size: 0.75em;
24
24
  opacity: 0.5;
25
25
  }
26
-
26
+
27
27
  .commit-message, .ticket-summary {
28
28
  line-height: 1em;
29
29
  display: block;
@@ -33,12 +33,12 @@ input[type="text"].omnibar {
33
33
  text-indent: 3px;
34
34
  margin-left: 32px;
35
35
  }
36
-
36
+
37
37
  .project-title {
38
38
  font-size: 0.75em;
39
39
  opacity: 0.5;
40
40
  }
41
-
41
+
42
42
  .project-link-title {
43
43
  line-height: 1em;
44
44
  display: block;
@@ -47,7 +47,7 @@ input[type="text"].omnibar {
47
47
  overflow: hidden;
48
48
  text-indent: 3px;
49
49
  }
50
-
50
+
51
51
  img {
52
52
  float: left;
53
53
  margin: 2px 6px 2px 0;
@@ -4,7 +4,7 @@
4
4
  right: 0;
5
5
  height: 40px;
6
6
  // border-bottom: 1px solid rgb(210, 210, 210);
7
-
7
+
8
8
  &.affix {
9
9
  position: fixed;
10
10
  top: -4px;
@@ -42,8 +42,8 @@
42
42
  background: rgba(0, 0, 0, 0.1);
43
43
  border-radius: 6px;
44
44
  }
45
-
46
- span {
45
+
46
+ span {
47
47
  display: inline-block;
48
48
  font-size: 11px;
49
49
  line-height: 11px;
@@ -52,7 +52,7 @@
52
52
  }
53
53
 
54
54
  #sync_tickets_button {
55
-
55
+
56
56
  &.working {
57
57
  i {
58
58
  -moz-animation: fa-spin 2s infinite linear;
@@ -61,8 +61,8 @@
61
61
  animation: fa-spin 2s infinite linear;
62
62
  }
63
63
  }
64
-
65
- .ticket-tracker-last-sync {
64
+
65
+ .ticket-tracker-last-sync {
66
66
  display: inline-block;
67
67
  .time-date { display: block; font-size: 9px; line-height: 1em; font-weight: 400; }
68
68
  .time-time { display: block; font-size: 14px; line-height: 1em; font-weight: 200; }
@@ -12,11 +12,11 @@
12
12
  font-weight: 200;
13
13
  color: black;
14
14
  background-color: #efefef;
15
-
15
+
16
16
  transition-property: background-color;
17
17
  transition-duration: 0.5s;
18
18
  transition-timing-function: cubic-bezier(0,1,.96,.64);
19
-
19
+
20
20
  &:hover {
21
21
  color: white;
22
22
  text-decoration: none;
@@ -58,10 +58,10 @@ td.project-participants .hidden-text { display: inline-block; }
58
58
  margin: 1px;
59
59
  }
60
60
 
61
- .inline-label {
61
+ .inline-label {
62
62
  display: inline;
63
63
  display: inline-block;
64
-
64
+
65
65
  input[type="image"], input[type="checkbox"], input[type="radio"] { margin: 0; }
66
66
  }
67
67
 
@@ -83,7 +83,7 @@ td.project-title { white-space: nowrap; }
83
83
 
84
84
  td.project-feature-error {
85
85
  padding-right: 0;
86
-
86
+
87
87
  .icon {
88
88
  font-size: 1.25em;
89
89
  color: #d5b120;
@@ -1,7 +1,7 @@
1
1
  h4.github-repo {
2
2
  margin: 1.33em 0 0.66em;
3
3
  font-weight: 500;
4
-
4
+
5
5
  .pull-requests-count { vertical-align: middle; }
6
6
  }
7
7
 
@@ -12,24 +12,24 @@ ul.pull-requests { margin: 0; }
12
12
  display: block;
13
13
  margin: 0;
14
14
  line-height: 24px;
15
-
15
+
16
16
  &.back-burner a {
17
17
  color: #c9c9c9;
18
-
18
+
19
19
  .pull-request-author { opacity: 0.16; }
20
20
  .pull-request-number { color: #d6d6d6; }
21
21
  .pull-request-age { color: #d6d6d6; }
22
22
  }
23
-
23
+
24
24
  a {
25
25
  display: block;
26
26
  padding: 0.33em 0;
27
-
27
+
28
28
  &:hover {
29
29
  text-decoration: none;
30
30
  background: #EDF9FF;
31
31
  color: #005580;
32
-
32
+
33
33
  .pull-request-author { opacity: 1.0; }
34
34
  .pull-request-number { color: #6C8592; }
35
35
  .pull-request-age { color: #AABCC5; }
@@ -1,11 +1,11 @@
1
1
  table.tickets {
2
2
  border-collapse:collapse;
3
-
3
+
4
4
  th, td {
5
5
  padding: .25em 1em;
6
6
  border: 1px solid #e0e0e0;
7
7
  text-align: left;
8
-
8
+
9
9
  &.ticket-number { text-align: right; }
10
10
  }
11
11
  }
@@ -13,21 +13,21 @@
13
13
  .change-tag select { width: 100%; }
14
14
  .change-tag .help-inline { display: none; }
15
15
  .change-description input { width: 100%; box-sizing: border-box; height: 30px; }
16
-
16
+
17
17
  .release-detail-section > .controls { max-width: 920px; }
18
-
18
+
19
19
  textarea#release_message {
20
20
  width: 46em;
21
21
  height: 80px;
22
22
  }
23
-
23
+
24
24
  #new_ticket_field { width: 100%; box-sizing: border-box; height: 30px; }
25
-
25
+
26
26
  .controls > ul { margin-left: 0; }
27
27
  .controls > p.no-items { margin-left: 0; }
28
28
  .controls > p.expander {
29
29
  a { color: #777; }
30
-
30
+
31
31
  &.optional::after {
32
32
  content: ' (optional)';
33
33
  color: #bbb;
@@ -37,25 +37,25 @@
37
37
  color: #777;
38
38
  font-style: italic;
39
39
  }
40
-
40
+
41
41
  .control-label {
42
42
  font-weight: bold;
43
43
  color: #777;
44
44
  }
45
-
45
+
46
46
  .release-antecedents ul, .release-commits ul {
47
47
  max-width: 680px;
48
48
  margin: 5px 0;
49
49
  }
50
-
50
+
51
51
  .release-tickets {
52
52
  table { width: 88.67403314917128%; margin: 5px 0; }
53
53
  td { vertical-align: top; }
54
-
54
+
55
55
  .release-ticket-check {
56
56
  width: 1em;
57
57
  padding-right: 0.5em;
58
-
58
+
59
59
  input { margin: 0; }
60
60
  }
61
61
  .release-ticket-number {
@@ -12,7 +12,7 @@
12
12
 
13
13
  .-houston-changelog {
14
14
  clear: both;
15
-
15
+
16
16
  h4 {
17
17
  position: relative;
18
18
  margin: 0 0 14px 0;
@@ -23,39 +23,39 @@
23
23
  font-size: 16px;
24
24
  line-height: 20px;
25
25
  text-transform: uppercase;
26
-
26
+
27
27
  .weekday {
28
28
  font-weight: 200;
29
29
  color: #666;
30
30
  }
31
-
31
+
32
32
  a {
33
33
  text-transform: lowercase;
34
34
  font-weight: 200;
35
35
  float: right;
36
36
  }
37
37
  }
38
-
38
+
39
39
  .-houston-changelog-day {
40
40
  margin-bottom: 28px;
41
41
  }
42
-
42
+
43
43
  .release-header {
44
44
  margin-left: 3px;
45
-
45
+
46
46
  .commit-range {
47
47
  float: right;
48
48
  font-size: 0.88em;
49
49
  }
50
50
  }
51
-
51
+
52
52
  .release { padding-left: 1em; }
53
-
53
+
54
54
  .commit-sha { float: right; }
55
-
55
+
56
56
  .change {
57
57
  margin: 0 0 10px 0;
58
-
58
+
59
59
  &::after {
60
60
  content: '.';
61
61
  clear: both;
@@ -65,7 +65,7 @@
65
65
  height: 0;
66
66
  visibility: hidden;
67
67
  }
68
-
68
+
69
69
  .change-tag {
70
70
  float: left;
71
71
  clear: left;
@@ -87,78 +87,71 @@
87
87
  background-color: #888;
88
88
  color: white;
89
89
  }
90
-
90
+
91
91
  .change-summary {
92
92
  margin-left: 124px;
93
93
  word-wrap: break-word;
94
94
  font-size: 1.12em;
95
95
  line-height: 19px; // height of .change-tag
96
96
  padding-top: 3px; // padding on .change-tag
97
-
97
+
98
98
  p { margin: 0; }
99
99
  }
100
100
  }
101
-
102
- }
103
-
104
101
 
105
- // ?
106
- @media only screen and (max-width: 420px) {
107
- .-houston-changelog .change {
108
- .change-tag {
109
- float: none;
110
- text-align: left;
111
- width: auto;
112
- display: inline-block;
113
- }
114
- .change-summary {
115
- margin-left: 0;
116
- }
117
- }
118
102
  }
119
103
 
120
104
 
121
105
 
122
-
123
106
  .release-message { margin: 1.5em 1.5em 2.5em 1.5em; }
124
107
 
125
108
  .release-detail {
126
109
  line-height: 1.5em;
127
-
110
+
128
111
  .release-detail-section {
129
112
  border-top: 1px solid #f2f2f2;
130
113
  padding-top: 1.5em;
131
114
  margin-top: 1.5em;
132
115
  }
133
-
116
+
134
117
  .release-commits ul {
135
118
  font-size: 0.88em;
136
119
  line-height: 1em;
137
120
  }
138
-
121
+
139
122
  h5 {
140
123
  float: left;
141
124
  clear: left;
142
125
  width: 100px;
143
126
  margin: 0;
144
127
  color: #777;
145
-
128
+
146
129
  .commit-range { font-size: 0.75em; font-weight: normal; }
147
130
  }
148
-
131
+
149
132
  p.no-items { margin: 0 0 0 124px; }
150
-
133
+
151
134
  ul {
152
135
  margin: 0 0 0 124px;
153
136
  padding: 0;
154
-
137
+
155
138
  &.typeahead { margin: 2px 0 0; }
156
139
  &.commits { max-width: 720px; }
157
-
140
+
158
141
  li {
159
142
  list-style-type: none;
160
-
143
+
161
144
  p { margin: 0; }
162
145
  }
163
146
  }
164
147
  }
148
+
149
+ #new_release_form {
150
+ .instructions { margin-top: 0; }
151
+ .commit-sha { float: right; }
152
+ label .commit-range {
153
+ font-size: 10.5px;
154
+ display: block;
155
+ font-weight: normal;
156
+ }
157
+ }
@@ -1,10 +1,10 @@
1
- .table-sortable {
1
+ .table-sortable {
2
2
  border-collapse: separate;
3
-
3
+
4
4
  th {
5
5
  border-bottom: 4px solid transparent;
6
6
  cursor: pointer;
7
-
7
+
8
8
  &::after {
9
9
  content: ' \f0dc';
10
10
  font-family: FontAwesome;
@@ -12,13 +12,13 @@
12
12
  vertical-align: baseline;
13
13
  color: rgba(0, 0, 0, 0.1);
14
14
  }
15
-
15
+
16
16
  &:hover {
17
17
  border-bottom: 4px solid rgba(128, 212, 255, 0.25);
18
-
18
+
19
19
  &::after { color: rgba(0, 0, 0, 0.5); }
20
20
  }
21
-
21
+
22
22
  &.sort-asc, &.sort-desc { border-bottom: 4px solid rgba(128, 212, 255, 0.5); }
23
23
  &.sort-asc::after { content: ' \f0de'; color: #333; }
24
24
  &.sort-desc::after { content: ' \f0dd'; color: #333; }
@@ -34,27 +34,27 @@ h2.light {
34
34
  }
35
35
 
36
36
  #sprint_view {
37
-
37
+
38
38
  #lock_sprint_button, #show_completed_tasks {
39
39
  margin-bottom: 12px;
40
40
  }
41
-
41
+
42
42
  &.hide-completed .task-completed { display: none; }
43
43
  .task-completed {
44
44
  background: $completed-background;
45
45
  color: $completed-foreground;
46
46
  a { color: $completed-foreground; }
47
47
  }
48
-
48
+
49
49
  tr.task td { vertical-align: top; }
50
-
50
+
51
51
  .task-effort { text-align: right; }
52
52
  .task-status {
53
53
  white-space: nowrap;
54
54
  .fa, .octicon { width: 16px; text-align: center; }
55
55
  }
56
56
  .task-worker { white-space: nowrap; }
57
-
57
+
58
58
  #average_effort {
59
59
  font-weight: 800;
60
60
  }
@@ -66,7 +66,7 @@ h2.light {
66
66
  cursor: pointer;
67
67
  font-family: 'FontAwesome';
68
68
  font-size: 1.5em;
69
-
69
+
70
70
  &:hover { text-decoration: none; }
71
71
  }
72
72