houston-core 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +69 -68
  3. data/app/adapters/houston/adapters/deployment/engineyard.rb +1 -1
  4. data/app/adapters/houston/adapters/version_control/git_adapter/github_repo.rb +19 -0
  5. data/app/adapters/houston/adapters/version_control/git_adapter/remote_repo.rb +27 -0
  6. data/app/assets/images/drag-grip.png +0 -0
  7. data/app/assets/javascripts/app/infinite_scroll.coffee +1 -1
  8. data/app/assets/javascripts/app/views/_show_sprint_view.coffee +9 -9
  9. data/app/assets/javascripts/application.js +1 -0
  10. data/app/assets/javascripts/core/app.coffee +5 -0
  11. data/app/assets/javascripts/{app → core}/stacked_area_graph.coffee +0 -0
  12. data/app/assets/javascripts/{app → core}/stacked_bar_graph.coffee +0 -0
  13. data/app/assets/javascripts/dashboard.js +1 -0
  14. data/app/assets/javascripts/vendor.js +0 -1
  15. data/app/assets/stylesheets/application/exceptions.scss +3 -1
  16. data/app/assets/stylesheets/application/navigation.scss +84 -21
  17. data/app/assets/stylesheets/application/releases.scss +32 -2
  18. data/app/assets/stylesheets/application/test.scss +34 -0
  19. data/app/assets/stylesheets/core/colors.scss.erb +33 -3
  20. data/app/assets/stylesheets/dashboard/dashboard.scss +11 -7
  21. data/app/assets/stylesheets/variables.scss +3 -0
  22. data/app/concerns/belongs_to_commit.rb +14 -0
  23. data/app/concerns/project_adapter.rb +24 -6
  24. data/app/controllers/api/v1/projects_controller.rb +18 -0
  25. data/app/controllers/api/v1/sprint_tasks_controller.rb +1 -1
  26. data/app/controllers/deploys_controller.rb +1 -0
  27. data/app/controllers/project_tests_controller.rb +49 -19
  28. data/app/controllers/releases_controller.rb +5 -0
  29. data/app/controllers/test_runs_controller.rb +16 -1
  30. data/app/helpers/test_run_helper.rb +24 -0
  31. data/app/models/deploy.rb +13 -0
  32. data/app/models/github/pull_request.rb +39 -4
  33. data/app/models/release.rb +42 -0
  34. data/app/models/task.rb +3 -2
  35. data/app/models/test_run.rb +4 -0
  36. data/app/presenters/project_presenter.rb +28 -0
  37. data/app/views/deploys/show.html.erb +4 -0
  38. data/app/views/github/pulls/index.html.erb +4 -1
  39. data/app/views/layouts/_mobile_navigation.html.erb +14 -17
  40. data/app/views/layouts/_navigation.html.erb +87 -87
  41. data/app/views/layouts/dashboard.html.erb +2 -2
  42. data/app/views/project_tests/index.html.erb +22 -7
  43. data/app/views/releases/_index.html.erb +65 -0
  44. data/app/views/releases/_results.html.erb +47 -0
  45. data/app/views/releases/index.html.erb +29 -65
  46. data/app/views/sprints/dashboard.html.erb +4 -2
  47. data/config/environments/production.rb +1 -1
  48. data/config/environments/test.rb +4 -1
  49. data/config/initializers/add_navigation_renderers.rb +6 -0
  50. data/config/initializers/requirements.rb +1 -0
  51. data/config/routes.rb +3 -0
  52. data/db/migrate/20151226154901_add_search_vector_to_releases.rb +6 -0
  53. data/db/migrate/20151226155305_generate_index_on_releases.rb +5 -0
  54. data/db/migrate/20151228183704_drop_unused_tables.rb +35 -0
  55. data/db/migrate/20160120145757_add_successful_to_deploys.rb +10 -0
  56. data/db/structure.sql +19 -67
  57. data/houston.gemspec +3 -3
  58. data/lib/configuration.rb +4 -2
  59. data/lib/core_ext/array.rb +37 -0
  60. data/lib/houston/version.rb +1 -1
  61. data/test/integration/ci_integration_test.rb +14 -13
  62. data/test/unit/models/project_test.rb +33 -0
  63. data/test/unit/models/pull_request_test.rb +71 -1
  64. metadata +24 -14
  65. data/app/models/historical_head.rb +0 -5
