abstracted 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/abstracted/app.fab_delete.coffee +6 -8
- data/app/assets/javascripts/abstracted/app.resource_form.coffee +21 -33
- data/app/assets/javascripts/abstracted/app.resources_list.coffee +30 -30
- data/app/assets/javascripts/abstracted/app.shared.coffee +22 -18
- data/app/assets/javascripts/abstracted/app.sweetalert.coffee +2 -2
- data/app/assets/javascripts/abstracted/keypress.coffee +1 -1
- data/app/assets/javascripts/init.js.coffee +14 -2
- data/lib/abstracted/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b73dcabdb96ea0290f29b71b1a46515a3657754
|
4
|
+
data.tar.gz: e9c098ac91e56ed4ff7e2f6b440e8dcc89d9cc68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 313f43d9bc4948b6e23e496f4a1dab414bcb823e3f5789285cb1b0bb9cabd920a2a551f3e223251cb2d91a9c45c4e876dd8dbd82849532ffb3b77fcf808d39f5
|
7
|
+
data.tar.gz: 250a29942397a4660686d96d46e0104c78d7938b44ec2db93ce4db14cb681605475c718a26b3681f9f6f68246f5179613d6994bee8a9ef3a1306feb7ad4dca3c
|
@@ -1,9 +1,7 @@
|
|
1
1
|
class App.fabDelete
|
2
|
+
|
2
3
|
constructor: (@el) ->
|
3
4
|
# initialize some stuff
|
4
|
-
@shared = new App.Shared()
|
5
|
-
|
6
|
-
|
7
5
|
|
8
6
|
closeSweetAlert: ($elem=null) =>
|
9
7
|
try
|
@@ -81,7 +79,7 @@ class App.fabDelete
|
|
81
79
|
return
|
82
80
|
|
83
81
|
loader = '<div class="preloader-wrapper medium active"> <div class="spinner-layer spinner-blue-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div>'
|
84
|
-
|
82
|
+
App.shared.setLoader( $(elem).closest('.fixed-action-btn'),loader)
|
85
83
|
oxremote = elem.data('oxremote')
|
86
84
|
if (oxremote=='false' or oxremote==false)
|
87
85
|
switch elem.data('method')
|
@@ -96,16 +94,16 @@ class App.fabDelete
|
|
96
94
|
jqxhr = $.ajax
|
97
95
|
url: elem.data('url') || elem.attr('href')
|
98
96
|
type: elem.data('method') || 'get'
|
99
|
-
data:
|
97
|
+
data: App.shared.dataArgumentOn(elem)
|
100
98
|
dataType: elem.data('type') || 'html'
|
101
99
|
.done (data) =>
|
102
|
-
|
100
|
+
App.shared.releaseLoader()
|
103
101
|
if elem.data('modal')
|
104
102
|
$(elem.data('modal')).html(data).openModal()
|
105
103
|
else
|
106
104
|
$(document.body).append(data)
|
107
105
|
.error (data) =>
|
108
|
-
|
106
|
+
App.shared.releaseLoader()
|
109
107
|
$(document.body).append(data)
|
110
108
|
return false
|
111
109
|
|
@@ -131,7 +129,7 @@ class App.fabDelete
|
|
131
129
|
closeOnConfirm: false,
|
132
130
|
confirmButtonText: "Yes, delete it!",
|
133
131
|
confirmButtonColor: "#ec6c62",
|
134
|
-
(confirmed)
|
132
|
+
(confirmed) =>
|
135
133
|
if !confirmed
|
136
134
|
@closeSweetAlert($elem)
|
137
135
|
else
|
@@ -1,8 +1,6 @@
|
|
1
1
|
class App.ResourceForm
|
2
2
|
constructor: (@el) ->
|
3
3
|
# initialize some stuff
|
4
|
-
inputForm = null
|
5
|
-
|
6
4
|
|
7
5
|
#
|
8
6
|
# make sure fields with values do not have their labels obscuring your view
|
@@ -16,43 +14,33 @@ class App.ResourceForm
|
|
16
14
|
#console.log this
|
17
15
|
|
18
16
|
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
|
22
|
-
#
|
23
|
-
initializeForm: (f) ->
|
24
|
-
@inputForm = f
|
25
|
-
#
|
26
|
-
# Initialize SELECT's
|
27
|
-
#
|
28
|
-
$('select').each () ->
|
29
|
-
# remove span.caret's from previous 'runs' - however that happens
|
30
|
-
$(this).parent().parent().find('span.caret').remove()
|
31
|
-
$(this).material_select()
|
32
|
-
|
33
|
-
#
|
34
|
-
# make labels on fields with content move out of the way
|
35
|
-
#
|
36
|
-
@setLabels('.input-field label')
|
17
|
+
# prepare the form - a data: {form_type: record }
|
18
|
+
# kind of form that is
|
19
|
+
prepare: ->
|
37
20
|
|
38
|
-
|
39
|
-
# Initialize INPUT TYPE='DATE'
|
40
|
-
#
|
41
|
-
# %input.datepicker{ type:"date" }
|
42
|
-
#
|
43
|
-
$('.datepicker').pickadate
|
44
|
-
selectMonths: true, # Creates a dropdown to control month
|
45
|
-
selectYears: 15 # Creates a dropdown of 15 years to control year
|
21
|
+
try
|
46
22
|
|
23
|
+
#
|
24
|
+
# Initialize SELECT's
|
25
|
+
#
|
26
|
+
$('select').each () ->
|
27
|
+
# remove span.caret's from previous 'runs' - however that happens
|
28
|
+
$(this).parent().parent().find('span.caret').remove()
|
29
|
+
$(this).material_select()
|
47
30
|
|
48
|
-
|
31
|
+
#
|
32
|
+
# make labels on fields with content move out of the way
|
33
|
+
#
|
34
|
+
@setLabels('.input-field label')
|
49
35
|
|
50
|
-
try
|
51
36
|
#
|
52
|
-
#
|
37
|
+
# Initialize INPUT TYPE='DATE'
|
38
|
+
#
|
39
|
+
# %input.datepicker{ type:"date" }
|
53
40
|
#
|
54
|
-
$('
|
55
|
-
|
41
|
+
$('.datepicker').pickadate
|
42
|
+
selectMonths: true, # Creates a dropdown to control month
|
43
|
+
selectYears: 15 # Creates a dropdown of 15 years to control year
|
56
44
|
|
57
45
|
catch error
|
58
46
|
alert 'App.ResourceForm did not prepare!'
|
@@ -2,8 +2,8 @@ class App.ResourcesList
|
|
2
2
|
|
3
3
|
constructor: (@el) ->
|
4
4
|
# initialize some stuff
|
5
|
-
@
|
6
|
-
|
5
|
+
@searchForm = @el[0]
|
6
|
+
|
7
7
|
#
|
8
8
|
# printPost handles printing posts either way
|
9
9
|
#
|
@@ -30,12 +30,12 @@ class App.ResourcesList
|
|
30
30
|
# </a>
|
31
31
|
#
|
32
32
|
# data-url="", data-id="", data-print-action="", data-message-ok="", data-message-error=""
|
33
|
-
printPost: (elem)
|
33
|
+
printPost: (elem) =>
|
34
34
|
elem = $(elem)
|
35
35
|
url = elem.data('url') || elem.attr('href')
|
36
36
|
if elem.data('browser')=='new'
|
37
|
-
|
38
|
-
window.open url + '?' + $.param dataArgumentOn(elem)
|
37
|
+
App.shared.releaseLoader()
|
38
|
+
window.open url + '?' + $.param App.shared.dataArgumentOn(elem)
|
39
39
|
return
|
40
40
|
|
41
41
|
oxremote = elem.data('oxremote')
|
@@ -53,19 +53,19 @@ class App.ResourcesList
|
|
53
53
|
jqxhr = $.ajax
|
54
54
|
url: elem.data('url') || elem.attr('href')
|
55
55
|
type: elem.data('method') || 'get'
|
56
|
-
data: dataArgumentOn(elem)
|
56
|
+
data: App.shared.dataArgumentOn(elem)
|
57
57
|
dataType: elem.data('type') || 'html'
|
58
|
-
.done (data)
|
59
|
-
|
58
|
+
.done (data) =>
|
59
|
+
App.shared.releaseLoader()
|
60
60
|
if elem.data('download')
|
61
|
-
|
61
|
+
App.shared.getDownload(jqxhr,data)
|
62
62
|
else
|
63
63
|
$(document.body).append(data)
|
64
64
|
|
65
|
-
.fail (response,status)
|
66
|
-
|
65
|
+
.fail (response,status) =>
|
66
|
+
App.shared.releaseLoader()
|
67
67
|
if jqxhr.state=='rejected'
|
68
|
-
|
68
|
+
App.shared.reportError('Der er ingen forbindelse til serveren - prøv lidt senere!')
|
69
69
|
else
|
70
70
|
$(document.body).append(response.responseText)
|
71
71
|
|
@@ -106,10 +106,10 @@ class App.ResourcesList
|
|
106
106
|
#
|
107
107
|
# searchPost handles ordering search on index actions
|
108
108
|
#
|
109
|
-
orderSearch: (url,query)
|
109
|
+
orderSearch: (url,query) =>
|
110
110
|
loader = '<div class="preloader-wrapper small active"> <div class="spinner-layer spinner-blue-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div>'
|
111
111
|
loaded_element = $('.fixed-action-btn')
|
112
|
-
|
112
|
+
App.shared.setLoader( loaded_element,loader )
|
113
113
|
window.location.href= url + '?q=' + encodeURIComponent(query)
|
114
114
|
|
115
115
|
|
@@ -117,7 +117,7 @@ class App.ResourcesList
|
|
117
117
|
# handleAttachLinks
|
118
118
|
# allows for attaching/detaching resources from their parents - like: /admin/users/2/printers/3/attach.js
|
119
119
|
#
|
120
|
-
handleAttachLinks: (e)
|
120
|
+
handleAttachLinks: (e) =>
|
121
121
|
e.preventDefault()
|
122
122
|
e.stopPropagation()
|
123
123
|
|
@@ -126,10 +126,10 @@ class App.ResourcesList
|
|
126
126
|
url: $elem.attr('href'),
|
127
127
|
type: "get",
|
128
128
|
dataType: 'html'
|
129
|
-
.done (data)
|
129
|
+
.done (data) =>
|
130
130
|
$( $elem[0].parentElement).html(data)
|
131
131
|
|
132
|
-
.error (data)
|
132
|
+
.error (data) =>
|
133
133
|
swal("Oops", "We couldn't connect to the server!", "error")
|
134
134
|
return false
|
135
135
|
|
@@ -137,7 +137,7 @@ class App.ResourcesList
|
|
137
137
|
# handleActivateLinks
|
138
138
|
# allows for activating/deactivating resources - like: /admin/users/2/activate
|
139
139
|
#
|
140
|
-
handleActivateLinks: (e)
|
140
|
+
handleActivateLinks: (e) =>
|
141
141
|
e.preventDefault()
|
142
142
|
e.stopPropagation()
|
143
143
|
|
@@ -146,10 +146,10 @@ class App.ResourcesList
|
|
146
146
|
url: $elem.attr('href'),
|
147
147
|
type: "get",
|
148
148
|
dataType: 'html'
|
149
|
-
.done (data)
|
149
|
+
.done (data) =>
|
150
150
|
$( $elem[0].parentElement).html(data)
|
151
151
|
|
152
|
-
.error (data)
|
152
|
+
.error (data) =>
|
153
153
|
swal("Oops", "We couldn't connect to the server!", "error")
|
154
154
|
return false
|
155
155
|
|
@@ -158,7 +158,7 @@ class App.ResourcesList
|
|
158
158
|
# handlePreferredLinks
|
159
159
|
# allows for activating/deactivating resources - like: /admin/users/2/activate
|
160
160
|
#
|
161
|
-
handlePreferredLinks: (e)
|
161
|
+
handlePreferredLinks: (e) =>
|
162
162
|
e.preventDefault()
|
163
163
|
e.stopPropagation()
|
164
164
|
|
@@ -167,15 +167,15 @@ class App.ResourcesList
|
|
167
167
|
url: $elem.attr('href'),
|
168
168
|
type: "get",
|
169
169
|
dataType: 'html'
|
170
|
-
.done (data)
|
170
|
+
.done (data) =>
|
171
171
|
# here we have to write all the existing preferred ones
|
172
|
-
$.when $('i.preferred').each (k,e)
|
172
|
+
$.when $('i.preferred').each (k,e) =>
|
173
173
|
$e = $(e)
|
174
174
|
$( $e[0].parentElement).html( data.replace /{{id}}/, $e.data('id'))
|
175
175
|
# $( $elem[0].parentElement).html(data)
|
176
176
|
.then $( $elem[0].parentElement).html('<i class="preferred material-icons green-text" data-id="' + $elem.data('id') + '">bookmark</i>')
|
177
177
|
|
178
|
-
.error (data)
|
178
|
+
.error (data) =>
|
179
179
|
swal("Oops", "We couldn't connect to the server!", "error")
|
180
180
|
return false
|
181
181
|
|
@@ -183,14 +183,14 @@ class App.ResourcesList
|
|
183
183
|
# handlePrintLinks
|
184
184
|
# initializes the tags classed with '.print_post_link' to print a post
|
185
185
|
#
|
186
|
-
handlePrintLinks: (e)
|
186
|
+
handlePrintLinks: (e) =>
|
187
187
|
e.preventDefault()
|
188
188
|
e.stopPropagation()
|
189
189
|
|
190
190
|
$elem = $(e.currentTarget)
|
191
191
|
loader = '<div class="preloader-wrapper small active"> <div class="spinner-layer spinner-blue-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div>'
|
192
192
|
loaded_element = $elem.closest('.loader_container')
|
193
|
-
|
193
|
+
App.shared.setLoader( loaded_element,loader )
|
194
194
|
@printPost($elem)
|
195
195
|
return false
|
196
196
|
|
@@ -202,7 +202,7 @@ class App.ResourcesList
|
|
202
202
|
e.preventDefault()
|
203
203
|
e.stopPropagation()
|
204
204
|
$elem = $('input.search-list')
|
205
|
-
@orderSearch(@
|
205
|
+
@orderSearch(@searchForm.action, $elem.val())
|
206
206
|
|
207
207
|
#
|
208
208
|
# starting a search - and making some noise about it!
|
@@ -211,10 +211,10 @@ class App.ResourcesList
|
|
211
211
|
e.preventDefault()
|
212
212
|
e.stopPropagation()
|
213
213
|
$elem = $('input.search-list')
|
214
|
-
@orderSearch(@
|
214
|
+
@orderSearch(@searchForm.action, $elem.val())
|
215
215
|
|
216
216
|
|
217
|
-
prepare:
|
217
|
+
prepare: =>
|
218
218
|
|
219
219
|
try
|
220
220
|
$(document.body).unbind('click.print')
|
@@ -229,7 +229,7 @@ class App.ResourcesList
|
|
229
229
|
#
|
230
230
|
# If this page has a resources_list
|
231
231
|
#
|
232
|
-
$('table.resources_table').map (k,t)
|
232
|
+
$('table.resources_table').map (k,t) =>
|
233
233
|
$(document.body).on 'click.attach', 'a.attached, a.detached', @handleAttachLinks
|
234
234
|
$(document.body).on 'click.activate', 'a.activated, a.deactivated', @handleActivateLinks
|
235
235
|
$(document.body).on 'click.prefer', 'a.preferred, a.deferred', @handlePreferredLinks
|
@@ -2,15 +2,20 @@
|
|
2
2
|
# to make room for a loader
|
3
3
|
#
|
4
4
|
class App.Shared
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
constructor: (@el) ->
|
6
|
+
# initialize some stuff
|
7
|
+
# it will be re-instated with releaseLoader
|
8
|
+
@loaded_html = ""
|
9
|
+
@loaded_element = ""
|
10
|
+
@currentForm = ""
|
10
11
|
|
12
|
+
setCurrentForm: (f) =>
|
13
|
+
@currentForm = f
|
11
14
|
|
15
|
+
getCurrentForm: =>
|
16
|
+
@currentForm
|
12
17
|
|
13
|
-
getDownload: (xhr,data)
|
18
|
+
getDownload: (xhr,data) =>
|
14
19
|
# Check if a filename is existing on the response headers.
|
15
20
|
filename = ""
|
16
21
|
disposition = xhr.getResponseHeader("Content-Disposition")
|
@@ -21,7 +26,6 @@ class App.Shared
|
|
21
26
|
filename = matches[1].replace(/[""]/g, "")
|
22
27
|
#
|
23
28
|
type = xhr.getResponseHeader("Content-Type")
|
24
|
-
console.log 'getDownload ' + type
|
25
29
|
blob = new Blob([data], {type: type})
|
26
30
|
#
|
27
31
|
if typeof window.navigator.msSaveBlob != "undefined"
|
@@ -55,7 +59,7 @@ class App.Shared
|
|
55
59
|
# 03-07-2015 (whd) not sure whether this method is OK!!!!
|
56
60
|
# cp'ed from: http://scriptcult.com/subcategory_1/article_414-copy-or-clone-javascript-array-object
|
57
61
|
#
|
58
|
-
cloneObject: (source)
|
62
|
+
cloneObject: (source) =>
|
59
63
|
for i in source
|
60
64
|
if typeof source[i] == 'source'
|
61
65
|
this[i] = new cloneObject source[i]
|
@@ -70,24 +74,24 @@ class App.Shared
|
|
70
74
|
#
|
71
75
|
setLoader: (elem,html) =>
|
72
76
|
html ||= '<div class="progress"><div class="indeterminate"></div></div>'
|
73
|
-
loaded_element = $(elem)
|
74
|
-
loaded_html = elem.html()
|
77
|
+
@loaded_element = $(elem)
|
78
|
+
@loaded_html = elem.html()
|
75
79
|
elem.html(html)
|
76
|
-
return loaded_html
|
80
|
+
return @loaded_html
|
77
81
|
|
78
82
|
#
|
79
83
|
# release the loader
|
80
84
|
#
|
81
85
|
releaseLoader: (elem=null) =>
|
82
|
-
elem ||= loaded_element
|
83
|
-
$(elem).html(loaded_html)
|
86
|
+
elem ||= @loaded_element
|
87
|
+
$(elem).html(@loaded_html)
|
84
88
|
|
85
|
-
tellResponse: (msg,anchor='.message_container',fade=15000,selector='.alert')
|
89
|
+
tellResponse: (msg,anchor='.message_container',fade=15000,selector='.alert') =>
|
86
90
|
$(anchor).prepend(msg)
|
87
91
|
if fade>0
|
88
92
|
fadeItOut $(anchor).find(selector), 15000
|
89
93
|
|
90
|
-
reportError: (msg)
|
94
|
+
reportError: (msg) =>
|
91
95
|
Materialize.toast( msg, 4500, 'red lighten-3')
|
92
96
|
|
93
97
|
|
@@ -95,7 +99,7 @@ class App.Shared
|
|
95
99
|
# fadeItOut will fade an element out with a preset or
|
96
100
|
# supplied delay
|
97
101
|
#
|
98
|
-
fadeItOut: (e,delay=3500)
|
102
|
+
fadeItOut: (e,delay=3500) =>
|
99
103
|
$(e).delay( delay ).fadeOut( 1000 )
|
100
104
|
|
101
105
|
#
|
@@ -104,7 +108,7 @@ class App.Shared
|
|
104
108
|
#
|
105
109
|
# excemptions: data-id, data-remote, data-ajax, data-method, data-type and data-url
|
106
110
|
#
|
107
|
-
dataArgumentOn: (elem)
|
111
|
+
dataArgumentOn: (elem) =>
|
108
112
|
$(elem).data()
|
109
113
|
# try
|
110
114
|
#
|
@@ -117,7 +121,7 @@ class App.Shared
|
|
117
121
|
#
|
118
122
|
# check to see iff this browser supperts the File APIs
|
119
123
|
#
|
120
|
-
fileApiSupportCheck: ()
|
124
|
+
fileApiSupportCheck: () =>
|
121
125
|
if (window.File && window.FileReader && window.FileList && window.Blob)
|
122
126
|
# All the File APIs are supported.
|
123
127
|
console.log 'file APIs supported '
|
@@ -7,7 +7,7 @@ class App.SweetAlert
|
|
7
7
|
# initializeSweetAlert
|
8
8
|
# initializes the sweetalert prompt
|
9
9
|
#
|
10
|
-
initializeSweetAlert: ()
|
10
|
+
initializeSweetAlert: () =>
|
11
11
|
try
|
12
12
|
# console.log 'sweet alert initializing...'
|
13
13
|
# sweetHTML = '<div class="sweet-overlay" tabIndex="-1"></div><div class="sweet-alert" tabIndex="-1"><div class="icon error"><span class="x-mark"><span class="line left"></span><span class="line right"></span></span></div><div class="icon warning"> <span class="body"></span> <span class="dot"></span> </div> <div class="icon info"></div> <div class="icon success"> <span class="line tip"></span> <span class="line long"></span> <div class="placeholder"></div> <div class="fix"></div> </div> <div class="icon custom"></div> <h2>Title</h2><p>Text</p><button class="cancel" tabIndex="2">Cancel</button><button class="confirm" tabIndex="1">OK</button></div>'
|
@@ -19,7 +19,7 @@ class App.SweetAlert
|
|
19
19
|
console.log 'sweetalert says: ' + error
|
20
20
|
|
21
21
|
|
22
|
-
prepare:
|
22
|
+
prepare: =>
|
23
23
|
|
24
24
|
try
|
25
25
|
if ($('.sweet-alert').length<1)
|
@@ -3,7 +3,16 @@
|
|
3
3
|
#
|
4
4
|
# reacts to 'app.something' events
|
5
5
|
#
|
6
|
-
window.App ||= { name: 'App'}
|
6
|
+
window.App ||= { name: 'App', shared: null, cf: null }
|
7
|
+
|
8
|
+
App.shared = ->
|
9
|
+
@shared
|
10
|
+
|
11
|
+
App.currentForm = (val) ->
|
12
|
+
@shared.setCurrentForm(val)
|
13
|
+
|
14
|
+
App.currentForm = ->
|
15
|
+
@shared.getCurrentForm()
|
7
16
|
|
8
17
|
App.trigger = (event) ->
|
9
18
|
$(App).trigger(event)
|
@@ -11,6 +20,8 @@ App.trigger = (event) ->
|
|
11
20
|
#
|
12
21
|
# signal App
|
13
22
|
App.init = ->
|
23
|
+
|
24
|
+
@shared = new App.Shared()
|
14
25
|
#
|
15
26
|
App.trigger('app:init')
|
16
27
|
#
|
@@ -35,4 +46,5 @@ App.pageload = ->
|
|
35
46
|
# closeNotice
|
36
47
|
# will close the notice DIV
|
37
48
|
App.closeNotice = (e) ->
|
38
|
-
|
49
|
+
shared = new App.Shared()
|
50
|
+
shared.fadeItOut $(e).closest('.alert') #.remove()
|
data/lib/abstracted/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abstracted
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Walther H Diechmann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|