turboboost 0.0.11 → 0.0.12
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Appraisals +17 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +6 -44
- data/README.md +36 -22
- data/Rakefile +2 -0
- data/app/assets/javascripts/turboboost.js.coffee +19 -7
- data/gemfiles/rails_3_2.gemfile +13 -0
- data/gemfiles/rails_3_2.gemfile.lock +135 -0
- data/gemfiles/rails_4_0.gemfile +12 -0
- data/gemfiles/rails_4_0.gemfile.lock +116 -0
- data/gemfiles/rails_4_1.gemfile +12 -0
- data/gemfiles/rails_4_1.gemfile.lock +121 -0
- data/gemfiles/rails_4_2.gemfile +13 -0
- data/gemfiles/rails_4_2.gemfile.lock +150 -0
- data/lib/turboboost.rb +2 -159
- data/lib/turboboost/controller.rb +111 -0
- data/lib/turboboost/form_helper.rb +46 -0
- data/lib/turboboost/version.rb +1 -1
- data/test/controller_test.rb +51 -88
- data/test/controllers/items_controller.rb +23 -0
- data/test/controllers/posts_controller.rb +27 -0
- data/test/controllers/users_controller.rb +32 -0
- data/test/locales/en.yml +4 -0
- data/test/test_helper.rb +27 -15
- data/test/view_test.rb +9 -11
- data/test/views/items/show.html.erb +1 -0
- metadata +24 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 342cf6bee532936cb72f690d7687fc636653d85f
|
4
|
+
data.tar.gz: 65b2adc80aa8836788c46ed5726d07e3c201cca9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ee7efb5e37ca4d706fbaea72ec214e1f14b4fe2df6c924ba97802947f7268f72e0090920236833f0324c6d53acc5e68d51f1de7e4e4bb03c2e1761895b4ce8e
|
7
|
+
data.tar.gz: 79e898afea4fc256f11815661f0635a6eb37d02adcd0f971c3d5601429eaa3b565aa2774e9b78983409d454e0c5fa8d6fdc16ddf38aa7099e79e6ec503394302
|
data/.gitignore
CHANGED
data/Appraisals
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
appraise 'rails-3-2' do
|
2
|
+
gem 'rails', '~> 3.2.21'
|
3
|
+
gem 'strong_parameters'
|
4
|
+
end
|
5
|
+
|
6
|
+
appraise 'rails-4-0' do
|
7
|
+
gem 'rails', '~> 4.0.13'
|
8
|
+
end
|
9
|
+
|
10
|
+
appraise 'rails-4-1' do
|
11
|
+
gem 'rails', '~> 4.1.9'
|
12
|
+
end
|
13
|
+
|
14
|
+
appraise 'rails-4-2' do
|
15
|
+
gem 'rails', '~> 4.2.0'
|
16
|
+
gem 'responders', '~> 2.0'
|
17
|
+
end
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
turboboost (0.0.
|
4
|
+
turboboost (0.0.11)
|
5
5
|
coffee-rails
|
6
6
|
jquery-rails
|
7
7
|
railties
|
@@ -10,10 +10,6 @@ PATH
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
12
12
|
specs:
|
13
|
-
actionmailer (4.1.0)
|
14
|
-
actionpack (= 4.1.0)
|
15
|
-
actionview (= 4.1.0)
|
16
|
-
mail (~> 2.5.4)
|
17
13
|
actionpack (4.1.0)
|
18
14
|
actionview (= 4.1.0)
|
19
15
|
activesupport (= 4.1.0)
|
@@ -23,13 +19,6 @@ GEM
|
|
23
19
|
activesupport (= 4.1.0)
|
24
20
|
builder (~> 3.1)
|
25
21
|
erubis (~> 2.7.0)
|
26
|
-
activemodel (4.1.0)
|
27
|
-
activesupport (= 4.1.0)
|
28
|
-
builder (~> 3.1)
|
29
|
-
activerecord (4.1.0)
|
30
|
-
activemodel (= 4.1.0)
|
31
|
-
activesupport (= 4.1.0)
|
32
|
-
arel (~> 5.0.0)
|
33
22
|
activesupport (4.1.0)
|
34
23
|
i18n (~> 0.6, >= 0.6.9)
|
35
24
|
json (~> 1.7, >= 1.7.7)
|
@@ -37,7 +26,10 @@ GEM
|
|
37
26
|
thread_safe (~> 0.1)
|
38
27
|
tzinfo (~> 1.1)
|
39
28
|
ansi (1.4.3)
|
40
|
-
|
29
|
+
appraisal (1.0.2)
|
30
|
+
bundler
|
31
|
+
rake
|
32
|
+
thor (>= 0.14.0)
|
41
33
|
awesome_print (1.2.0)
|
42
34
|
builder (3.2.2)
|
43
35
|
coffee-rails (4.1.0)
|
@@ -49,57 +41,27 @@ GEM
|
|
49
41
|
coffee-script-source (1.8.0)
|
50
42
|
erubis (2.7.0)
|
51
43
|
execjs (2.2.2)
|
52
|
-
hike (1.2.3)
|
53
44
|
i18n (0.6.9)
|
54
45
|
jquery-rails (3.1.2)
|
55
46
|
railties (>= 3.0, < 5.0)
|
56
47
|
thor (>= 0.14, < 2.0)
|
57
48
|
json (1.8.1)
|
58
|
-
mail (2.5.4)
|
59
|
-
mime-types (~> 1.16)
|
60
|
-
treetop (~> 1.4.8)
|
61
49
|
metaclass (0.0.1)
|
62
|
-
mime-types (1.25.1)
|
63
50
|
minitest (5.3.3)
|
64
51
|
mocha (0.14.0)
|
65
52
|
metaclass (~> 0.0.1)
|
66
|
-
multi_json (1.9.2)
|
67
|
-
polyglot (0.3.4)
|
68
53
|
rack (1.5.2)
|
69
54
|
rack-test (0.6.2)
|
70
55
|
rack (>= 1.0)
|
71
|
-
rails (4.1.0)
|
72
|
-
actionmailer (= 4.1.0)
|
73
|
-
actionpack (= 4.1.0)
|
74
|
-
actionview (= 4.1.0)
|
75
|
-
activemodel (= 4.1.0)
|
76
|
-
activerecord (= 4.1.0)
|
77
|
-
activesupport (= 4.1.0)
|
78
|
-
bundler (>= 1.3.0, < 2.0)
|
79
|
-
railties (= 4.1.0)
|
80
|
-
sprockets-rails (~> 2.0)
|
81
56
|
railties (4.1.0)
|
82
57
|
actionpack (= 4.1.0)
|
83
58
|
activesupport (= 4.1.0)
|
84
59
|
rake (>= 0.8.7)
|
85
60
|
thor (>= 0.18.1, < 2.0)
|
86
61
|
rake (0.9.6)
|
87
|
-
sprockets (2.12.1)
|
88
|
-
hike (~> 1.2)
|
89
|
-
multi_json (~> 1.0)
|
90
|
-
rack (~> 1.0)
|
91
|
-
tilt (~> 1.1, != 1.3.0)
|
92
|
-
sprockets-rails (2.1.3)
|
93
|
-
actionpack (>= 3.0)
|
94
|
-
activesupport (>= 3.0)
|
95
|
-
sprockets (~> 2.8)
|
96
62
|
sqlite3 (1.3.10)
|
97
63
|
thor (0.19.1)
|
98
64
|
thread_safe (0.3.3)
|
99
|
-
tilt (1.4.1)
|
100
|
-
treetop (1.4.15)
|
101
|
-
polyglot
|
102
|
-
polyglot (>= 0.3.1)
|
103
65
|
turbolinks (2.5.2)
|
104
66
|
coffee-rails
|
105
67
|
turn (0.9.6)
|
@@ -111,10 +73,10 @@ PLATFORMS
|
|
111
73
|
ruby
|
112
74
|
|
113
75
|
DEPENDENCIES
|
76
|
+
appraisal
|
114
77
|
awesome_print
|
115
78
|
bundler (~> 1.3)
|
116
79
|
mocha
|
117
|
-
rails (>= 3.2, < 5)
|
118
80
|
rake (~> 0)
|
119
81
|
sqlite3
|
120
82
|
turboboost!
|
data/README.md
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
## Turboboost
|
1
|
+
## Turboboost ##
|
2
2
|
|
3
|
-
Turboboost extends the power of Turbolinks into the forms of your Rails app and provides additional convenient AJAX handlers for forms and links. It aims to be a seemless and logical addition to any Turbolinks-rocking Rails 3.2
|
3
|
+
Turboboost extends the power of Turbolinks into the forms of your Rails app and provides additional convenient AJAX handlers for forms and links. It aims to be a seemless and logical addition to any Turbolinks-rocking Rails 3.2/4+ app. Currently it depends on jQuery. The main features are:
|
4
4
|
|
5
5
|
* Form response redirection is handled by Turbolinks.
|
6
6
|
* Customizable success and error handling through registered JavaScript, with support for Rails' Flash and optional error rendering built-in.
|
7
7
|
* Responses can also be rendered within a scoped DOM target using jQuery selectors.
|
8
8
|
|
9
|
-
### Installation
|
9
|
+
### Installation ###
|
10
10
|
|
11
11
|
In your `Gemfile`:
|
12
12
|
|
13
13
|
``` ruby
|
14
|
-
gem
|
14
|
+
gem 'turboboost'
|
15
15
|
```
|
16
16
|
|
17
17
|
In your `application.js`:
|
@@ -29,10 +29,10 @@ Then in your view files, add `turboboost: true` to your form helpers:
|
|
29
29
|
or add the data attribute manually:
|
30
30
|
|
31
31
|
```
|
32
|
-
<form data-turboboost> ...
|
32
|
+
<form data-remote data-turboboost> ...
|
33
33
|
```
|
34
34
|
|
35
|
-
### Redirection with Turbolinks
|
35
|
+
### Redirection with Turbolinks ###
|
36
36
|
|
37
37
|
In its simplest server-side implementation, a basic Turboboost controller action with redirection might look like this:
|
38
38
|
|
@@ -43,11 +43,21 @@ def create
|
|
43
43
|
end
|
44
44
|
```
|
45
45
|
|
46
|
-
If the post is successfully created through a Turboboost-ed form, the app will visit the post's URL with Turbolinks. Otherwise, the redirect will happen like normal.
|
46
|
+
If the post is successfully created through a Turboboost-ed form, the app will visit the post's URL with Turbolinks. Otherwise, the redirect will happen like normal. You can opt out of redirecting through Turboboost with the attribute flag `data-no-turboboost-redirect`.
|
47
47
|
|
48
|
-
|
48
|
+
### Form GET requests ###
|
49
49
|
|
50
|
-
|
50
|
+
If a Turboboost form makes a GET request, it will serialize the form's data and then visit its action URL with the data serialized as parameters with Turbolinks. This allows Turbolinks-powered cached push/popState history navigation of controller actions with different parameter values (like a search form).
|
51
|
+
|
52
|
+
### Automatic form disabling handling ###
|
53
|
+
|
54
|
+
To prevent double-clicks on submit buttons from firing the form's action twice, Turboboost comes with automatic form disabling/enabling by default. When you restore a page from Turbolinks' cache, it will re-enable any submit buttons that it had disabled. You can disable this behavior and control your form's submittable state manually with:
|
55
|
+
|
56
|
+
``` coffeescript
|
57
|
+
Turboboost.handleFormDisabling = false
|
58
|
+
```
|
59
|
+
|
60
|
+
### Error handling ###
|
51
61
|
|
52
62
|
If the post in our example above is invalid, no redirect will happen and a `rescue_from` handler will pass the errors to JavaScript through the `turboboost:error` event:
|
53
63
|
|
@@ -73,7 +83,9 @@ def create
|
|
73
83
|
end
|
74
84
|
```
|
75
85
|
|
76
|
-
|
86
|
+
Check out the [test controllers](https://github.com/waymondo/turboboost/tree/master/test/controllers) for more examples of controller syntax.
|
87
|
+
|
88
|
+
#### Automatic error message insertion ####
|
77
89
|
|
78
90
|
Optionally, Turboboost can render returned errors with the same HTML structure used in the default Rails generators and prepend it to the form. The HTML structure looks like this:
|
79
91
|
|
@@ -90,18 +102,18 @@ Optionally, Turboboost can render returned errors with the same HTML structure u
|
|
90
102
|
To turn it on:
|
91
103
|
|
92
104
|
``` coffeescript
|
93
|
-
Turboboost.insertErrors = true
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
Turboboost.insertErrors = '.error-wrap'
|
105
|
+
Turboboost.insertErrors = true # same as 'prepend'
|
106
|
+
# other possible values:
|
107
|
+
# Turboboost.insertErrors = 'append'
|
108
|
+
# Turboboost.insertErrors = 'beforeSubmit'
|
109
|
+
# Turboboost.insertErrors = 'afterSubmit'
|
110
|
+
# can also be a jQuery selector:
|
111
|
+
# Turboboost.insertErrors = '.error-wrap'
|
100
112
|
```
|
101
113
|
|
102
|
-
#### Error internationalization
|
114
|
+
#### Error internationalization ####
|
103
115
|
|
104
|
-
|
116
|
+
Turboboost will handle invalid `ActiveRecord` and `ActiveModel` error messages as well as basic HTTP error messages. For ActiveRecord validations, it will use [Rails' I18n lookup](http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models) to retrieve the message wording. For other raised exceptions, you can customize the basic wording using the I18n namespace format `turboboost.errors.#{error.class.name}`:
|
105
117
|
|
106
118
|
``` yaml
|
107
119
|
en:
|
@@ -110,16 +122,16 @@ en:
|
|
110
122
|
"ActiveRecord::RecordNotFound": "Shoot, didn't find anything."
|
111
123
|
```
|
112
124
|
|
113
|
-
### Ajax flash message handling
|
125
|
+
### Ajax flash message handling ###
|
114
126
|
|
115
|
-
There is also a `turboboost:success` event that is triggered and passed
|
127
|
+
There is also a `turboboost:success` event that is triggered and passed all current flash messages if they are present:
|
116
128
|
|
117
129
|
``` coffeescript
|
118
130
|
$(document).on "turboboost:success", (e, flash) ->
|
119
131
|
console.log(flash) # -> {'notice': 'Post was successfully created.'}
|
120
132
|
```
|
121
133
|
|
122
|
-
### Scoped response rendering
|
134
|
+
### Scoped response rendering ###
|
123
135
|
|
124
136
|
Turboboost also provides some options for rendering AJAX responses at specific locations in the DOM:
|
125
137
|
|
@@ -129,6 +141,8 @@ Turboboost also provides some options for rendering AJAX responses at specific l
|
|
129
141
|
|`:replace` |`replaceWith()` |
|
130
142
|
|`:prepend` |`prepend()` |
|
131
143
|
|`:append` |`append()` |
|
144
|
+
|`:before` |`before()` |
|
145
|
+
|`:after` |`after()` |
|
132
146
|
|
133
147
|
The value can be any jQuery selector. Example usage:
|
134
148
|
|
data/Rakefile
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
@Turboboost =
|
6
6
|
insertErrors: false
|
7
|
+
handleFormDisabling: true
|
7
8
|
defaultError: "Sorry, there was an error."
|
8
9
|
|
9
10
|
turboboostable = "[data-turboboost]"
|
@@ -12,10 +13,10 @@ errTemplate = (errors) ->
|
|
12
13
|
"<ul><li>#{$.makeArray(errors).join('</li><li>')}</li></ul>"
|
13
14
|
|
14
15
|
enableForm = ($form) ->
|
15
|
-
$form.find("[type='submit']").removeAttr('disabled')
|
16
|
+
$form.find("[type='submit']").removeAttr('disabled').data('turboboostDisabled', false)
|
16
17
|
|
17
18
|
disableForm = ($form) ->
|
18
|
-
$form.find("[type='submit']").attr('disabled', 'disabled')
|
19
|
+
$form.find("[type='submit']").attr('disabled', 'disabled').data('turboboostDisabled', true)
|
19
20
|
|
20
21
|
tryJSONParse = (str) ->
|
21
22
|
try
|
@@ -53,11 +54,11 @@ turboboostComplete = (e, resp) ->
|
|
53
54
|
if (location = resp.getResponseHeader('Location')) and !$el.attr('data-no-turboboost-redirect')
|
54
55
|
Turbolinks.visit(location)
|
55
56
|
else
|
56
|
-
enableForm $el if isForm
|
57
|
+
enableForm $el if isForm and Turboboost.handleFormDisabling
|
57
58
|
maybeInsertSuccessResponseBody(resp)
|
58
59
|
|
59
60
|
if resp.status in [400..599]
|
60
|
-
enableForm $el if isForm
|
61
|
+
enableForm $el if isForm and Turboboost.handleFormDisabling
|
61
62
|
$el.trigger "turboboost:error", resp.responseText
|
62
63
|
|
63
64
|
$el.trigger "turboboost:complete"
|
@@ -66,9 +67,10 @@ turboboostBeforeSend = (e, xhr, settings) ->
|
|
66
67
|
xhr.setRequestHeader('X-Turboboost', '1')
|
67
68
|
isForm = @nodeName is "FORM"
|
68
69
|
return e.stopPropagation() unless isForm
|
69
|
-
|
70
|
-
if
|
71
|
-
|
70
|
+
$el = $(@)
|
71
|
+
disableForm $el if Turboboost.handleFormDisabling
|
72
|
+
if settings.type is "GET" and !$el.attr('data-no-turboboost-redirect')
|
73
|
+
Turbolinks.visit [@action, $el.serialize()].join("?")
|
72
74
|
return false
|
73
75
|
|
74
76
|
maybeInsertSuccessResponseBody = (resp) ->
|
@@ -80,8 +82,18 @@ maybeInsertSuccessResponseBody = (resp) ->
|
|
80
82
|
$(scope).append(resp.responseText)
|
81
83
|
else if (scope = resp.getResponseHeader('X-Prepend'))
|
82
84
|
$(scope).prepend(resp.responseText)
|
85
|
+
else if (scope = resp.getResponseHeader('X-Before'))
|
86
|
+
$(scope).before(resp.responseText)
|
87
|
+
else if (scope = resp.getResponseHeader('X-After'))
|
88
|
+
$(scope).after(resp.responseText)
|
89
|
+
|
90
|
+
maybeReenableForms = ->
|
91
|
+
return unless Turboboost.handleFormDisabling
|
92
|
+
$("form#{turboboostable} input[type='submit']").each ->
|
93
|
+
enableForm $(@).closest('form') if $(@).data('turboboostDisabled')
|
83
94
|
|
84
95
|
$(document)
|
85
96
|
.on("ajax:beforeSend", turboboostable, turboboostBeforeSend)
|
86
97
|
.on("ajax:complete", turboboostable, turboboostComplete)
|
87
98
|
.on("turboboost:error", "form#{turboboostable}", turboboostFormError)
|
99
|
+
.on("page:restore", maybeReenableForms)
|
@@ -0,0 +1,135 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ../
|
3
|
+
specs:
|
4
|
+
turboboost (0.0.11)
|
5
|
+
coffee-rails
|
6
|
+
jquery-rails
|
7
|
+
railties
|
8
|
+
turbolinks
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
actionmailer (3.2.21)
|
14
|
+
actionpack (= 3.2.21)
|
15
|
+
mail (~> 2.5.4)
|
16
|
+
actionpack (3.2.21)
|
17
|
+
activemodel (= 3.2.21)
|
18
|
+
activesupport (= 3.2.21)
|
19
|
+
builder (~> 3.0.0)
|
20
|
+
erubis (~> 2.7.0)
|
21
|
+
journey (~> 1.0.4)
|
22
|
+
rack (~> 1.4.5)
|
23
|
+
rack-cache (~> 1.2)
|
24
|
+
rack-test (~> 0.6.1)
|
25
|
+
sprockets (~> 2.2.1)
|
26
|
+
activemodel (3.2.21)
|
27
|
+
activesupport (= 3.2.21)
|
28
|
+
builder (~> 3.0.0)
|
29
|
+
activerecord (3.2.21)
|
30
|
+
activemodel (= 3.2.21)
|
31
|
+
activesupport (= 3.2.21)
|
32
|
+
arel (~> 3.0.2)
|
33
|
+
tzinfo (~> 0.3.29)
|
34
|
+
activeresource (3.2.21)
|
35
|
+
activemodel (= 3.2.21)
|
36
|
+
activesupport (= 3.2.21)
|
37
|
+
activesupport (3.2.21)
|
38
|
+
i18n (~> 0.6, >= 0.6.4)
|
39
|
+
multi_json (~> 1.0)
|
40
|
+
ansi (1.5.0)
|
41
|
+
appraisal (1.0.2)
|
42
|
+
bundler
|
43
|
+
rake
|
44
|
+
thor (>= 0.14.0)
|
45
|
+
arel (3.0.3)
|
46
|
+
awesome_print (1.6.1)
|
47
|
+
builder (3.0.4)
|
48
|
+
coffee-rails (3.2.2)
|
49
|
+
coffee-script (>= 2.2.0)
|
50
|
+
railties (~> 3.2.0)
|
51
|
+
coffee-script (2.3.0)
|
52
|
+
coffee-script-source
|
53
|
+
execjs
|
54
|
+
coffee-script-source (1.8.0)
|
55
|
+
erubis (2.7.0)
|
56
|
+
execjs (2.2.2)
|
57
|
+
hike (1.2.3)
|
58
|
+
i18n (0.7.0)
|
59
|
+
journey (1.0.4)
|
60
|
+
jquery-rails (3.1.2)
|
61
|
+
railties (>= 3.0, < 5.0)
|
62
|
+
thor (>= 0.14, < 2.0)
|
63
|
+
json (1.8.2)
|
64
|
+
mail (2.5.4)
|
65
|
+
mime-types (~> 1.16)
|
66
|
+
treetop (~> 1.4.8)
|
67
|
+
metaclass (0.0.4)
|
68
|
+
mime-types (1.25.1)
|
69
|
+
minitest (4.7.5)
|
70
|
+
mocha (1.1.0)
|
71
|
+
metaclass (~> 0.0.1)
|
72
|
+
multi_json (1.10.1)
|
73
|
+
polyglot (0.3.5)
|
74
|
+
rack (1.4.5)
|
75
|
+
rack-cache (1.2)
|
76
|
+
rack (>= 0.4)
|
77
|
+
rack-ssl (1.3.4)
|
78
|
+
rack
|
79
|
+
rack-test (0.6.3)
|
80
|
+
rack (>= 1.0)
|
81
|
+
rails (3.2.21)
|
82
|
+
actionmailer (= 3.2.21)
|
83
|
+
actionpack (= 3.2.21)
|
84
|
+
activerecord (= 3.2.21)
|
85
|
+
activeresource (= 3.2.21)
|
86
|
+
activesupport (= 3.2.21)
|
87
|
+
bundler (~> 1.0)
|
88
|
+
railties (= 3.2.21)
|
89
|
+
railties (3.2.21)
|
90
|
+
actionpack (= 3.2.21)
|
91
|
+
activesupport (= 3.2.21)
|
92
|
+
rack-ssl (~> 1.3.2)
|
93
|
+
rake (>= 0.8.7)
|
94
|
+
rdoc (~> 3.4)
|
95
|
+
thor (>= 0.14.6, < 2.0)
|
96
|
+
rake (0.9.6)
|
97
|
+
rdoc (3.12.2)
|
98
|
+
json (~> 1.4)
|
99
|
+
sprockets (2.2.3)
|
100
|
+
hike (~> 1.2)
|
101
|
+
multi_json (~> 1.0)
|
102
|
+
rack (~> 1.0)
|
103
|
+
tilt (~> 1.1, != 1.3.0)
|
104
|
+
sqlite3 (1.3.10)
|
105
|
+
strong_parameters (0.2.3)
|
106
|
+
actionpack (~> 3.0)
|
107
|
+
activemodel (~> 3.0)
|
108
|
+
activesupport (~> 3.0)
|
109
|
+
railties (~> 3.0)
|
110
|
+
thor (0.19.1)
|
111
|
+
tilt (1.4.1)
|
112
|
+
treetop (1.4.15)
|
113
|
+
polyglot
|
114
|
+
polyglot (>= 0.3.1)
|
115
|
+
turbolinks (2.5.3)
|
116
|
+
coffee-rails
|
117
|
+
turn (0.9.7)
|
118
|
+
ansi
|
119
|
+
minitest (~> 4)
|
120
|
+
tzinfo (0.3.42)
|
121
|
+
|
122
|
+
PLATFORMS
|
123
|
+
ruby
|
124
|
+
|
125
|
+
DEPENDENCIES
|
126
|
+
appraisal
|
127
|
+
awesome_print
|
128
|
+
bundler (~> 1.3)
|
129
|
+
mocha
|
130
|
+
rails (~> 3.2.21)
|
131
|
+
rake (~> 0)
|
132
|
+
sqlite3
|
133
|
+
strong_parameters
|
134
|
+
turboboost!
|
135
|
+
turn
|