@@ -186,8 +186,9 @@ module Houston
186
186
 
187
187
 
188
188
  def project_colors(*args)
189
- @project_colors = args.first.each_with_object({}) { |(key, hex), hash| hash[key] = ColorValue.new(hex) } if args.any?
190
- @project_colors ||= {}
189
+ new_hash = Hash.new(ColorValue.new("505050"))
190
+ @project_colors = args.first.each_with_object(new_hash) { |(key, hex), hash| hash[key] = ColorValue.new(hex) } if args.any?
191
+ @project_colors ||= new_hash
191
192
  end
192
193
 
193
194
  def environments(*args)
@@ -600,6 +601,7 @@ module Houston
600
601
 
601
602
 
602
603
  class ColorValue
604
+ attr_reader :hex
603
605
 
604
606
  def initialize(hex)
605
607
  @hex = hex
@@ -0,0 +1,37 @@
1
+ module CalculatePercentiles
2
+
3
+ # Returns the mean of all elements in array; nil if array is empty
4
+ def mean
5
+ return nil if self.length == 0
6
+ self.sum / self.length
7
+ end
8
+
9
+ # Returns the percentile value for percentile _p_; nil if array is empty.
10
+ #
11
+ # _p_ should be expressed as an integer; <tt>percentile(90)</tt> returns the 90th percentile of the array.
12
+ #
13
+ # Algorithm from NIST[http://www.itl.nist.gov/div898/handbook/prc/section2/prc252.htm]
14
+ # Implementation from https://github.com/bkoski/array_stats/pull/3
15
+ def percentile(p)
16
+ sorted_array = self.sort
17
+ rank = (p.to_f / 100) * (self.length + 1)
18
+
19
+ return nil if self.length == 0
20
+
21
+ if rank.truncate > 0 && rank.truncate < self.length
22
+ sample_0 = sorted_array[rank.truncate - 1]
23
+ sample_1 = sorted_array[rank.truncate]
24
+
25
+ # Returns the fractional part of a float. For example, <tt>(6.67).fractional_part == 0.67</tt>
26
+ fractional_part = (rank - rank.truncate).abs
27
+ (fractional_part * (sample_1 - sample_0)) + sample_0
28
+ elsif rank.truncate == 0
29
+ sorted_array.first.to_f
30
+ elsif rank.truncate == self.length
31
+ sorted_array.last.to_f
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ Array.send :include, CalculatePercentiles
@@ -1,3 +1,3 @@
1
1
  module Houston
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -4,6 +4,7 @@ require "support/houston/adapters/ci_server/mock_adapter"
4
4
 
5
5
  # Tests config/initializers/run_tests_on_post_receive.rb
6
6
  class CIIntegrationTest < ActionDispatch::IntegrationTest
7
+ attr_reader :project
7
8
 
8
9
 
9
10
  context "Houston" do
@@ -14,7 +15,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
14
15
  stub.instance_of(TestRun).validate! {}
15
16
 
16
17
  assert_difference "TestRun.count", +1 do
17
- post "/projects/#{@project.slug}/hooks/post_receive"
18
+ post "/projects/#{project.slug}/hooks/post_receive"
18
19
  assert_response :success
19
20
  end
20
21
  end
@@ -23,7 +24,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
23
24
  @project = create(:project, ci_server_name: "None")
24
25
 
25
26
  assert_no_difference "TestRun.count" do
26
- post "/projects/#{@project.slug}/hooks/post_receive"
27
+ post "/projects/#{project.slug}/hooks/post_receive"
27
28
  assert_response :success
28
29
  end
29
30
  end
@@ -31,7 +32,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
31
32
  should "alert maintainers when a build cannot be triggered" do
32
33
  skip "TMI: This is dependent on configured roles!"
33
34
  @project = create(:project, ci_server_name: "Mock")
34
- @project.add_teammate users(:boblail)
35
+ project.add_teammate users(:boblail)
35
36
 
36
37
  any_instance_of(Houston::Adapters::CIServer::MockAdapter::Job) do |job|
37
38
  stub(job).build! { |commit| raise Houston::Adapters::CIServer::Error }
