Commit 08648212adf2a19f48419b76d1b78541cdd55610

Authored by Sergey Nartimov
2 parents b2ad4d59 e2869720
Exists in master and in 1 other branch production

Merge remote-tracking branch 'upstream/master' into github

Conflicts:
	Gemfile.lock
1 rvm: 1 rvm:
  2 + - 1.9.3
2 - 1.9.2 3 - 1.9.2
3 - 1.8.7 4 - 1.8.7
4 5
5 -# Only build master branch  
6 -branches:  
7 - only:  
8 - - master  
9 6
10 # To stop Travis from running tests for a new commit, 7 # To stop Travis from running tests for a new commit,
11 # add the following to your commit message: [ci skip] 8 # add the following to your commit message: [ci skip]
1 source 'http://rubygems.org' 1 source 'http://rubygems.org'
2 2
3 -gem 'rails', '3.0.10' 3 +gem 'rails', '~> 3.2.0'
  4 +
4 gem 'nokogiri' 5 gem 'nokogiri'
5 gem 'mongoid', '~> 2.2.2' 6 gem 'mongoid', '~> 2.2.2'
6 7
@@ -22,6 +23,7 @@ gem 'hoptoad_notifier', "~> 2.4" @@ -22,6 +23,7 @@ gem 'hoptoad_notifier', "~> 2.4"
22 gem 'actionmailer_inline_css', "~> 1.3.0" 23 gem 'actionmailer_inline_css', "~> 1.3.0"
23 gem 'kaminari' 24 gem 'kaminari'
24 gem 'rack-ssl-enforcer' 25 gem 'rack-ssl-enforcer'
  26 +gem 'fabrication', "~> 1.3.0" # Both for tests, and loading demo data
25 27
26 platform :ruby do 28 platform :ruby do
27 gem 'mongo', '= 1.3.1' 29 gem 'mongo', '= 1.3.1'
@@ -34,10 +36,9 @@ gem 'ri_cal' @@ -34,10 +36,9 @@ gem 'ri_cal'
34 group :development, :test do 36 group :development, :test do
35 gem 'rspec-rails', '~> 2.6' 37 gem 'rspec-rails', '~> 2.6'
36 gem 'webmock', :require => false 38 gem 'webmock', :require => false
37 - gem 'fabrication'  
38 unless ENV['TRAVIS'] 39 unless ENV['TRAVIS']
39 gem 'ruby-debug', :platform => :mri_18 40 gem 'ruby-debug', :platform => :mri_18
40 - gem 'ruby-debug19', :platform => :mri_19, :require => 'ruby-debug' 41 + # gem 'ruby-debug19', :platform => :mri_19, :require => 'ruby-debug'
41 end 42 end
42 # gem 'rpm_contrib', :git => "git://github.com/bensymonds/rpm_contrib.git", :branch => "mongo-1.4.0_update" 43 # gem 'rpm_contrib', :git => "git://github.com/bensymonds/rpm_contrib.git", :branch => "mongo-1.4.0_update"
43 end 44 end
@@ -2,44 +2,43 @@ GEM @@ -2,44 +2,43 @@ GEM
2 remote: http://rubygems.org/ 2 remote: http://rubygems.org/
3 specs: 3 specs:
4 SystemTimer (1.2.3) 4 SystemTimer (1.2.3)
5 - abstract (1.0.0)  
6 - actionmailer (3.0.10)  
7 - actionpack (= 3.0.10)  
8 - mail (~> 2.2.19) 5 + actionmailer (3.2.3)
  6 + actionpack (= 3.2.3)
  7 + mail (~> 2.4.4)
9 actionmailer_inline_css (1.3.1) 8 actionmailer_inline_css (1.3.1)
10 actionmailer (>= 3.0.0) 9 actionmailer (>= 3.0.0)
11 nokogiri (>= 1.4.4) 10 nokogiri (>= 1.4.4)
12 premailer (>= 1.7.1) 11 premailer (>= 1.7.1)
13 - actionpack (3.0.10)  
14 - activemodel (= 3.0.10)  
15 - activesupport (= 3.0.10)  
16 - builder (~> 2.1.2)  
17 - erubis (~> 2.6.6)  
18 - i18n (~> 0.5.0)  
19 - rack (~> 1.2.1)  
20 - rack-mount (~> 0.6.14)  
21 - rack-test (~> 0.5.7)  
22 - tzinfo (~> 0.3.23)  
23 - activemodel (3.0.10)  
24 - activesupport (= 3.0.10)  
25 - builder (~> 2.1.2)  
26 - i18n (~> 0.5.0)  
27 - activerecord (3.0.10)  
28 - activemodel (= 3.0.10)  
29 - activesupport (= 3.0.10)  
30 - arel (~> 2.0.10)  
31 - tzinfo (~> 0.3.23)  
32 - activeresource (3.0.10)  
33 - activemodel (= 3.0.10)  
34 - activesupport (= 3.0.10)  
35 - activesupport (3.0.10)  
36 - addressable (2.2.7)  
37 - archive-tar-minitar (0.5.2)  
38 - arel (2.0.10) 12 + actionpack (3.2.3)
  13 + activemodel (= 3.2.3)
  14 + activesupport (= 3.2.3)
  15 + builder (~> 3.0.0)
  16 + erubis (~> 2.7.0)
  17 + journey (~> 1.0.1)
  18 + rack (~> 1.4.0)
  19 + rack-cache (~> 1.2)
  20 + rack-test (~> 0.6.1)
  21 + sprockets (~> 2.1.2)
  22 + activemodel (3.2.3)
  23 + activesupport (= 3.2.3)
  24 + builder (~> 3.0.0)
  25 + activerecord (3.2.3)
  26 + activemodel (= 3.2.3)
  27 + activesupport (= 3.2.3)
  28 + arel (~> 3.0.2)
  29 + tzinfo (~> 0.3.29)
  30 + activeresource (3.2.3)
  31 + activemodel (= 3.2.3)
  32 + activesupport (= 3.2.3)
  33 + activesupport (3.2.3)
  34 + i18n (~> 0.6)
  35 + multi_json (~> 1.0)
  36 + addressable (2.2.8)
  37 + arel (3.0.2)
