doop 0.0.4.2 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +126 -12
  3. data/app/helpers/doop_helper.rb +4 -0
  4. data/demo/.gitignore +19 -0
  5. data/demo/.rspec +2 -0
  6. data/demo/Gemfile +70 -0
  7. data/demo/Gemfile.lock +237 -0
  8. data/demo/README.md +50 -0
  9. data/demo/Rakefile +6 -0
  10. data/demo/app/assets/images/.keep +0 -0
  11. data/demo/app/assets/images/cert_sample.jpg +0 -0
  12. data/demo/app/assets/javascripts/application.js +16 -0
  13. data/{lib/generators/doopgovuk/templates → demo}/app/assets/javascripts/demo.js.coffee +0 -0
  14. data/{lib/generators/doopgovuk/templates → demo}/app/assets/javascripts/demo/analytics.js.erb +0 -0
  15. data/demo/app/assets/javascripts/demo/application.js +8 -0
  16. data/demo/app/assets/stylesheets/application.css +15 -0
  17. data/{lib/generators/doopgovuk/templates → demo}/app/assets/stylesheets/demo.css.scss +39 -0
  18. data/{lib/generators/doopgovuk/templates → demo}/app/assets/stylesheets/demo/application.css +1 -0
  19. data/demo/app/controllers/application_controller.rb +5 -0
  20. data/demo/app/controllers/concerns/.keep +0 -0
  21. data/{lib/generators/doopgovuk/templates → demo}/app/controllers/demo_controller.rb +84 -53
  22. data/demo/app/helpers/application_helper.rb +2 -0
  23. data/demo/app/helpers/demo_helper.rb +2 -0
  24. data/demo/app/mailers/.keep +0 -0
  25. data/demo/app/models/.keep +0 -0
  26. data/demo/app/models/concerns/.keep +0 -0
  27. data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_about_you.html.erb +0 -0
  28. data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_before_you_begin.html.erb +3 -3
  29. data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_children.html.erb +8 -6
  30. data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_declaration.html.erb +0 -0
  31. data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_preamble.html.erb +10 -0
  32. data/demo/app/views/demo/harness.html.erb +6 -0
  33. data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/index.html.erb +0 -0
  34. data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/index.js.erb +0 -0
  35. data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_change_answer_tooltip.html.erb +0 -0
  36. data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_debug.html.erb +1 -1
  37. data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_error.html.erb +0 -0
  38. data/demo/app/views/doop/_file_uploader.html.erb +58 -0
  39. data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_info_box.html.erb +0 -0
  40. data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_navbar.html.erb +0 -0
  41. data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_question.html.erb +0 -0
  42. data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_question_form.html.erb +1 -1
  43. data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_textfield.html.erb +0 -0
  44. data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_tooltip.html.erb +0 -0
  45. data/{lib/generators/doopgovuk/templates → demo}/app/views/layouts/application.html.erb +0 -0
  46. data/demo/bin/bundle +3 -0
  47. data/demo/bin/rails +8 -0
  48. data/demo/bin/rake +8 -0
  49. data/demo/bin/rspec +16 -0
  50. data/demo/bin/spring +18 -0
  51. data/demo/config.ru +4 -0
  52. data/demo/config/application.rb +23 -0
  53. data/demo/config/boot.rb +4 -0
  54. data/demo/config/database.yml +26 -0
  55. data/demo/config/environment.rb +5 -0
  56. data/demo/config/environments/development.rb +37 -0
  57. data/demo/config/environments/production.rb +78 -0
  58. data/demo/config/environments/test.rb +39 -0
  59. data/demo/config/initializers/assets.rb +8 -0
  60. data/demo/config/initializers/backtrace_silencers.rb +7 -0
  61. data/demo/config/initializers/cookies_serializer.rb +3 -0
  62. data/demo/config/initializers/filter_parameter_logging.rb +4 -0
  63. data/demo/config/initializers/inflections.rb +16 -0
  64. data/demo/config/initializers/mime_types.rb +4 -0
  65. data/demo/config/initializers/session_store.rb +3 -0
  66. data/demo/config/initializers/wrap_parameters.rb +14 -0
  67. data/demo/config/locales/en.yml +23 -0
  68. data/demo/config/routes.rb +63 -0
  69. data/demo/config/secrets.yml +22 -0
  70. data/demo/db/seeds.rb +7 -0
  71. data/demo/lib/assets/.keep +0 -0
  72. data/demo/lib/tasks/.keep +0 -0
  73. data/demo/log/.keep +0 -0
  74. data/demo/notes.txt +3 -0
  75. data/demo/public/404.html +67 -0
  76. data/demo/public/422.html +67 -0
  77. data/demo/public/500.html +66 -0
  78. data/demo/public/favicon.ico +0 -0
  79. data/demo/public/robots.txt +5 -0
  80. data/{lib/generators/doopgovuk/templates → demo}/spec/features/demo_spec.rb +24 -5
  81. data/{lib/generators/doopgovuk/templates → demo}/spec/rails_helper.rb +0 -0
  82. data/{lib/generators/doopgovuk/templates → demo}/spec/spec_helper.rb +0 -0
  83. data/demo/test/controllers/.keep +0 -0
  84. data/demo/test/fixtures/.keep +0 -0
  85. data/demo/test/helpers/.keep +0 -0
  86. data/demo/test/integration/.keep +0 -0
  87. data/demo/test/mailers/.keep +0 -0
  88. data/demo/test/models/.keep +0 -0
  89. data/demo/test/test_helper.rb +10 -0
  90. data/demo/vendor/assets/javascripts/.keep +0 -0
  91. data/demo/vendor/assets/stylesheets/.keep +0 -0
  92. data/doop.gemspec +1 -17
  93. data/lib/doop-rspec.rb +4 -0
  94. data/lib/doop/version.rb +1 -1
  95. data/lib/doop_controller.rb +19 -24
  96. data/lib/generators/doopgovuk/doopgovuk_generator.rb +23 -13
  97. data/lib/generators/doopgovuk/templates/.keep +0 -0
  98. data/notes/screenshots/doop_1.png +0 -0
  99. metadata +94 -31
  100. data/lib/generators/doopgovuk/templates/app/assets/javascripts/demo/application.js +0 -3
  101. data/lib/generators/doopgovuk/templates/app/views/demo/harness.html.erb +0 -6
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODYyNmE1ZGQwMjhjNTU4YmMwMjE3NDczZTIyYTIxZDk0Mzg4ZThmYg==
4
+ ZTdjNDFlZGI4NDA0YTBmZTY1M2MwMTU2ODdlMmIzYmQ4MzgzYThkNw==
5
5
  data.tar.gz: !binary |-