@@ -41,7 +42,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
41
42
  stub.instance_of(TestRun).validate! {}
42
43
 
43
44
  assert_no_difference "TestRun.count" do
44
- post "/projects/#{@project.slug}/hooks/post_receive"
45
+ post "/projects/#{project.slug}/hooks/post_receive"
45
46
  assert_response :success
46
47
 
47
48
  configuration_error = ActionMailer::Base.deliveries.last
@@ -56,13 +57,13 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
56
57
  commit = "whatever"
57
58
  results_url = "http://example.com/results"
58
59
  @project = create(:project, ci_server_name: "Mock")
59
- @test_run = TestRun.create!(project: @project, sha: commit)
60
+ @test_run = TestRun.create!(project: project, sha: commit)
60
61
 
61
62
  any_instance_of(Houston::Adapters::CIServer::MockAdapter::Job) do |job|
62
63
  mock(job).fetch_results!(results_url).returns({})
63
64
  end
64
65
 
65
- post "/projects/#{@project.slug}/hooks/post_build", {commit: commit, results_url: results_url}
66
+ put "/projects/#{project.slug}/test_runs/#{commit}/results", {results_url: results_url}
66
67
  assert_response :success
67
68
  end
68
69
 
@@ -70,14 +71,14 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
70
71
  commit = "whatever"
71
72
  results_url = "http://example.com/results"
72
73
  @project = create(:project, ci_server_name: "Mock")
73
- @project.add_teammate users(:boblail)
74
- @test_run = TestRun.create!(project: @project, sha: commit)
74
+ project.add_teammate users(:boblail)
75
+ @test_run = TestRun.create!(project: project, sha: commit)
75
76
 
76
77
  any_instance_of(Houston::Adapters::CIServer::MockAdapter::Job) do |job|
77
78
  mock(job).fetch_results!(results_url) { raise Houston::Adapters::CIServer::Error }
78
79
  end
79
80
 
80
- post "/projects/#{@project.slug}/hooks/post_build", {commit: commit, results_url: results_url}
81
+ put "/projects/#{project.slug}/test_runs/#{commit}/results", {results_url: results_url}
81
82
 
82
83
  assert_equal "error", @test_run.reload.result
83
84
  end
@@ -86,7 +87,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
86
87
 
87
88
  should "fire test_run:complete when the results of the test run are saved" do
88
89
  @project = create(:project, ci_server_name: "Mock")
89
- test_run = TestRun.new(project: @project, sha: "whatever")
90
+ test_run = TestRun.new(project: project, sha: "whatever")
90
91
 
91
92
  any_instance_of(Houston::Adapters::CIServer::MockAdapter::Job) do |job|
92
93
  stub(job).fetch_results! { |results_url| {result: "pass"} }
@@ -119,7 +120,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
119
120
  slug: "fixture",
120
121
  version_control_name: "Git",
121
122
  extended_attributes: { "git_location" => "git@github.com:houston/fixture.git" })
122
- test_run = TestRun.new(project: @project, sha: "bd3e9e2")
123
+ test_run = TestRun.new(project: project, sha: "bd3e9e2")
123
124
 
124
125
  expected_url = "https://api.github.com/repos/houston/fixture/statuses/bd3e9e2e4ddf89a640a4f880cbf55bb46cc7e88a?access_token=#{Houston.config.github[:access_token]}"
125
126
  mock(Faraday).post(expected_url, /"state":"pending"/) do
@@ -140,7 +141,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
140
141
  slug: "fixture",
141
142
  version_control_name: "Git",
142
143
  extended_attributes: { "git_location" => "git@github.com:houston/fixture.git" })
143
- test_run = TestRun.new(project: @project, sha: "bd3e9e2", result: :pass, completed_at: Time.now)
144
+ test_run = TestRun.new(project: project, sha: "bd3e9e2", result: :pass, completed_at: Time.now)
144
145
 
145
146
  expected_url = "https://api.github.com/repos/houston/fixture/statuses/bd3e9e2e4ddf89a640a4f880cbf55bb46cc7e88a?access_token=#{Houston.config.github[:access_token]}"
146
147
  mock(Faraday).post(expected_url, /"state":"success"/) do
@@ -154,7 +155,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
154
155
 
155
156
  should "publish test results to CodeClimate" do