39 bcrypt-ruby (3.0.1) 38 bcrypt-ruby (3.0.1)
40 bson (1.3.1) 39 bson (1.3.1)
41 bson_ext (1.3.1) 40 bson_ext (1.3.1)
42 - builder (2.1.2) 41 + builder (3.0.0)
43 capybara (1.1.2) 42 capybara (1.1.2)
44 mime-types (>= 1.16) 43 mime-types (>= 1.16)
45 nokogiri (>= 1.3.3) 44 nokogiri (>= 1.3.3)
@@ -47,14 +46,15 @@ GEM @@ -47,14 +46,15 @@ GEM
47 rack-test (>= 0.5.4) 46 rack-test (>= 0.5.4)
48 selenium-webdriver (~> 2.0) 47 selenium-webdriver (~> 2.0)
49 xpath (~> 0.1.4) 48 xpath (~> 0.1.4)
50 - childprocess (0.3.1) 49 + childprocess (0.3.2)
51 ffi (~> 1.0.6) 50 ffi (~> 1.0.6)
52 - columnize (0.3.4) 51 + columnize (0.3.6)
53 crack (0.3.1) 52 crack (0.3.1)
54 - css_parser (1.2.5) 53 + css_parser (1.2.6)
55 addressable 54 addressable
  55 + rdoc
56 database_cleaner (0.6.7) 56 database_cleaner (0.6.7)
57 - devise (1.4.7) 57 + devise (1.4.9)
58 bcrypt-ruby (~> 3.0) 58 bcrypt-ruby (~> 3.0)
59 orm_adapter (~> 0.0.3) 59 orm_adapter (~> 0.0.3)
60 warden (~> 1.0.3) 60 warden (~> 1.0.3)
@@ -62,51 +62,54 @@ GEM @@ -62,51 +62,54 @@ GEM
62 email_spec (1.2.1) 62 email_spec (1.2.1)
63 mail (~> 2.2) 63 mail (~> 2.2)
64 rspec (~> 2.0) 64 rspec (~> 2.0)
65 - erubis (2.6.6)  
66 - abstract (>= 1.0.0)  
67 - fabrication (1.2.0)  
68 - faraday (0.7.4)  
69 - addressable (~> 2.2.6)  
70 - multipart-post (~> 1.1.0)  
71 - rack (>= 1.1.0, < 2)  
72 - faraday_middleware (0.8.6) 65 + erubis (2.7.0)
  66 + fabrication (1.3.2)
  67 + faraday (0.7.6)
  68 + addressable (~> 2.2)
  69 + multipart-post (~> 1.1)
  70 + rack (~> 1.1)
  71 + faraday_middleware (0.8.7)
73 faraday (>= 0.7.4, < 0.9) 72 faraday (>= 0.7.4, < 0.9)
74 ffi (1.0.11) 73 ffi (1.0.11)
75 - haml (3.1.3) 74 + haml (3.1.5)
76 happymapper (0.4.0) 75 happymapper (0.4.0)
77 libxml-ruby (~> 2.0) 76 libxml-ruby (~> 2.0)
78 has_scope (0.5.1) 77 has_scope (0.5.1)
79 hashie (1.2.0) 78 hashie (1.2.0)
  79 + hike (1.2.1)
80 hoptoad_notifier (2.4.11) 80 hoptoad_notifier (2.4.11)
81 activesupport 81 activesupport
82 builder 82 builder
83 - htmlentities (4.3.0)  
84 - i18n (0.5.0)  
85 - inherited_resources (1.3.0) 83 + htmlentities (4.3.1)
  84 + i18n (0.6.0)
  85 + inherited_resources (1.3.1)
86 has_scope (~> 0.5.0) 86 has_scope (~> 0.5.0)
87 - responders (~> 0.6.0)  
88 - kaminari (0.12.4)  
89 - rails (>= 3.0.0)  
90 - kgio (2.6.0) 87 + responders (~> 0.6)
  88 + journey (1.0.3)
  89 + json (1.7.1)
  90 + kaminari (0.13.0)
  91 + actionpack (>= 3.0.0)
  92 + activesupport (>= 3.0.0)
  93 + railties (>= 3.0.0)
  94 + kgio (2.7.4)
91 launchy (2.1.0) 95 launchy (2.1.0)
92 addressable (~> 2.2.6) 96 addressable (~> 2.2.6)
93 - libxml-ruby (2.2.2) 97 + libwebsocket (0.1.3)
  98 + addressable
  99 + libxml-ruby (2.3.2)