6
- MTNjN2MwOTY5ODdkOGNiYThhZmVhYTg4NjY3NmJkMTIyNzI4OGUwMA==
6
+ ZjMxNmI5MmZhNjM3NDM0ZTNlODlkMDNhZjE0MThmMDQ5MDg3YWVlZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDU0NjI5ZGE2NDZhOGE5ZThmMzU0MzAwNTQ3NTM2NWE3ZWU3MmU2OGUxZmUx
10
- YWU3YjA4YWI1YzZkZTlkZmM3M2EzOTA4YWIxOWI0NTZkNjRjOTBkMmRhNzM3
11
- ODdmZmNlOTgyYzE3MzhlNjZiY2RhNzdkOTk5MDQwMzJmNzkxYTQ=
9
+ ZDBjODc4YjYwYTU3NjQ0MjFjMWQzMDU1NmZmNjdkOTZhNGJlNmI4ZWQ1YTIw
10
+ NTYwYTJmZDVhMDI5MWE4OGZkYTJiMGJiN2E5MmRmYjUxMjJkMDc3NzYxZmEw
11
+ Y2I0YmQ3OTlhYTE1NDVkNzUzYTM0NWZkM2VjOTAwZDE3YzBhNzc=
12
12
  data.tar.gz: !binary |-