156
157
  @project = create(:project, code_climate_repo_token: "repo_token")
157
- test_run = TestRun.new(project: @project, sha: "bd3e9e2", result: "pass", completed_at: Time.now, coverage: [
158
+ test_run = TestRun.new(project: project, sha: "bd3e9e2", result: "pass", completed_at: Time.now, coverage: [
158
159
  { filename: "lib/test1.rb", coverage: [1,nil,nil,1,1,nil,1] },
159
160
  { filename: "lib/test2.rb", coverage: [1,nil,1,0,0,0,0,1,nil,1] }
160
161
  ])
@@ -5,6 +5,7 @@ require "support/houston/adapters/ci_server/mock_adapter"
5
5
 
6
6
 
7
7
  class ProjectTest < ActiveSupport::TestCase
8
+ attr_reader :project
8
9
 
9
10
 
10
11
  context "Validation:" do
@@ -55,4 +56,36 @@ class ProjectTest < ActiveSupport::TestCase
55
56
  end
56
57
 
57
58
 
59
+ context "A project's bare repo," do
60
+ setup do
61
+ system "rm -rf #{Rails.root}/tmp/test-01.git"
62
+ system "cp -r #{Rails.root}/test/data/bare_repo.git #{Rails.root}/tmp/test-01.git"
63
+ @project = Project.create!(
64
+ name: "Test",
65
+ slug: "test-01",
66
+ version_control_name: "Git",
67
+ extended_attributes: {"git_location" => "git@github.com:houston/fixture.git"})
68
+ end
69
+
70
+ teardown do
71
+ system "rm -rf #{Rails.root}/tmp/test-*.git"
72
+ end
73
+
74
+ context "when the project's slug is changed," do
75
+ should "be moved" do
76
+ project.update_attributes slug: "test-02"
77
+ test01_exists = File.exists?("#{Rails.root}/tmp/test-01.git")
78
+ test02_exists = File.exists?("#{Rails.root}/tmp/test-02.git")
79
+
80
+ problems = []
81
+ problems << "tmp/test-01.git still exists" if test01_exists
82
+ problems << "tmp/test-02.git does not exist" unless test02_exists
83
+
84
+ assert problems.none?, "Expected tmp/test-01.git to have been renamed " <<
85
+ "to test-02.git, but #{problems.join(" and ")}"
86
+ end
87
+ end
88
+ end
89
+
90
+
58
91
  end
@@ -63,9 +63,11 @@ class PullRequestTest < ActiveSupport::TestCase
63
63
  end
64
64
  end
65
65
 
66
+
67
+
66
68
  context "If there is already a local copy of that pull request," do
67
69
  setup do
68
- Github::PullRequest.create! { |pull|
70
+ @pull_request = Github::PullRequest.create! { |pull|
69
71
  pull.merge_attributes @pull_request_payload }
70
72
  end
71
73
 
@@ -80,6 +82,74 @@ class PullRequestTest < ActiveSupport::TestCase
80
82
  assert_match /has already been taken/, pull_request.errors.full_messages.join(", ")
81
83
  end
82
84
  end
85
+
86
+
87
+
88
+ context "when the pull request is synchronized," do
89
+ context "and base_sha changes, it" do
90
+ setup do
91
+ pull_request.merge_attributes(
92
+ "user" => {},
93
+ "title" => "Divergent Branch",
94
+ "body" => "This is the description of the pull request",
95
+ "base" => { "sha" => "a5c551d52bb0bb8a702f70879ac9caeb12a721fc" },
96
+ "head" => { "sha" => "baa3ef218a40f23fe542f98d8b8e60a2e8e0bff0" })
97
+ end
98
+
99
+ should "associate itself with all the commits again" do
100
+ mock(pull_request.project.commits).between(
101
+ "a5c551d52bb0bb8a702f70879ac9caeb12a721fc",
102
+ "baa3ef218a40f23fe542f98d8b8e60a2e8e0bff0").once.returns([])
103
+ pull_request.save!
104
+ end
105
+
106
+ should "fire 'github:pull:synchronize'" do
107
+ assert_triggered "github:pull:synchronize" do
108
+ pull_request.save!
109
+ end
110
+ end
111
+ end
112
+
113
+ context "and head_sha changes, it" do
114
+ setup do
115
+ pull_request.merge_attributes(
116
+ "user" => {},
117
+ "title" => "Divergent Branch",
118
+ "body" => "This is the description of the pull request",
119
+ "base" => { "sha" => "e0e4580f44317a084dd5142fef6b4144a4394819" },
120
+ "head" => { "sha" => "a5c551d52bb0bb8a702f70879ac9caeb12a721fc" })
121
+ end
122
+
123
+ should "associate itself with all the commits again" do
124
+ mock(pull_request.project.commits).between(
125
+ "e0e4580f44317a084dd5142fef6b4144a4394819",
126
+ "a5c551d52bb0bb8a702f70879ac9caeb12a721fc").once.returns([])
127
+ pull_request.save!
128
+ end
129
+
130
+ should "fire 'github:pull:synchronize'" do
131
+ assert_triggered "github:pull:synchronize" do
132
+ pull_request.save!
133
+ end
134
+ end
135
+ end
136
+
137
+ context "and neither base_sha nor head_sha changes, it" do
138
+ setup do
139
+ pull_request.merge_attributes(
140
+ "user" => {},
141
+ "title" => "Divergent Branch",
142
+ "body" => "This is the description of the pull request",
143
+ "base" => { "sha" => "e0e4580f44317a084dd5142fef6b4144a4394819" },
144
+ "head" => { "sha" => "baa3ef218a40f23fe542f98d8b8e60a2e8e0bff0" })
145
+ end
146
+
147
+ should "not associate itself with all the commits again" do
148
+ mock(pull_request.project.commits).between.never
149
+ pull_request.save!
150
+ end
151
+ end
152
+ end
83
153
  end
84
154
  end
85
155
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: houston-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Lail
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-14 00:00:00.000000000 Z
11
+ date: 2016-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.5
19
+ version: 4.2.5.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 4.2.5
26
+ version: 4.2.5.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sprockets
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 0.8.10
187
+ version: 0.9.2
188
188
  type: :runtime
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 0.8.10
194
+ version: 0.9.2
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: faraday-http-cache
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -280,16 +280,16 @@ dependencies:
280
280
  name: nokogiri
281
281
  requirement: !ruby/object:Gem::Requirement
282
282
  requirements:
283
- - - "~>"
283
+ - - ">="
284
284
  - !ruby/object:Gem::Version
285
- version: 1.6.6.2
285
+ version: '0'
286
286
  type: :runtime
287
287
  prerelease: false
288
288
  version_requirements: !ruby/object:Gem::Requirement
289
289
  requirements:
290
- - - "~>"
290
+ - - ">="
291
291
  - !ruby/object:Gem::Version
292
- version: 1.6.6.2
292
+ version: '0'
293
293
  - !ruby/object:Gem::Dependency
294
294
  name: houston-oauth-plugin
295
295
  requirement: !ruby/object:Gem::Requirement
@@ -775,6 +775,7 @@ files:
775
775
  - app/assets/images/bug-open-32.png
776
776
  - app/assets/images/bug-zero-128.png
777
777
  - app/assets/images/bug-zero-48.png
778
+ - app/assets/images/drag-grip.png
778
779
  - app/assets/javascripts/app/boot.coffee
779
780
  - app/assets/javascripts/app/emoji.coffee.erb
780
781
  - app/assets/javascripts/app/infinite_scroll.coffee
@@ -787,8 +788,6 @@ files:
787
788
  - app/assets/javascripts/app/models/user.coffee
788
789
  - app/assets/javascripts/app/mousetrap-bind-scoped.js
789
790
  - app/assets/javascripts/app/releases.coffee
790
- - app/assets/javascripts/app/stacked_area_graph.coffee
791
- - app/assets/javascripts/app/stacked_bar_graph.coffee
792
791
  - app/assets/javascripts/app/table_row_expander.coffee
793
792
  - app/assets/javascripts/app/ticket_tracker_refresh.coffee
794
793
  - app/assets/javascripts/app/views/_show_sprint_view.coffee
@@ -817,6 +816,8 @@ files:
817
816
  - app/assets/javascripts/core/handlebars_helpers.coffee
818
817
  - app/assets/javascripts/core/helpers.coffee
819
818
  - app/assets/javascripts/core/jquery_extensions.coffee
819
+ - app/assets/javascripts/core/stacked_area_graph.coffee
820
+ - app/assets/javascripts/core/stacked_bar_graph.coffee
820
821
  - app/assets/javascripts/dashboard.js
821
822
  - app/assets/javascripts/dashboard/refresher.coffee
822
823
  - app/assets/javascripts/vendor.js
@@ -875,6 +876,7 @@ files:
875
876
  - app/assets/stylesheets/dashboard.css
876
877
  - app/assets/stylesheets/dashboard/dashboard.scss
877
878
  - app/assets/stylesheets/print.css.scss
879
+ - app/assets/stylesheets/variables.scss
878
880
  - app/assets/stylesheets/vendor.css
879
881
  - app/assets/templates/commit.hbs
880
882
  - app/assets/templates/keyboard_shortcuts.hbs
@@ -913,6 +915,7 @@ files:
913
915
  - app/concerns/retirement.rb
914
916
  - app/concerns/ticket_synchronizer.rb
915
917
  - app/concerns/unique_add.rb
918
+ - app/controllers/api/v1/projects_controller.rb
916
919
  - app/controllers/api/v1/sprint_tasks_controller.rb
917
920
  - app/controllers/api/v1/ticket_tasks_controller.rb
918
921
  - app/controllers/application_controller.rb
@@ -1011,7 +1014,6 @@ files:
1011
1014
  - app/models/github/pull_request_event.rb
1012
1015
  - app/models/github/unauthorized.rb
1013
1016
  - app/models/github_token.rb
1014
- - app/models/historical_head.rb
1015
1017
  - app/models/key_dependency.rb
1016
1018
  - app/models/maintenance_light.rb
1017
1019
  - app/models/measurement.rb
@@ -1056,6 +1058,7 @@ files:
1056
1058
  - app/presenters/full_ticket_presenter.rb
1057
1059
  - app/presenters/one_or_many.rb
1058
1060
  - app/presenters/problem_presenter.rb
1061
+ - app/presenters/project_presenter.rb
1059
1062
  - app/presenters/release_presenter.rb
1060
1063
  - app/presenters/sprint_task_presenter.rb
1061
1064
  - app/presenters/task_presenter.rb
@@ -1131,7 +1134,9 @@ files:
1131
1134
  - app/views/releases/_changelog.html.erb
1132
1135
  - app/views/releases/_commits.html.erb
1133
1136
  - app/views/releases/_form.html.erb
1137
+ - app/views/releases/_index.html.erb
1134
1138
  - app/views/releases/_new_release.html.erb
1139
+ - app/views/releases/_results.html.erb
1135
1140
  - app/views/releases/_tickets.html.erb
1136
1141
  - app/views/releases/edit.html.erb
1137
1142
  - app/views/releases/index.html.erb
@@ -1392,10 +1397,15 @@ files:
1392
1397
  - db/migrate/20151205214647_add_avatar_url_to_pull_requests.rb
1393
1398
  - db/migrate/20151209004458_add_json_labels_to_pull_requests.rb
1394
1399
  - db/migrate/20151209030113_add_timestamps_to_pull_requests.rb
1400
+ - db/migrate/20151226154901_add_search_vector_to_releases.rb
1401
+ - db/migrate/20151226155305_generate_index_on_releases.rb
1402
+ - db/migrate/20151228183704_drop_unused_tables.rb
1403
+ - db/migrate/20160120145757_add_successful_to_deploys.rb
1395
1404
  - db/seeds.rb
1396
1405
  - db/structure.sql
1397
1406
  - houston.gemspec
1398
1407
  - lib/configuration.rb
1408
+ - lib/core_ext/array.rb
1399
1409
  - lib/core_ext/duration.rb
1400
1410
  - lib/core_ext/exception.rb
1401
1411
  - lib/core_ext/hash.rb
@@ -3449,7 +3459,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
3449
3459
  version: '0'
3450
3460
  requirements: []
3451
3461
  rubyforge_project:
3452
- rubygems_version: 2.4.8
3462
+ rubygems_version: 2.2.2
3453
3463
  signing_key:
3454
3464
  specification_version: 4
3455
3465
  summary: Mission Control for your projects and teams