94 lighthouse-api (2.0) 100 lighthouse-api (2.0)
95 activeresource (>= 3.0.0) 101 activeresource (>= 3.0.0)
96 activesupport (>= 3.0.0) 102 activesupport (>= 3.0.0)
97 linecache (0.46) 103 linecache (0.46)
98 rbx-require-relative (> 0.0.4) 104 rbx-require-relative (> 0.0.4)
99 - linecache19 (0.5.12)  
100 - ruby_core_source (>= 0.1.4)  
101 - mail (2.2.19)  
102 - activesupport (>= 2.3.6) 105 + mail (2.4.4)
103 i18n (>= 0.4.0) 106 i18n (>= 0.4.0)
104 mime-types (~> 1.16) 107 mime-types (~> 1.16)
105 treetop (~> 1.4.8) 108 treetop (~> 1.4.8)
106 - mime-types (1.16) 109 + mime-types (1.18)
107 mongo (1.3.1) 110 mongo (1.3.1)
108 bson (>= 1.3.1) 111 bson (>= 1.3.1)
109 - mongoid (2.2.4) 112 + mongoid (2.2.5)
110 activemodel (~> 3.0) 113 activemodel (~> 3.0)
111 mongo (~> 1.3) 114 mongo (~> 1.3)
112 tzinfo (~> 0.3.22) 115 tzinfo (~> 0.3.22)
@@ -115,9 +118,9 @@ GEM @@ -115,9 +118,9 @@ GEM
115 bundler (>= 1.0.0) 118 bundler (>= 1.0.0)
116 rails (>= 3.0.0) 119 rails (>= 3.0.0)
117 railties (>= 3.0.0) 120 railties (>= 3.0.0)
118 - multi_json (1.1.0) 121 + multi_json (1.0.4)
119 multipart-post (1.1.5) 122 multipart-post (1.1.5)
120 - nokogiri (1.5.0) 123 + nokogiri (1.5.2)
121 oa-core (0.3.2) 124 oa-core (0.3.2)
122 oauth2 (0.5.2) 125 oauth2 (0.5.2)
123 faraday (~> 0.7) 126 faraday (~> 0.7)
@@ -137,10 +140,10 @@ GEM @@ -137,10 +140,10 @@ GEM
137 omniauth-oauth2 (1.0.0) 140 omniauth-oauth2 (1.0.0)
138 oauth2 (~> 0.5.0) 141 oauth2 (~> 0.5.0)
139 omniauth (~> 1.0) 142 omniauth (~> 1.0)
140 - orm_adapter (0.0.5) 143 + orm_adapter (0.0.7)
141 oruen_redmine_client (0.0.1) 144 oruen_redmine_client (0.0.1)
142 activeresource (>= 2.3.0) 145 activeresource (>= 2.3.0)
143 - pivotal-tracker (0.4.1) 146 + pivotal-tracker (0.5.4)
144 builder 147 builder
145 builder 148 builder
146 happymapper (>= 0.3.2) 149 happymapper (>= 0.3.2)
@@ -149,92 +152,89 @@ GEM @@ -149,92 +152,89 @@ GEM
149 nokogiri (~> 1.4) 152 nokogiri (~> 1.4)
150 rest-client (~> 1.6.0) 153 rest-client (~> 1.6.0)
151 rest-client (~> 1.6.0) 154 rest-client (~> 1.6.0)
152 - polyglot (0.3.2) 155 + polyglot (0.3.3)
153 premailer (1.7.3) 156 premailer (1.7.3)
154 css_parser (>= 1.1.9) 157 css_parser (>= 1.1.9)
155 htmlentities (>= 4.0.0) 158 htmlentities (>= 4.0.0)
156 - rack (1.2.5)  
157 - rack-mount (0.6.14)  
158 - rack (>= 1.0.0) 159 + rack (1.4.1)
  160 + rack-cache (1.2)
  161 + rack (>= 0.4)
  162 + rack-ssl (1.3.2)
  163 + rack
159 rack-ssl-enforcer (0.2.4) 164 rack-ssl-enforcer (0.2.4)
160 - rack-test (0.5.7) 165 + rack-test (0.6.1)
161 rack (>= 1.0) 166 rack (>= 1.0)
162 - rails (3.0.10)  
163 - actionmailer (= 3.0.10)  
164 - actionpack (= 3.0.10)  
165 - activerecord (= 3.0.10)  
166 - activeresource (= 3.0.10)  
167 - activesupport (= 3.0.10) 167 + rails (3.2.3)
  168 + actionmailer (= 3.2.3)
  169 + actionpack (= 3.2.3)
  170 + activerecord (= 3.2.3)
  171 + activeresource (= 3.2.3)
  172 + activesupport (= 3.2.3)
168 bundler (~> 1.0) 173 bundler (~> 1.0)
169 - railties (= 3.0.10)  
170 - railties (3.0.10)  
171 - actionpack (= 3.0.10)  
172 - activesupport (= 3.0.10) 174 + railties (= 3.2.3)
  175 + railties (3.2.3)
  176 + actionpack (= 3.2.3)
  177 + activesupport (= 3.2.3)
  178 + rack-ssl (~> 1.3.2)
173 rake (>= 0.8.7) 179 rake (>= 0.8.7)
174 rdoc (~> 3.4) 180 rdoc (~> 3.4)
175 - thor (~> 0.14.4) 181 + thor (~> 0.14.6)
176 raindrops (0.8.0) 182 raindrops (0.8.0)
177 - rake (0.9.2)  
178 - rbx-require-relative (0.0.5)  
179 - rdoc (3.9.4)  
180 - responders (0.6.4) 183 + rake (0.9.2.2)
  184 + rbx-require-relative (0.0.9)
  185 + rdoc (3.12)
  186 + json (~> 1.4)
  187 + responders (0.9.1)
  188 + railties (~> 3.1)