13
- YTc3ZWU5MTYxNTU0ZTgyMDM0MjRjNTM3Yjg4MmE4MDQzYzc1ZTkwMDgyOGVl
14
- YmVmZmNiNzZiNzI1YmMwYzQyYzFiNGM0YjdiZjc1NmQ0Y2Y2ZDBmY2JhNmM1
15
- Mzg0YmNmZGQwYzFkOTRlOWQxMzcyMTJlYTgyODhmMGU3NzRiMGM=
13
+ MzI2Nzk5MjVkZDE5YzhkYWU4N2U3YjcwMTU0YTg2MDgxMzllNmJhYmIzMzUw
14
+ MmFiYTAxNmE2ZDhkNDQxYTEwYTZjZWY0YzhhNDVhODI3ZWZkNjEwZWExOGU0
15
+ NTNkZjlhMTAzNzNjZWRiMmZhYzA4ZGQxMjE2ZWNiMDBjZTU1ODc=
data/README.md CHANGED
@@ -1,10 +1,13 @@
1
1
  # Doop
2
2
 
3
- A question framework for govuk sites, inspired by the great work GDS have done to standardize the cross government internet presence.
3
+ A question framework for govuk sites, inspired by the great work [GDS](https://gds.blog.gov.uk) have done to standardize the cross government internet presence. Try out the demo:
4
4
 
5
- ## [Doopgovuk demo](http://blooming-wave-8670.herokuapp.com)
5
+ ## [Doopgovuk demo](http://blooming-wave-8670.herokuapp.com/demo/index)
6
+
7
+ it's hosted on heroku so there may be a initial pause while heroku fires up the dynamo.
8
+
9
+ <a href="http://blooming-wave-8670.herokuapp.com/demo/index"><img src="https://raw.githubusercontent.com/coder36/doop/master/notes/screenshots/doop_1.png"/></a>
6
10
 
7
- Try out a demo... it's hosted on heroku so there may be a initial pause while heroku fires up the demo:
8
11
 
9
12
 
10
13
 
@@ -29,11 +32,11 @@ This is still in development, so if you want the latest, then add `gem 'doop', g
29
32
 
30
33
 
31
34
  ## Background
32
- Whilst working with the Student Loans company and GDS we discovered that the best way to get a student to fill a form in was to progressively ask questions, one after the other rather than as one big form. User experience testing showed this was a far less intimidating experience, and they would more likely stick at it. Furthermore, based on pevious answers, we can choose which questions to ask. This makes each questionaire effectively tailored to the individual student.
35
+ Whilst working with the Student Loans company and [GDS](https://gds.blog.gov.uk) we discovered that the best way to get a student to fill a form in was to progressively ask questions, one after the other rather than as one big form. User experience testing showed this was a far less intimidating experience, and they would more likely stick at it. Furthermore, based on pevious answers, we can choose which questions to ask. This makes each questionaire effectively tailored to the individual student.
33
36
 
34
37
  Other things we learned, was that students hate answering lots of questions, only to find at the end they are not eligible. So the order of questions is very important, and thats why some of the early questions when applying for a student loan may seem a bit obscure, but they are designed to weed out those who are inelligble as soon as possible.
35
38
 
36
- If you compare the Student loans site and the DVLA site, which are both govuk questionaires you will see that they have been implemented in very different ways, and as a result look fairly different, but essentially do the same thing. In fact I found that within the same company, you had multiple approaches, and completely different technology stacks to achieve the same thing. I spent months writing Daone of these sites,
39
+ If you compare the Student loans site and the [DVLA](https://www.taxdisc.service.gov.uk) site, which are both govuk questionaires you will see that they have been implemented in very different ways, and as a result look fairly different, but essentially do the same thing. In fact I found that within the same company, you had multiple approaches, and completely different technology stacks to achieve the same thing. I spent months writing Daone of these sites,
37
40
 
38
41
  Designing something from scratch is expensive and time consuming. This is where GDS have added real value. They have provided a set of ruby gems to trivialise the production of
39
42
  govuk sites. One thing they are lacking however is a gem to trivialize the creation of complex questionaires. And this is why government organisations are seemingly reinventing
@@ -49,6 +52,7 @@ If your govuk site requires any kind of questionaire, doop is the answer.
49
52
  * Ability to Change answer
50
53
  * Summarize answers
51
54
  * Broswer backbutton integration
55
+ * File upload capability
52
56
  * Stateless
53
57
  * Fast
54
58
  * Ajax call backs
@@ -157,20 +161,131 @@ on_answer "/page/preamble/enrolled_before" do |question,path, params, answer|
157
161
  end
158
162
  ```
159
163
 
160
-
161
164
  # Notes
162
165
 
163
- ## Performance
166
+ ## Javascript
167
+
168
+ Doop feels fast, because ajax is used to handle button presses. Only the question pannel section is ever redrawn, and thats
169
+ once the server side processing has completed. Things to note:
170
+
171
+ * The navigation links at the top, result in a hidden button being pressed
172
+ * The browser back button, results in a hidden button being pressed.
173
+
174
+ ### Back button
175
+
176
+ Doop hijacks the the browser back button. Pressing it will open the previous pages questions. This is done
177
+ with the following [coffeescript](https://github.com/coder36/doop/blob/master/lib/generators/doopgovuk/templates/app/assets/javascripts/demo.js.coffee) code:
178
+
179
+ $( () ->
180
+ history.pushState("back", null, null);
181
+ if typeof history.pushState == "function"
182
+ history.pushState("back", null, null);
183
+ window.onpopstate = (evt) ->
184
+ history.pushState('back', null, null);
185
+ $( "#back_a_page" ).val( "pressed" )
186
+ $( "#back_a_page" ).click()
187
+ )
188
+
189
+ ### No javascript support ?
190
+
191
+ Doop will work fine with java script disabled. It still feels fast. Take note of the following:
192
+
193
+ * The entire page will be re-rendered when ever a button is pressed.
194
+ * A `back` navigation button will appear at the bottom. Normally javascript within [app/views/doop/_question_form.html.erb](https://github.com/coder36/doop/blob/master/lib/generators/doopgovuk/templates/app/views/doop/_question_form.html.erb) would set this to `$("#back_a_page").css( "display", "none" )`
195
+ * The top navigation links will not work, but the website is perfectly usable and still feels fast.
196
+
197
+
198
+
199
+ ## Analytics
200
+
201
+ Analytics is provided by [google anaytics](http://www.google.com/analytics/). When you use the generator, a file named `app/assets/javascript/demo/anayltics.js.erb` will be created. This contains the javascript code to integrate with google analytics. Out of the box, the following events will be recorded:
202
+
203
+
204
+ | Event | Category | Action | Label
205
+ |:--------------------------------|:------------|:----------|:--------
206
+ |Backbutton clicked | button | click | back-button
207
+ |Navigation link clicked | page | changed | page_id
208
+ |Question answered | question | answered | question_id
209
+ |Question re-opened | question | reopened | question_id
210
+
211
+ To get this working for your project, you will need to update [anayltics.js.erb](https://github.com/coder36/doop/blob/master/lib/generators/doopgovuk/templates/app/assets/javascripts/demo/analytics.js.erb) with your google Universal Analytics id.
212
+
213
+ Typically, jquery is used to dynamically bind the the 'GA send' code to the forms buttons. eg.
214
+
215
+ $("[id$=-change]").click( function() {
216
+ id = $(this).attr('id')
217
+ ga( 'send', 'event', 'question', 'reopened', id.replace( '-change', '' ) )
218
+ })
219
+
220
+
221
+ # Testing
222
+
223
+ The generated doopgovuk project, will give you a set of rspec tests, which use capybara, to click buttons, set
224
+ fields etc through a scenario. These scenarios will form the acceptance tests. These should be included
225
+ as part of a CI pipeline, on the road to production.
226
+
227
+ ## Headless web driver
228
+
229
+ When using TDD, you need to get into a tight feedback loop. Your tests need to be quick and this means compromises.
230
+ The compromise doop makes, is to use the `:webkit` headless driver. This is blisteringly fast, but the downside
231
+ is that you can't see what its doing. The webkit headless driver relies on a framebuffer, so to get it working,
232
+ you'll need to install some libraries:
233
+
234
+ sudo apt-get install qt4-dev-tools libqt4-dev libqt4-core libqt4-gui xvfb
235
+
236
+ The driver is defined in [spec/rails_helper.rb](https://github.com/coder36/doop/blob/master/lib/generators/doopgovuk/templates/spec/rails_helper.rb)
237
+
238
+
239
+ ## DSL
240
+
241
+ Doop provides an [inituitive DSL](https://github.com/coder36/doop/blob/master/lib/generators/doopgovuk/templates/spec/features/demo_spec.rb) for writing acceptance tests. Try to limit the number of scenarios, to keep the test run as quick as possible. Perhaps have an end to end scenario which covers every question and every flow, then have another one which covers the way that 95% people would answer. The test should work with `:js=>false`, but again, the vast majority of people will be using javascript.
242
+
243
+ feature "Child Benefit online form" do
244
+ scenario "Complete Child Benefit form", :js => true do
245
+ before_you_begin
246
+ preamble
247
+ end
248
+
249
+ def before_you_begin
250
+ visit '/demo/index'
251
+ wait_for_page( "before_you_begin" )
252
+ click_button "Start"
253
+ end
254
+ def preamble
255
+ wait_for_page( "preamble" )
256
+
257
+ answer_question( "income_more_than_50000") do
258
+ click_button "No,"
259
+ expect( tooltip ).to be_visible
260
+ end
261
+
262
+ expect( question "do_you_still_want_to_apply" ).to be_disabled
263
+
264
+ change_question( "income_more_than_50000") do
265
+ expect( change_answer_tooltip ).to be_visible
266
+ click_button "Yes,"
267
+ end
268
+ end
269
+ end
270
+
271
+
272
+ ## Testing Gotchas
273
+
274
+ * The :webkit driver seems to hang when using google analytics, so for development and test, google analytics are
275
+ disabled.
276
+
277
+
278
+
279
+ # Performance
164
280
 
165
281
  For the demo, the serialized questionaire is stored as a form parameter. This is a nice approach as a general strategy since its completely stateless and as a result scalable.
166
282
  Its also very fast.
167
283
 
168
- I've worked with a lot of java farmeworks (I'm thinking JSF!) and in comparison I can assure you that the demo application is fast. Doop fully supports jruby, so you may get some
169
- optimisation going down that route. As mentioned earlier its completely stateless, so you can scale by simply firing up more servers.
284
+ I've worked with a lot of java farmeworks (I'm thinking JSF!) and in comparison I can assure you that the demo application is fast. Doop fully supports jruby, so you may get some optimization going down that route. As mentioned earlier its completely stateless, so you can scale by simply firing up more servers.
170
285
 
171
286
  I tested it with passenger and nginx and it was lightening fast. Without any optimisation each request was taking about 20ms.
172
287
 
173
- ## Jruby
288
+ # Jruby
174
289
 
175
290
  The yaml serialization uses encryption, so you will need to tell java to allow unlimted strength cryptography. Create a file config/initializers/unlimited_strength_cryptography
176
291
 
@@ -207,8 +322,7 @@ Don't forget to deal with database drivers. In your Gemfile, you will need to u
207
322
  ## TODO
208
323
 
209
324
  * Refactor - make the code, simpler and read better
210
- * Doop-Rspec - it would be nice to have a DSL to drive answering questions. This could be extended to capybara.
211
- * Responsive - on the whole the govuk frontend is responsive, fonts resize etc. But there is still some work to be done.
325
+ * Language localisation
212
326
 
213
327
 
214
328
  ## Contributing
@@ -1,5 +1,9 @@
1
1
  module DoopHelper
2
2
 
3
+ def file_uploader answer
4
+ render "doop/file_uploader", :answer => answer
5
+ end
6
+
3
7
  def info_box &block
4
8
  render "doop/info_box", :content => block
5
9
  end
@@ -0,0 +1,19 @@
1
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile '~/.gitignore_global'
6
+
7
+ # Ignore bundler config.
8
+ /.bundle
9
+
10
+ # Ignore the default SQLite database.
11
+ /db/*.sqlite3
12
+ /db/*.sqlite3-journal
13
+
14
+ # Ignore all logfiles and tempfiles.
15
+ /log/*.log
16
+ /tmp
17
+ *.swp
18
+ /public/assets
19
+ /public/uploads
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
@@ -0,0 +1,70 @@
1
+ source 'https://rubygems.org'
2
+
3
+
4
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
5
+ gem 'rails', '4.1.6'
6
+ # Use SCSS for stylesheets
7
+ gem 'sass-rails', '~> 4.0.3'
8
+ # Use Uglifier as compressor for JavaScript assets
9
+ gem 'uglifier', '>= 1.3.0'
10
+ # Use CoffeeScript for .js.coffee assets and views
11
+ gem 'coffee-rails', '~> 4.0.0'
12
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
13
+ # gem 'therubyracer', platforms: :ruby
14
+
15
+ # Use jquery as the JavaScript library
16
+ gem 'jquery-rails'
17
+ # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
18
+ gem 'turbolinks'
19
+ # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
20
+ gem 'jbuilder', '~> 2.0'
21
+ # bundle exec rake doc:rails generates the API under doc/api.
22
+ gem 'sdoc', '~> 0.4.0', group: :doc
23
+
24
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
25
+ gem 'spring', group: :development
26
+
27
+ # Use ActiveModel has_secure_password
28
+ # gem 'bcrypt', '~> 3.1.7'
29
+
30
+ # Use unicorn as the app server
31
+ # gem 'unicorn'
32
+
33
+ # Use Capistrano for deployment
34
+ # gem 'capistrano-rails', group: :development
35
+
36
+ # Use debugger
37
+ # gem 'debugger', group: [:development, :test]
38
+ #gem 'doop', :git => "git://github.com/coder36/doop.git"
39
+
40
+ gem "govuk_frontend_toolkit", "~> 1.6"
41
+ gem "govuk_template", "~> 0.9"
42
+ gem "jquery-ui-rails", "~> 5.0"
43
+ gem "blueimp-gallery", "~> 2.11.0"
44
+ gem "jquery-fileupload-rails", "~> 0.4"
45
+
46
+
47
+ group :production do
48
+ gem 'rails_12factor', "~> 0.0"
49
+ gem 'pg', "~> 0.17"
50
+ end
51
+
52
+ group :development do
53
+ gem 'sqlite3', "~> 1.3"
54
+ gem 'rspec-rails', "~> 3.1"
55
+ gem 'guard-rspec', "~> 4.3"
56
+ gem 'capybara', "~> 2.4"
57
+ gem 'pry', "~> 0.10"
58
+ gem 'pry-nav', "~> 0.2"
59
+ gem 'capybara-webkit', "~> 1.3"
60
+ gem 'headless', "~> 1.0"
61
+ gem 'capybara-screenshot', "~> 1.0"
62
+ end
63
+
64
+ if File.exists?( "heroku")
65
+ gem 'doop', :git => "git://github.com/coder36/doop.git"
66
+ elsif File.exists?( "../../doop" )
67
+ gem 'doop', :path => "../"
68
+ else
69
+ gem 'doop'
70
+ end
@@ -0,0 +1,237 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ doop (0.0.5)
5
+ rails (>= 4.1)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actionmailer (4.1.6)
11
+ actionpack (= 4.1.6)
12
+ actionview (= 4.1.6)
13
+ mail (~> 2.5, >= 2.5.4)
14
+ actionpack (4.1.6)
15
+ actionview (= 4.1.6)
16
+ activesupport (= 4.1.6)
17
+ rack (~> 1.5.2)
18
+ rack-test (~> 0.6.2)
19
+ actionview (4.1.6)
20
+ activesupport (= 4.1.6)
21
+ builder (~> 3.1)
22
+ erubis (~> 2.7.0)
23
+ activemodel (4.1.6)
24
+ activesupport (= 4.1.6)
25
+ builder (~> 3.1)
26
+ activerecord (4.1.6)
27
+ activemodel (= 4.1.6)
28
+ activesupport (= 4.1.6)
29
+ arel (~> 5.0.0)
30
+ activesupport (4.1.6)
31
+ i18n (~> 0.6, >= 0.6.9)
32
+ json (~> 1.7, >= 1.7.7)
33
+ minitest (~> 5.1)
34
+ thread_safe (~> 0.1)
35
+ tzinfo (~> 1.1)
36
+ addressable (2.3.6)
37
+ arel (5.0.1.20140414130214)
38
+ blueimp-gallery (2.11.0.1)
39
+ railties (>= 3.1.0)
40
+ builder (3.2.2)
41
+ capybara (2.4.4)
42
+ mime-types (>= 1.16)
43
+ nokogiri (>= 1.3.3)
44
+ rack (>= 1.0.0)
45
+ rack-test (>= 0.5.4)
46
+ xpath (~> 2.0)
47
+ capybara-screenshot (1.0.3)
48
+ capybara (>= 1.0, < 3)
49
+ colored
50
+ launchy
51
+ capybara-webkit (1.3.1)
52
+ capybara (>= 2.0.2, < 2.5.0)
53
+ json
54
+ celluloid (0.16.0)
55
+ timers (~> 4.0.0)
56
+ coderay (1.1.0)
57
+ coffee-rails (4.0.1)
58
+ coffee-script (>= 2.2.0)
59
+ railties (>= 4.0.0, < 5.0)
60
+ coffee-script (2.3.0)
61
+ coffee-script-source
62
+ execjs
63
+ coffee-script-source (1.8.0)
64
+ colored (1.2)
65
+ diff-lcs (1.2.5)
66
+ erubis (2.7.0)
67
+ execjs (2.2.2)
68
+ ffi (1.9.6)
69
+ formatador (0.2.5)
70
+ govuk_frontend_toolkit (1.6.2)
71
+ rails (>= 3.1.0)
72
+ sass (>= 3.2.0)
73
+ govuk_template (0.9.1)
74
+ rails (>= 3.1)
75
+ guard (2.7.0)
76
+ formatador (>= 0.2.4)
77
+ listen (~> 2.7)
78
+ lumberjack (~> 1.0)
79
+ pry (>= 0.9.12)
80
+ thor (>= 0.18.1)
81
+ guard-rspec (4.3.1)
82
+ guard (~> 2.1)
83
+ rspec (>= 2.14, < 4.0)
84
+ headless (1.0.2)
85
+ hike (1.2.3)
86
+ hitimes (1.2.2)
87
+ i18n (0.6.11)
88
+ jbuilder (2.2.2)
89
+ activesupport (>= 3.0.0, < 5)
90
+ multi_json (~> 1.2)
91
+ jquery-fileupload-rails (0.4.1)
92
+ actionpack (>= 3.1)
93
+ railties (>= 3.1)
94
+ jquery-rails (3.1.2)
95
+ railties (>= 3.0, < 5.0)
96
+ thor (>= 0.14, < 2.0)
97
+ jquery-ui-rails (5.0.2)
98
+ railties (>= 3.2.16)
99
+ json (1.8.1)
100
+ launchy (2.4.2)
101
+ addressable (~> 2.3)
102
+ listen (2.7.11)
103
+ celluloid (>= 0.15.2)
104
+ rb-fsevent (>= 0.9.3)
105
+ rb-inotify (>= 0.9)
106
+ lumberjack (1.0.9)
107
+ mail (2.6.1)
108
+ mime-types (>= 1.16, < 3)
109
+ method_source (0.8.2)
110
+ mime-types (2.4.2)
111
+ mini_portile (0.6.0)
112
+ minitest (5.4.2)
113
+ multi_json (1.10.1)
114
+ nokogiri (1.6.3.1)
115
+ mini_portile (= 0.6.0)
116
+ pg (0.17.1)
117
+ pry (0.10.1)
118
+ coderay (~> 1.1.0)
119
+ method_source (~> 0.8.1)
120
+ slop (~> 3.4)
121
+ pry-nav (0.2.4)
122
+ pry (>= 0.9.10, < 0.11.0)
123
+ rack (1.5.2)
124
+ rack-test (0.6.2)
125
+ rack (>= 1.0)
126
+ rails (4.1.6)
127
+ actionmailer (= 4.1.6)
128
+ actionpack (= 4.1.6)
129
+ actionview (= 4.1.6)
130
+ activemodel (= 4.1.6)
131
+ activerecord (= 4.1.6)
132
+ activesupport (= 4.1.6)
133
+ bundler (>= 1.3.0, < 2.0)
134
+ railties (= 4.1.6)
135
+ sprockets-rails (~> 2.0)
136
+ rails_12factor (0.0.3)
137
+ rails_serve_static_assets
138
+ rails_stdout_logging
139
+ rails_serve_static_assets (0.0.2)
140
+ rails_stdout_logging (0.0.3)
141
+ railties (4.1.6)
142
+ actionpack (= 4.1.6)
143
+ activesupport (= 4.1.6)
144
+ rake (>= 0.8.7)
145
+ thor (>= 0.18.1, < 2.0)
146
+ rake (10.3.2)
147
+ rb-fsevent (0.9.4)
148
+ rb-inotify (0.9.5)
149
+ ffi (>= 0.5.0)
150
+ rdoc (4.1.2)
151
+ json (~> 1.4)
152
+ rspec (3.1.0)
153
+ rspec-core (~> 3.1.0)
154
+ rspec-expectations (~> 3.1.0)
155
+ rspec-mocks (~> 3.1.0)
156
+ rspec-core (3.1.7)
157
+ rspec-support (~> 3.1.0)
158
+ rspec-expectations (3.1.2)
159
+ diff-lcs (>= 1.2.0, < 2.0)
160
+ rspec-support (~> 3.1.0)
161
+ rspec-mocks (3.1.3)
162
+ rspec-support (~> 3.1.0)
163
+ rspec-rails (3.1.0)
164
+ actionpack (>= 3.0)
165
+ activesupport (>= 3.0)
166
+ railties (>= 3.0)
167
+ rspec-core (~> 3.1.0)
168
+ rspec-expectations (~> 3.1.0)
169
+ rspec-mocks (~> 3.1.0)
170
+ rspec-support (~> 3.1.0)
171
+ rspec-support (3.1.2)
172
+ sass (3.2.19)
173
+ sass-rails (4.0.3)
174
+ railties (>= 4.0.0, < 5.0)
175
+ sass (~> 3.2.0)
176
+ sprockets (~> 2.8, <= 2.11.0)
177
+ sprockets-rails (~> 2.0)
178
+ sdoc (0.4.1)
179
+ json (~> 1.7, >= 1.7.7)
180
+ rdoc (~> 4.0)
181
+ slop (3.6.0)
182
+ spring (1.1.3)
183
+ sprockets (2.11.0)
184
+ hike (~> 1.2)
185
+ multi_json (~> 1.0)
186
+ rack (~> 1.0)
187
+ tilt (~> 1.1, != 1.3.0)
188
+ sprockets-rails (2.2.0)
189
+ actionpack (>= 3.0)
190
+ activesupport (>= 3.0)
191
+ sprockets (>= 2.8, < 4.0)
192
+ sqlite3 (1.3.9)
193
+ thor (0.19.1)
194
+ thread_safe (0.3.4)
195
+ tilt (1.4.1)
196
+ timers (4.0.1)
197
+ hitimes
198
+ turbolinks (2.4.0)
199
+ coffee-rails
200
+ tzinfo (1.2.2)
201
+ thread_safe (~> 0.1)
202
+ uglifier (2.5.3)
203
+ execjs (>= 0.3.0)
204
+ json (>= 1.8.0)
205
+ xpath (2.0.0)
206
+ nokogiri (~> 1.3)
207
+
208
+ PLATFORMS
209
+ ruby
210
+
211
+ DEPENDENCIES
212
+ blueimp-gallery (~> 2.11.0)
213
+ capybara (~> 2.4)
214
+ capybara-screenshot (~> 1.0)
215
+ capybara-webkit (~> 1.3)
216
+ coffee-rails (~> 4.0.0)
217
+ doop!
218
+ govuk_frontend_toolkit (~> 1.6)
219
+ govuk_template (~> 0.9)
220
+ guard-rspec (~> 4.3)
221
+ headless (~> 1.0)
222
+ jbuilder (~> 2.0)
223
+ jquery-fileupload-rails (~> 0.4)
224
+ jquery-rails
225
+ jquery-ui-rails (~> 5.0)
226
+ pg (~> 0.17)
227
+ pry (~> 0.10)
228
+ pry-nav (~> 0.2)
229
+ rails (= 4.1.6)
230
+ rails_12factor (~> 0.0)
231
+ rspec-rails (~> 3.1)
232
+ sass-rails (~> 4.0.3)
233
+ sdoc (~> 0.4.0)
234
+ spring
235
+ sqlite3 (~> 1.3)
236
+ turbolinks
237
+ uglifier (>= 1.3.0)