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.
- checksums.yaml +8 -8
- data/README.md +126 -12
- data/app/helpers/doop_helper.rb +4 -0
- data/demo/.gitignore +19 -0
- data/demo/.rspec +2 -0
- data/demo/Gemfile +70 -0
- data/demo/Gemfile.lock +237 -0
- data/demo/README.md +50 -0
- data/demo/Rakefile +6 -0
- data/demo/app/assets/images/.keep +0 -0
- data/demo/app/assets/images/cert_sample.jpg +0 -0
- data/demo/app/assets/javascripts/application.js +16 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/assets/javascripts/demo.js.coffee +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/assets/javascripts/demo/analytics.js.erb +0 -0
- data/demo/app/assets/javascripts/demo/application.js +8 -0
- data/demo/app/assets/stylesheets/application.css +15 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/assets/stylesheets/demo.css.scss +39 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/assets/stylesheets/demo/application.css +1 -0
- data/demo/app/controllers/application_controller.rb +5 -0
- data/demo/app/controllers/concerns/.keep +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/controllers/demo_controller.rb +84 -53
- data/demo/app/helpers/application_helper.rb +2 -0
- data/demo/app/helpers/demo_helper.rb +2 -0
- data/demo/app/mailers/.keep +0 -0
- data/demo/app/models/.keep +0 -0
- data/demo/app/models/concerns/.keep +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_about_you.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_before_you_begin.html.erb +3 -3
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_children.html.erb +8 -6
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_declaration.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_preamble.html.erb +10 -0
- data/demo/app/views/demo/harness.html.erb +6 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/index.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/index.js.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_change_answer_tooltip.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_debug.html.erb +1 -1
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_error.html.erb +0 -0
- data/demo/app/views/doop/_file_uploader.html.erb +58 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_info_box.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_navbar.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_question.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_question_form.html.erb +1 -1
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_textfield.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_tooltip.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/layouts/application.html.erb +0 -0
- data/demo/bin/bundle +3 -0
- data/demo/bin/rails +8 -0
- data/demo/bin/rake +8 -0
- data/demo/bin/rspec +16 -0
- data/demo/bin/spring +18 -0
- data/demo/config.ru +4 -0
- data/demo/config/application.rb +23 -0
- data/demo/config/boot.rb +4 -0
- data/demo/config/database.yml +26 -0
- data/demo/config/environment.rb +5 -0
- data/demo/config/environments/development.rb +37 -0
- data/demo/config/environments/production.rb +78 -0
- data/demo/config/environments/test.rb +39 -0
- data/demo/config/initializers/assets.rb +8 -0
- data/demo/config/initializers/backtrace_silencers.rb +7 -0
- data/demo/config/initializers/cookies_serializer.rb +3 -0
- data/demo/config/initializers/filter_parameter_logging.rb +4 -0
- data/demo/config/initializers/inflections.rb +16 -0
- data/demo/config/initializers/mime_types.rb +4 -0
- data/demo/config/initializers/session_store.rb +3 -0
- data/demo/config/initializers/wrap_parameters.rb +14 -0
- data/demo/config/locales/en.yml +23 -0
- data/demo/config/routes.rb +63 -0
- data/demo/config/secrets.yml +22 -0
- data/demo/db/seeds.rb +7 -0
- data/demo/lib/assets/.keep +0 -0
- data/demo/lib/tasks/.keep +0 -0
- data/demo/log/.keep +0 -0
- data/demo/notes.txt +3 -0
- data/demo/public/404.html +67 -0
- data/demo/public/422.html +67 -0
- data/demo/public/500.html +66 -0
- data/demo/public/favicon.ico +0 -0
- data/demo/public/robots.txt +5 -0
- data/{lib/generators/doopgovuk/templates → demo}/spec/features/demo_spec.rb +24 -5
- data/{lib/generators/doopgovuk/templates → demo}/spec/rails_helper.rb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/spec/spec_helper.rb +0 -0
- data/demo/test/controllers/.keep +0 -0
- data/demo/test/fixtures/.keep +0 -0
- data/demo/test/helpers/.keep +0 -0
- data/demo/test/integration/.keep +0 -0
- data/demo/test/mailers/.keep +0 -0
- data/demo/test/models/.keep +0 -0
- data/demo/test/test_helper.rb +10 -0
- data/demo/vendor/assets/javascripts/.keep +0 -0
- data/demo/vendor/assets/stylesheets/.keep +0 -0
- data/doop.gemspec +1 -17
- data/lib/doop-rspec.rb +4 -0
- data/lib/doop/version.rb +1 -1
- data/lib/doop_controller.rb +19 -24
- data/lib/generators/doopgovuk/doopgovuk_generator.rb +23 -13
- data/lib/generators/doopgovuk/templates/.keep +0 -0
- data/notes/screenshots/doop_1.png +0 -0
- metadata +94 -31
- data/lib/generators/doopgovuk/templates/app/assets/javascripts/demo/application.js +0 -3
- 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
|
-
|
4
|
+
ZTdjNDFlZGI4NDA0YTBmZTY1M2MwMTU2ODdlMmIzYmQ4MzgzYThkNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjMxNmI5MmZhNjM3NDM0ZTNlODlkMDNhZjE0MThmMDQ5MDg3YWVlZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDBjODc4YjYwYTU3NjQ0MjFjMWQzMDU1NmZmNjdkOTZhNGJlNmI4ZWQ1YTIw
|
10
|
+
NTYwYTJmZDVhMDI5MWE4OGZkYTJiMGJiN2E5MmRmYjUxMjJkMDc3NzYxZmEw
|
11
|
+
Y2I0YmQ3OTlhYTE1NDVkNzUzYTM0NWZkM2VjOTAwZDE3YzBhNzc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
##
|
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
|
-
|
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
|
-
*
|
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
|
data/app/helpers/doop_helper.rb
CHANGED
data/demo/.gitignore
ADDED
@@ -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
|
data/demo/.rspec
ADDED
data/demo/Gemfile
ADDED
@@ -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
|
data/demo/Gemfile.lock
ADDED
@@ -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)
|