181 rest-client (1.6.7) 189 rest-client (1.6.7)
182 mime-types (>= 1.16) 190 mime-types (>= 1.16)
183 ri_cal (0.8.8) 191 ri_cal (0.8.8)
184 - rspec (2.6.0)  
185 - rspec-core (~> 2.6.0)  
186 - rspec-expectations (~> 2.6.0)  
187 - rspec-mocks (~> 2.6.0)  
188 - rspec-core (2.6.4)  
189 - rspec-expectations (2.6.0)  
190 - diff-lcs (~> 1.1.2)  
191 - rspec-mocks (2.6.0)  
192 - rspec-rails (2.6.1)  
193 - actionpack (~> 3.0)  
194 - activesupport (~> 3.0)  
195 - railties (~> 3.0)  
196 - rspec (~> 2.6.0) 192 + rspec (2.10.0)
  193 + rspec-core (~> 2.10.0)
  194 + rspec-expectations (~> 2.10.0)
  195 + rspec-mocks (~> 2.10.0)
  196 + rspec-core (2.10.0)
  197 + rspec-expectations (2.10.0)
  198 + diff-lcs (~> 1.1.3)
  199 + rspec-mocks (2.10.1)
  200 + rspec-rails (2.10.1)
  201 + actionpack (>= 3.0)
  202 + activesupport (>= 3.0)
  203 + railties (>= 3.0)
  204 + rspec (~> 2.10.0)
197 ruby-debug (0.10.4) 205 ruby-debug (0.10.4)
198 columnize (>= 0.1) 206 columnize (>= 0.1)
199 ruby-debug-base (~> 0.10.4.0) 207 ruby-debug-base (~> 0.10.4.0)
200 ruby-debug-base (0.10.4) 208 ruby-debug-base (0.10.4)
201 linecache (>= 0.3) 209 linecache (>= 0.3)
202 - ruby-debug-base19 (0.11.25)  
203 - columnize (>= 0.3.1)  
204 - linecache19 (>= 0.5.11)  
205 - ruby_core_source (>= 0.1.4)  
206 - ruby-debug19 (0.11.6)  
207 - columnize (>= 0.3.1)  
208 - linecache19 (>= 0.5.11)  
209 - ruby-debug-base19 (>= 0.11.19)  
210 - ruby-fogbugz (0.0.4) 210 + ruby-fogbugz (0.1.1)
211 crack 211 crack
212 - typhoeus  
213 - ruby_core_source (0.1.5)  
214 - archive-tar-minitar (>= 0.5.2)  
215 - rubyzip (0.9.6.1)  
216 - selenium-webdriver (2.20.0) 212 + rubyzip (0.9.8)
  213 + selenium-webdriver (2.21.2)
217 childprocess (>= 0.2.5) 214 childprocess (>= 0.2.5)
218 ffi (~> 1.0) 215 ffi (~> 1.0)
  216 + libwebsocket (~> 0.1.3)
219 multi_json (~> 1.0) 217 multi_json (~> 1.0)
220 rubyzip 218 rubyzip
  219 + sprockets (2.1.3)
  220 + hike (~> 1.2)
  221 + rack (~> 1.0)
  222 + tilt (~> 1.1, != 1.3.0)
221 thor (0.14.6) 223 thor (0.14.6)
  224 + tilt (1.3.3)
222 treetop (1.4.10) 225 treetop (1.4.10)
223 polyglot 226 polyglot
224 polyglot (>= 0.3.1) 227 polyglot (>= 0.3.1)
225 - typhoeus (0.2.4)  
226 - mime-types  
227 - mime-types  
228 - tzinfo (0.3.30)  
229 - unicorn (4.1.1)  
230 - kgio (~> 2.4) 228 + tzinfo (0.3.33)
  229 + unicorn (4.3.1)
  230 + kgio (~> 2.6)
231 rack 231 rack
232 - raindrops (~> 0.6) 232 + raindrops (~> 0.7)
233 useragent (0.3.2) 233 useragent (0.3.2)
234 - warden (1.0.5) 234 + warden (1.0.6)
235 rack (>= 1.0) 235 rack (>= 1.0)
236 - webmock (1.7.6)  
237 - addressable (~> 2.2, > 2.2.5) 236 + webmock (1.8.6)
  237 + addressable (>= 2.2.7)
238 crack (>= 0.1.7) 238 crack (>= 0.1.7)
239 xpath (0.1.4) 239 xpath (0.1.4)
240 nokogiri (~> 1.3) 240 nokogiri (~> 1.3)
@@ -251,7 +251,7 @@ DEPENDENCIES @@ -251,7 +251,7 @@ DEPENDENCIES
251 database_cleaner (~> 0.6.0) 251 database_cleaner (~> 0.6.0)
252 devise (~> 1.4.0) 252 devise (~> 1.4.0)
253 email_spec 253 email_spec
254 - fabrication 254 + fabrication (~> 1.3.0)
255 haml 255 haml
256 hoptoad_notifier (~> 2.4) 256 hoptoad_notifier (~> 2.4)
257 htmlentities (~> 4.3.0) 257 htmlentities (~> 4.3.0)
@@ -269,12 +269,11 @@ DEPENDENCIES @@ -269,12 +269,11 @@ DEPENDENCIES
269 oruen_redmine_client 269 oruen_redmine_client
270 pivotal-tracker 270 pivotal-tracker
271 rack-ssl-enforcer 271 rack-ssl-enforcer
272 - rails (= 3.0.10) 272 + rails (~> 3.2.0)
273 ri_cal 273 ri_cal
274 rspec (~> 2.6) 274 rspec (~> 2.6)
275 rspec-rails (~> 2.6) 275 rspec-rails (~> 2.6)
276 ruby-debug 276 ruby-debug
277 - ruby-debug19  
278 ruby-fogbugz 277 ruby-fogbugz
279 unicorn 278 unicorn
280 useragent (~> 0.3.1) 279 useragent (~> 0.3.1)
app/controllers/application_controller.rb
@@ -8,7 +8,7 @@ class ApplicationController &lt; ActionController::Base @@ -8,7 +8,7 @@ class ApplicationController &lt; ActionController::Base
8 # redirect to that app's path instead of the root path (apps#index). 8 # redirect to that app's path instead of the root path (apps#index).
9 def stored_location_for(resource) 9 def stored_location_for(resource)
10 location = super || root_path 10 location = super || root_path
11 - (location == root_path && App.count == 1) ? app_path(App.first) : location 11 + (location == root_path && current_user.apps.count == 1) ? app_path(current_user.apps.first) : location
12 end 12 end
13 13
14 rescue_from ActionController::RedirectBackError, :with => :redirect_to_root 14 rescue_from ActionController::RedirectBackError, :with => :redirect_to_root
@@ -24,7 +24,7 @@ protected @@ -24,7 +24,7 @@ protected
24 def redirect_to_root 24 def redirect_to_root
25 redirect_to(root_path) 25 redirect_to(root_path)
26 end 26 end
27 - 27 +
28 def set_time_zone 28 def set_time_zone
29 Time.zone = current_user.time_zone if user_signed_in? 29 Time.zone = current_user.time_zone if user_signed_in?
30 end 30 end
app/models/app.rb
@@ -14,12 +14,13 @@ class App @@ -14,12 +14,13 @@ class App
14 # Some legacy apps may have string as key instead of BSON::ObjectID 14 # Some legacy apps may have string as key instead of BSON::ObjectID
15 identity :type => String 15 identity :type => String
16 16
17 - # There seems to be a Mongoid bug making it impossible to use String identity with references_many feature:  
18 - # https://github.com/mongoid/mongoid/issues/703  
19 - # Using 32 character string as a workaround.  
20 - before_create do |r|  
21 - r.id = ActiveSupport::SecureRandom.hex  
22 - end 17 + # Bug fix
  18 + # # There seems to be a Mongoid bug making it impossible to use String identity with references_many feature:
  19 + # # https://github.com/mongoid/mongoid/issues/703
  20 + # # Using 32 character string as a workaround.
  21 + # before_create do |r|
  22 + # r.id = ActiveSupport::SecureRandom.hex
  23 + # end
23 24
24 embeds_many :watchers 25 embeds_many :watchers
25 embeds_many :deploys 26 embeds_many :deploys
@@ -154,7 +155,7 @@ class App @@ -154,7 +155,7 @@ class App
154 end 155 end
155 156
156 def generate_api_key 157 def generate_api_key
157 - self.api_key ||= ActiveSupport::SecureRandom.hex 158 + self.api_key ||= SecureRandom.hex
158 end 159 end
159 160
160 def check_issue_tracker 161 def check_issue_tracker
app/models/issue_trackers/lighthouse_tracker.rb
@@ -23,7 +23,7 @@ class IssueTrackers::LighthouseTracker &lt; IssueTracker @@ -23,7 +23,7 @@ class IssueTrackers::LighthouseTracker &lt; IssueTracker
23 Lighthouse.token = api_token 23 Lighthouse.token = api_token
24 # updating lighthouse account 24 # updating lighthouse account
25 Lighthouse::Ticket.site 25 Lighthouse::Ticket.site
26 - 26 + Lighthouse::Ticket.format = :xml
27 ticket = Lighthouse::Ticket.new(:project_id => project_id) 27 ticket = Lighthouse::Ticket.new(:project_id => project_id)
28 ticket.title = issue_title problem 28 ticket.title = issue_title problem
29 29
app/models/issue_trackers/redmine_tracker.rb
@@ -31,6 +31,7 @@ class IssueTrackers::RedmineTracker &lt; IssueTracker @@ -31,6 +31,7 @@ class IssueTrackers::RedmineTracker &lt; IssueTracker
31 RedmineClient::Base.configure do 31 RedmineClient::Base.configure do
32 self.token = token 32 self.token = token
33 self.site = acc 33 self.site = acc
  34 + self.format = :xml
34 end 35 end
35 issue = RedmineClient::Issue.new(:project_id => project_id) 36 issue = RedmineClient::Issue.new(:project_id => project_id)
36 issue.subject = issue_title problem 37 issue.subject = issue_title problem
app/views/layouts/application.html.haml
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 = javascript_include_tag :defaults 10 = javascript_include_tag :defaults
11 = stylesheet_link_tag 'reset', 'application', 'jquery.alerts' 11 = stylesheet_link_tag 'reset', 'application', 'jquery.alerts'
12 :css 12 :css
13 - #{render :partial => "issue_trackers/icons.css"} 13 + #{render :partial => "issue_trackers/icons", :formats => :css}
14 14
15 = yield :head 15 = yield :head
16 %body{:id => controller.controller_name, :class => controller.action_name} 16 %body{:id => controller.controller_name, :class => controller.action_name}
config/application.rb
@@ -20,7 +20,7 @@ module Errbit @@ -20,7 +20,7 @@ module Errbit
20 # -- all .rb files in that directory are automatically loaded. 20 # -- all .rb files in that directory are automatically loaded.
21 21
22 # Custom directories with classes and modules you want to be autoloadable. 22 # Custom directories with classes and modules you want to be autoloadable.
23 - config.autoload_paths += [Rails.root.join("app/models/issue_trackers"), Rails.root.join('lib')] 23 + config.autoload_paths += [Rails.root.join('lib')]
24 24
25 # Only load the plugins named here, in the order given (default is alphabetical). 25 # Only load the plugins named here, in the order given (default is alphabetical).
26 # :all can be used as a placeholder for all plugins not explicitly named. 26 # :all can be used as a placeholder for all plugins not explicitly named.
config/environments/development.rb
@@ -11,7 +11,6 @@ Errbit::Application.configure do @@ -11,7 +11,6 @@ Errbit::Application.configure do
11 11
12 # Show full error reports and disable caching 12 # Show full error reports and disable caching
13 config.consider_all_requests_local = true 13 config.consider_all_requests_local = true
14 - config.action_view.debug_rjs = true  
15 config.action_controller.perform_caching = false 14 config.action_controller.perform_caching = false
16 15
17 # Don't care if the mailer can't send 16 # Don't care if the mailer can't send
config/routes.rb
@@ -36,8 +36,6 @@ Errbit::Application.routes.draw do @@ -36,8 +36,6 @@ Errbit::Application.routes.draw do
36 resources :deploys, :only => [:index] 36 resources :deploys, :only => [:index]
37 end 37 end
38 38
39 - devise_for :users  
40 -  
41 root :to => 'apps#index' 39 root :to => 'apps#index'
42 40
43 end 41 end
lib/issue_tracker_apis/mingle.rb
1 module Mingle 1 module Mingle
2 class Card < ActiveResource::Base 2 class Card < ActiveResource::Base
3 # site template ~> "https://username:password@mingle.example.com/api/v1/projects/:project_id/" 3 # site template ~> "https://username:password@mingle.example.com/api/v1/projects/:project_id/"
  4 + self.format = :xml
4 end 5 end
5 def self.set_site(site) 6 def self.set_site(site)
6 # ActiveResource seems to clone and freeze the @site variable 7 # ActiveResource seems to clone and freeze the @site variable
lib/tasks/errbit/bootstrap.rake
@@ -7,7 +7,7 @@ namespace :errbit do @@ -7,7 +7,7 @@ namespace :errbit do
7 configs = { 7 configs = {
8 'config.example.yml' => 'config.yml', 8 'config.example.yml' => 'config.yml',
9 'deploy.example.rb' => 'deploy.rb', 9 'deploy.example.rb' => 'deploy.rb',
10 - 'mongoid.example.yml' => 'mongoid.yml' 10 + (ENV['HEROKU'] ? 'mongoid.mongohq.yml' : 'mongoid.example.yml') => 'mongoid.yml'
11 } 11 }
12 12
13 puts "Copying example config files..." 13 puts "Copying example config files..."
spec/controllers/devise_sessions_controller_spec.rb 0 → 100644
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
  1 +require 'spec_helper'
  2 +
  3 +describe Devise::SessionsController do
  4 + render_views
  5 +
  6 + describe "POST /users/sign_in" do
  7 + before do
  8 + @request.env["devise.mapping"] = Devise.mappings[:user]
  9 + end
  10 +
  11 + let(:app) { Fabricate(:app) }
  12 + let(:user) { Fabricate(:user) }
  13 +
  14 + it 'redirects to app index page if there are no apps for the user' do
  15 + post :create, { :user => { 'email' => user.email, 'password' => user.password } }
  16 + response.should redirect_to(root_path)
  17 + end
  18 +
  19 + it 'redirects to app page if there is app for the user' do
  20 + Fabricate(:user_watcher, :app => app, :user => user)
  21 + post :create, { :user => { 'email' => user.email, 'password' => user.password } }
  22 + response.should redirect_to(app_path(app))
  23 + end
  24 + end
  25 +end
  26 +
spec/fabricators/app_fabricator.rb
@@ -22,6 +22,6 @@ Fabricator(:deploy) do @@ -22,6 +22,6 @@ Fabricator(:deploy) do
22 username 'clyde.frog' 22 username 'clyde.frog'
23 repository 'git@github.com/errbit/errbit.git' 23 repository 'git@github.com/errbit/errbit.git'
24 environment 'production' 24 environment 'production'
25 - revision { ActiveSupport::SecureRandom.hex(10) } 25 + revision { SecureRandom.hex(10) }
26 end 26 end
27 27
spec/fabricators/err_fabricator.rb
@@ -19,7 +19,7 @@ def random_backtrace @@ -19,7 +19,7 @@ def random_backtrace
19 backtrace = [] 19 backtrace = []
20 99.times {|t| backtrace << { 20 99.times {|t| backtrace << {
21 'number' => rand(999), 21 'number' => rand(999),
22 - 'file' => "/path/to/file/#{ActiveSupport::SecureRandom.hex(4)}.rb", 22 + 'file' => "/path/to/file/#{SecureRandom.hex(4)}.rb",
23 'method' => ActiveSupport.methods.shuffle.first 23 'method' => ActiveSupport.methods.shuffle.first
24 }} 24 }}
25 backtrace 25 backtrace
spec/fabricators/issue_tracker_fabricator.rb
@@ -8,19 +8,19 @@ Fabricator :issue_tracker do @@ -8,19 +8,19 @@ Fabricator :issue_tracker do
8 end 8 end
9 9
10 %w(lighthouse pivotal_labs fogbugz).each do |t| 10 %w(lighthouse pivotal_labs fogbugz).each do |t|
11 - Fabricator "#{t}_tracker".to_sym, :from => :issue_tracker, :class_name => "#{t}_tracker".to_sym 11 + Fabricator "#{t}_tracker".to_sym, :from => :issue_tracker, :class_name => "IssueTrackers::#{t.camelcase}Tracker"
12 end 12 end
13 13
14 -Fabricator :redmine_tracker, :from => :issue_tracker, :class_name => :redmine_tracker do 14 +Fabricator :redmine_tracker, :from => :issue_tracker, :class_name => "IssueTrackers::RedmineTracker" do
15 account 'http://redmine.example.com' 15 account 'http://redmine.example.com'
16 end 16 end
17 17
18 -Fabricator :mingle_tracker, :from => :issue_tracker, :class_name => :mingle_tracker do 18 +Fabricator :mingle_tracker, :from => :issue_tracker, :class_name => "IssueTrackers::MingleTracker" do
19 account 'https://mingle.example.com' 19 account 'https://mingle.example.com'
20 ticket_properties 'card_type = Defect, defect_status = open, priority = essential' 20 ticket_properties 'card_type = Defect, defect_status = open, priority = essential'
21 end 21 end
22 22
23 -Fabricator :github_issues_tracker, :from => :issue_tracker, :class_name => :github_issues_tracker do 23 +Fabricator :github_issues_tracker, :from => :issue_tracker, :class_name => "IssueTrackers::GithubIssuesTracker" do
24 project_id 'test_account/test_project' 24 project_id 'test_account/test_project'
25 username 'test_username' 25 username 'test_username'
26 end 26 end
spec/models/issue_trackers/fogbugz_tracker_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe FogbugzTracker do 3 +describe IssueTrackers::FogbugzTracker do
4 it "should create an issue on Fogbugz with problem params, and set issue link for problem" do 4 it "should create an issue on Fogbugz with problem params, and set issue link for problem" do
5 notice = Fabricate :notice 5 notice = Fabricate :notice
6 tracker = Fabricate :fogbugz_tracker, :app => notice.app 6 tracker = Fabricate :fogbugz_tracker, :app => notice.app
spec/models/issue_trackers/github_issues_tracker_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe GithubIssuesTracker do 3 +describe IssueTrackers::GithubIssuesTracker do
4 it "should create an issue on Github Issues with problem params, and set issue link for problem" do 4 it "should create an issue on Github Issues with problem params, and set issue link for problem" do
5 notice = Fabricate :notice 5 notice = Fabricate :notice
6 tracker = Fabricate :github_issues_tracker, :app => notice.app 6 tracker = Fabricate :github_issues_tracker, :app => notice.app
spec/models/issue_trackers/lighthouse_tracker_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe LighthouseTracker do 3 +describe IssueTrackers::LighthouseTracker do
4 it "should create an issue on Lighthouse with problem params, and set issue link for problem" do 4 it "should create an issue on Lighthouse with problem params, and set issue link for problem" do
5 notice = Fabricate :notice 5 notice = Fabricate :notice
6 tracker = Fabricate :lighthouse_tracker, :app => notice.app 6 tracker = Fabricate :lighthouse_tracker, :app => notice.app
spec/models/issue_trackers/mingle_tracker_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe MingleTracker do 3 +describe IssueTrackers::MingleTracker do
4 it "should create an issue on Mingle with problem params, and set issue link for problem" do 4 it "should create an issue on Mingle with problem params, and set issue link for problem" do
5 notice = Fabricate :notice 5 notice = Fabricate :notice
6 tracker = Fabricate :mingle_tracker, :app => notice.app 6 tracker = Fabricate :mingle_tracker, :app => notice.app
spec/models/issue_trackers/pivotal_labs_tracker_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe PivotalLabsTracker do 3 +describe IssueTrackers::PivotalLabsTracker do
4 it "should create an issue on Pivotal Tracker with problem params, and set issue link for problem" do 4 it "should create an issue on Pivotal Tracker with problem params, and set issue link for problem" do
5 notice = Fabricate :notice 5 notice = Fabricate :notice
6 tracker = Fabricate :pivotal_labs_tracker, :app => notice.app, :project_id => 10 6 tracker = Fabricate :pivotal_labs_tracker, :app => notice.app, :project_id => 10
spec/models/issue_trackers/redmine_tracker_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe RedmineTracker do 3 +describe IssueTrackers::RedmineTracker do
4 it "should create an issue on Redmine with problem params, and set issue link for problem" do 4 it "should create an issue on Redmine with problem params, and set issue link for problem" do
5 notice = Fabricate(:notice) 5 notice = Fabricate(:notice)
6 tracker = Fabricate(:redmine_tracker, :app => notice.app, :project_id => 10) 6 tracker = Fabricate(:redmine_tracker, :app => notice.app, :project_id => 10)
spec/views/errs/show.html.haml_spec.rb
@@ -17,7 +17,7 @@ describe &quot;errs/show.html.haml&quot; do @@ -17,7 +17,7 @@ describe &quot;errs/show.html.haml&quot; do
17 17
18 it "should confirm the 'resolve' link by default" do 18 it "should confirm the 'resolve' link by default" do
19 render 19 render
20 - action_bar = String.new(view.instance_variable_get(:@_content_for)[:action_bar]) 20 + action_bar = String.new(view.view_flow.get(:action_bar))
21 resolve_link = action_bar.match(/(<a href.*?(class="resolve").*?>)/)[0] 21 resolve_link = action_bar.match(/(<a href.*?(class="resolve").*?>)/)[0]
22 resolve_link.should =~ /data-confirm="Seriously\?"/ 22 resolve_link.should =~ /data-confirm="Seriously\?"/
23 end 23 end
@@ -25,7 +25,7 @@ describe &quot;errs/show.html.haml&quot; do @@ -25,7 +25,7 @@ describe &quot;errs/show.html.haml&quot; do
25 it "should confirm the 'resolve' link if configuration is unset" do 25 it "should confirm the 'resolve' link if configuration is unset" do
26 Errbit::Config.stub(:confirm_resolve_err).and_return(nil) 26 Errbit::Config.stub(:confirm_resolve_err).and_return(nil)
27 render 27 render
28 - action_bar = String.new(view.instance_variable_get(:@_content_for)[:action_bar]) 28 + action_bar = String.new(view.view_flow.get(:action_bar))
29 resolve_link = action_bar.match(/(<a href.*?(class="resolve").*?>)/)[0] 29 resolve_link = action_bar.match(/(<a href.*?(class="resolve").*?>)/)[0]
30 resolve_link.should =~ /data-confirm="Seriously\?"/ 30 resolve_link.should =~ /data-confirm="Seriously\?"/
31 end 31 end
@@ -33,7 +33,7 @@ describe &quot;errs/show.html.haml&quot; do @@ -33,7 +33,7 @@ describe &quot;errs/show.html.haml&quot; do
33 it "should not confirm the 'resolve' link if configured not to" do 33 it "should not confirm the 'resolve' link if configured not to" do
34 Errbit::Config.stub(:confirm_resolve_err).and_return(false) 34 Errbit::Config.stub(:confirm_resolve_err).and_return(false)
35 render 35 render
36 - action_bar = String.new(view.instance_variable_get(:@_content_for)[:action_bar]) 36 + action_bar = String.new(view.view_flow.get(:action_bar))
37 resolve_link = action_bar.match(/(<a href.*?(class="resolve").*?>)/)[0] 37 resolve_link = action_bar.match(/(<a href.*?(class="resolve").*?>)/)[0]
38 resolve_link.should_not =~ /data-confirm=/ 38 resolve_link.should_not =~ /data-confirm=/
39 end 39 end
@@ -42,7 +42,7 @@ describe &quot;errs/show.html.haml&quot; do @@ -42,7 +42,7 @@ describe &quot;errs/show.html.haml&quot; do
42 url = 'http://localhost:3000/errs' 42 url = 'http://localhost:3000/errs'
43 controller.request.env['HTTP_REFERER'] = url 43 controller.request.env['HTTP_REFERER'] = url
44 render 44 render
45 - action_bar = String.new(view.instance_variable_get(:@_content_for)[:action_bar]) 45 + action_bar = String.new(view.view_flow.get(:action_bar))
46 action_bar.should =~ /<span><a href=\"#{url}\" class=\"up\">up<\/a><\/span>/ 46 action_bar.should =~ /<span><a href=\"#{url}\" class=\"up\">up<\/a><\/span>/
47 end 47 end
48 48
@@ -52,7 +52,7 @@ describe &quot;errs/show.html.haml&quot; do @@ -52,7 +52,7 @@ describe &quot;errs/show.html.haml&quot; do
52 assign :problem, problem 52 assign :problem, problem
53 assign :app, problem.app 53 assign :app, problem.app
54 render 54 render
55 - action_bar = String.new(view.instance_variable_get(:@_content_for)[:action_bar]) 55 + action_bar = String.new(view.view_flow.get(:action_bar))
56 action_bar.should =~ /<span><a href=\"#{app_errs_path(problem.app)}\" class=\"up\">up<\/a><\/span>/ 56 action_bar.should =~ /<span><a href=\"#{app_errs_path(problem.app)}\" class=\"up\">up<\/a><\/span>/
57 end 57 end
58 58
@@ -68,7 +68,7 @@ describe &quot;errs/show.html.haml&quot; do @@ -68,7 +68,7 @@ describe &quot;errs/show.html.haml&quot; do
68 assign :problem, problem 68 assign :problem, problem
69 assign :app, problem.app 69 assign :app, problem.app
70 render 70 render
71 - comments_section = String.new(view.instance_variable_get(:@_content_for)[:comments]) 71 + comments_section = String.new(view.view_flow.get(:comments))
72 comments_section.should =~ /Test comment/ 72 comments_section.should =~ /Test comment/
73 comments_section.should =~ /Add a comment/ 73 comments_section.should =~ /Add a comment/
74 end 74 end
@@ -84,7 +84,7 @@ describe &quot;errs/show.html.haml&quot; do @@ -84,7 +84,7 @@ describe &quot;errs/show.html.haml&quot; do
84 problem = Fabricate(:problem) 84 problem = Fabricate(:problem)
85 with_issue_tracker(problem) 85 with_issue_tracker(problem)
86 render 86 render
87 - view.instance_variable_get(:@_content_for)[:comments].should be_blank 87 + view.view_flow.get(:comments).should be_blank
88 end 88 end
89 89
90 it 'should display existing comments' do 90 it 'should display existing comments' do
@@ -92,7 +92,7 @@ describe &quot;errs/show.html.haml&quot; do @@ -92,7 +92,7 @@ describe &quot;errs/show.html.haml&quot; do
92 problem.reload 92 problem.reload
93 with_issue_tracker(problem) 93 with_issue_tracker(problem)
94 render 94 render
95 - comments_section = String.new(view.instance_variable_get(:@_content_for)[:comments]) 95 + comments_section = String.new(view.view_flow.get(:comments))
96 comments_section.should =~ /Test comment/ 96 comments_section.should =~ /Test comment/
97 comments_section.should_not =~ /Add a comment/ 97 comments_section.should_not =~ /Add a comment/
98 end 98 end