formize 0.0.20 → 0.0.21
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/assets/javascripts/formize.js +56 -39
- data/lib/assets/javascripts/jquery.ui.formize.js +56 -39
- data/lib/formize/action_controller.rb +1 -1
- data/lib/formize/definition/field.rb +1 -1
- data/lib/formize/generator.rb +1 -1
- data/lib/formize.rb +12 -0
- metadata +16 -16
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.21
|
@@ -59,30 +59,32 @@ $.datepicker.regional['zh-TW'] = { closeText: '關閉', prevText: '<上月'
|
|
59
59
|
(function ($) {
|
60
60
|
// Replaces `$(selector).live("ready", handler)` which don't work
|
61
61
|
// It rebinds automatically after each ajax request all not-binded.
|
62
|
+
$.behavioursCount = 0;
|
62
63
|
$.behaviours = [];
|
63
64
|
$.behave = function (selector, events, handler) {
|
64
|
-
|
65
|
-
|
66
|
-
|
65
|
+
events = events.split(/\s+/ig);
|
66
|
+
for (var i = 0; i < events.length; i += 1) {
|
67
|
+
var event = events[i];
|
67
68
|
if (event === "load") {
|
68
|
-
|
69
|
+
var index = $.behavioursCount; $.behavioursCount += 1;
|
70
|
+
$.behaviours.push({selector: selector, handler: handler, index: index});
|
71
|
+
$(document).ready(function(event) {
|
69
72
|
$(selector).each(handler);
|
70
|
-
$(selector).prop('alreadyBound', true);
|
71
|
-
|
72
|
-
$.behaviours.push({selector: selector, handler: handler});
|
73
|
+
$(selector).prop('alreadyBound'+index, true);
|
74
|
+
});
|
73
75
|
} else {
|
74
|
-
|
76
|
+
$(selector).live(event, handler);
|
75
77
|
}
|
76
|
-
|
78
|
+
}
|
77
79
|
}
|
78
80
|
// Rebinds unbound elements on each ajax request.
|
79
81
|
$(document).ajaxComplete(function () {
|
80
82
|
for (var behaviour in $.behaviours) {
|
81
83
|
behaviour = $.behaviours[behaviour];
|
82
84
|
$(behaviour.selector).each(function(index, element){
|
83
|
-
if ($(element).prop('alreadyBound') !== true) {
|
85
|
+
if ($(element).prop('alreadyBound'+behaviour.index) !== true) {
|
84
86
|
behaviour.handler.call($(element));
|
85
|
-
$(element).prop('alreadyBound', true);
|
87
|
+
$(element).prop('alreadyBound'+behaviour.index, true);
|
86
88
|
}
|
87
89
|
});
|
88
90
|
}
|
@@ -94,25 +96,40 @@ $.datepicker.regional['zh-TW'] = { closeText: '關閉', prevText: '<上月'
|
|
94
96
|
$.ajaxDialog = function (url, settings) {
|
95
97
|
var frame_id = "dialog-" + $.ajaxDialogCount, width = $(document).width();
|
96
98
|
var defaultSettings = {
|
97
|
-
header: "X-Return-Code"
|
99
|
+
header: "X-Return-Code",
|
100
|
+
width: 0.6,
|
101
|
+
height: 0.8
|
98
102
|
};
|
99
103
|
if (settings === null || settings === undefined) { settings = {}; }
|
100
104
|
settings = $.extend({}, defaultSettings, settings);
|
101
105
|
$.ajax(url, {
|
102
106
|
data: {dialog: frame_id},
|
103
107
|
success: function(data, textStatus, jqXHR) {
|
104
|
-
var frame = $(document.createElement('div'));
|
108
|
+
var frame = $(document.createElement('div')), width, height;
|
105
109
|
frame.attr({id: frame_id, 'class': 'dialog ajax-dialog', style: 'display:none;'});
|
106
110
|
$('body').append(frame);
|
107
111
|
frame.html(data);
|
108
112
|
frame.prop("dialogSettings", settings);
|
113
|
+
if (settings.width === 0) {
|
114
|
+
width = 'auto';
|
115
|
+
} else if (settings.width < 1) {
|
116
|
+
width = $(window).width() * settings.width;
|
117
|
+
} else {
|
118
|
+
width = settings.width;
|
119
|
+
}
|
120
|
+
if (settings.height === 0) {
|
121
|
+
height = 'auto';
|
122
|
+
} else if (settings.height < 1) {
|
123
|
+
height = $(window).height() * settings.height;
|
124
|
+
} else {
|
125
|
+
height = settings.height;
|
126
|
+
}
|
109
127
|
frame.dialog({
|
110
128
|
autoOpen: false,
|
111
129
|
show: 'fade',
|
112
130
|
modal: true,
|
113
|
-
width:
|
114
|
-
|
115
|
-
height: $(window).height()*0.8
|
131
|
+
width: width,
|
132
|
+
height: height
|
116
133
|
});
|
117
134
|
$.ajaxDialogInitialize(frame);
|
118
135
|
frame.dialog("open");
|
@@ -142,7 +159,7 @@ $.datepicker.regional['zh-TW'] = { closeText: '關閉', prevText: '<上月'
|
|
142
159
|
$("#" + frame_id + " form").each(function (index, form) {
|
143
160
|
$(form).attr('data-dialog', frame_id);
|
144
161
|
});
|
145
|
-
|
162
|
+
|
146
163
|
};
|
147
164
|
|
148
165
|
$.submitAjaxForm = function () {
|
@@ -200,28 +217,28 @@ Formize.refreshDependents = function (event) {
|
|
200
217
|
var element = $(this);
|
201
218
|
var params = {};
|
202
219
|
if (element.val() !== null && element.val() !== undefined) {
|
203
|
-
|
204
|
-
|
220
|
+
var dependents = element.attr('data-dependents');
|
221
|
+
var paramName = element.attr('data-parameter-name') || element.attr('id') || 'value';
|
205
222
|
params[paramName] = element.val();
|
206
223
|
$(dependents).each(function(index, item) {
|
207
224
|
// Replaces element
|
208
225
|
var url = $(item).attr('data-refresh');
|
209
|
-
|
226
|
+
var mode = $(item).attr('data-refresh-mode') || 'replace';
|
210
227
|
if (url !== null) {
|
211
228
|
$.ajax(url, {
|
212
229
|
data: params,
|
213
230
|
success: function(data, textStatus, response) {
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
231
|
+
if (mode == 'update') {
|
232
|
+
$(item).html(response.responseText);
|
233
|
+
} else if (mode == 'update-value') {
|
234
|
+
if (element.data("attribute")) {
|
235
|
+
$(item).val($.parseJSON(data)[element.data("attribute")]);
|
236
|
+
} else {
|
237
|
+
$(item).val(response.responseText);
|
238
|
+
}
|
239
|
+
} else {
|
223
240
|
$(item).replaceWith(response.responseText);
|
224
|
-
|
241
|
+
}
|
225
242
|
},
|
226
243
|
error: function(jqXHR, textStatus, errorThrown) {
|
227
244
|
alert("FAILURE (Error "+textStatus+"): "+errorThrown);
|
@@ -237,11 +254,11 @@ Formize.refreshDependents = function (event) {
|
|
237
254
|
Formize.toggleCheckboxes = function () {
|
238
255
|
var checkable = $(this);
|
239
256
|
if (checkable.prop("checked")) {
|
240
|
-
|
241
|
-
|
257
|
+
$(checkable.attr('data-show')).slideDown();
|
258
|
+
$(checkable.attr('data-hide')).slideUp();
|
242
259
|
} else {
|
243
|
-
|
244
|
-
|
260
|
+
$(checkable.attr('data-show')).slideUp();
|
261
|
+
$(checkable.attr('data-hide')).slideDown();
|
245
262
|
}
|
246
263
|
};
|
247
264
|
|
@@ -356,17 +373,17 @@ $.behave("a[data-add-item]", "click", function() {
|
|
356
373
|
return false;
|
357
374
|
});
|
358
375
|
|
359
|
-
$.behave("input[data-
|
376
|
+
$.behave("input[data-autocompletion]", "load", function () {
|
360
377
|
var element = $(this);
|
361
378
|
element.autocomplete({
|
362
|
-
|
363
|
-
|
379
|
+
source: element.data("autocompletion"),
|
380
|
+
minLength: parseInt(element.data("min-length") || 1)
|
364
381
|
});
|
365
382
|
});
|
366
383
|
|
367
384
|
// Refresh dependents on changes
|
368
|
-
$.behave("*[data-dependents]", "change", Formize.refreshDependents);
|
369
|
-
$.behave("*[data-dependents]", "emulated:change", Formize.refreshDependents);
|
385
|
+
$.behave("*[data-dependents]", "change emulated:change", Formize.refreshDependents);
|
386
|
+
// $.behave("*[data-dependents]", "emulated:change", Formize.refreshDependents);
|
370
387
|
// Compensate for changes made with keyboard
|
371
388
|
$.behave("select[data-dependents]", "keypress", Formize.refreshDependents);
|
372
389
|
|
@@ -3,30 +3,32 @@
|
|
3
3
|
(function ($) {
|
4
4
|
// Replaces `$(selector).live("ready", handler)` which don't work
|
5
5
|
// It rebinds automatically after each ajax request all not-binded.
|
6
|
+
$.behavioursCount = 0;
|
6
7
|
$.behaviours = [];
|
7
8
|
$.behave = function (selector, events, handler) {
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
events = events.split(/\s+/ig);
|
10
|
+
for (var i = 0; i < events.length; i += 1) {
|
11
|
+
var event = events[i];
|
11
12
|
if (event === "load") {
|
12
|
-
|
13
|
+
var index = $.behavioursCount; $.behavioursCount += 1;
|
14
|
+
$.behaviours.push({selector: selector, handler: handler, index: index});
|
15
|
+
$(document).ready(function(event) {
|
13
16
|
$(selector).each(handler);
|
14
|
-
$(selector).prop('alreadyBound', true);
|
15
|
-
|
16
|
-
$.behaviours.push({selector: selector, handler: handler});
|
17
|
+
$(selector).prop('alreadyBound'+index, true);
|
18
|
+
});
|
17
19
|
} else {
|
18
|
-
|
20
|
+
$(selector).live(event, handler);
|
19
21
|
}
|
20
|
-
|
22
|
+
}
|
21
23
|
}
|
22
24
|
// Rebinds unbound elements on each ajax request.
|
23
25
|
$(document).ajaxComplete(function () {
|
24
26
|
for (var behaviour in $.behaviours) {
|
25
27
|
behaviour = $.behaviours[behaviour];
|
26
28
|
$(behaviour.selector).each(function(index, element){
|
27
|
-
if ($(element).prop('alreadyBound') !== true) {
|
29
|
+
if ($(element).prop('alreadyBound'+behaviour.index) !== true) {
|
28
30
|
behaviour.handler.call($(element));
|
29
|
-
$(element).prop('alreadyBound', true);
|
31
|
+
$(element).prop('alreadyBound'+behaviour.index, true);
|
30
32
|
}
|
31
33
|
});
|
32
34
|
}
|
@@ -38,25 +40,40 @@
|
|
38
40
|
$.ajaxDialog = function (url, settings) {
|
39
41
|
var frame_id = "dialog-" + $.ajaxDialogCount, width = $(document).width();
|
40
42
|
var defaultSettings = {
|
41
|
-
header: "X-Return-Code"
|
43
|
+
header: "X-Return-Code",
|
44
|
+
width: 0.6,
|
45
|
+
height: 0.8
|
42
46
|
};
|
43
47
|
if (settings === null || settings === undefined) { settings = {}; }
|
44
48
|
settings = $.extend({}, defaultSettings, settings);
|
45
49
|
$.ajax(url, {
|
46
50
|
data: {dialog: frame_id},
|
47
51
|
success: function(data, textStatus, jqXHR) {
|
48
|
-
var frame = $(document.createElement('div'));
|
52
|
+
var frame = $(document.createElement('div')), width, height;
|
49
53
|
frame.attr({id: frame_id, 'class': 'dialog ajax-dialog', style: 'display:none;'});
|
50
54
|
$('body').append(frame);
|
51
55
|
frame.html(data);
|
52
56
|
frame.prop("dialogSettings", settings);
|
57
|
+
if (settings.width === 0) {
|
58
|
+
width = 'auto';
|
59
|
+
} else if (settings.width < 1) {
|
60
|
+
width = $(window).width() * settings.width;
|
61
|
+
} else {
|
62
|
+
width = settings.width;
|
63
|
+
}
|
64
|
+
if (settings.height === 0) {
|
65
|
+
height = 'auto';
|
66
|
+
} else if (settings.height < 1) {
|
67
|
+
height = $(window).height() * settings.height;
|
68
|
+
} else {
|
69
|
+
height = settings.height;
|
70
|
+
}
|
53
71
|
frame.dialog({
|
54
72
|
autoOpen: false,
|
55
73
|
show: 'fade',
|
56
74
|
modal: true,
|
57
|
-
width:
|
58
|
-
|
59
|
-
height: $(window).height()*0.8
|
75
|
+
width: width,
|
76
|
+
height: height
|
60
77
|
});
|
61
78
|
$.ajaxDialogInitialize(frame);
|
62
79
|
frame.dialog("open");
|
@@ -86,7 +103,7 @@
|
|
86
103
|
$("#" + frame_id + " form").each(function (index, form) {
|
87
104
|
$(form).attr('data-dialog', frame_id);
|
88
105
|
});
|
89
|
-
|
106
|
+
|
90
107
|
};
|
91
108
|
|
92
109
|
$.submitAjaxForm = function () {
|
@@ -144,28 +161,28 @@ Formize.refreshDependents = function (event) {
|
|
144
161
|
var element = $(this);
|
145
162
|
var params = {};
|
146
163
|
if (element.val() !== null && element.val() !== undefined) {
|
147
|
-
|
148
|
-
|
164
|
+
var dependents = element.attr('data-dependents');
|
165
|
+
var paramName = element.attr('data-parameter-name') || element.attr('id') || 'value';
|
149
166
|
params[paramName] = element.val();
|
150
167
|
$(dependents).each(function(index, item) {
|
151
168
|
// Replaces element
|
152
169
|
var url = $(item).attr('data-refresh');
|
153
|
-
|
170
|
+
var mode = $(item).attr('data-refresh-mode') || 'replace';
|
154
171
|
if (url !== null) {
|
155
172
|
$.ajax(url, {
|
156
173
|
data: params,
|
157
174
|
success: function(data, textStatus, response) {
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
175
|
+
if (mode == 'update') {
|
176
|
+
$(item).html(response.responseText);
|
177
|
+
} else if (mode == 'update-value') {
|
178
|
+
if (element.data("attribute")) {
|
179
|
+
$(item).val($.parseJSON(data)[element.data("attribute")]);
|
180
|
+
} else {
|
181
|
+
$(item).val(response.responseText);
|
182
|
+
}
|
183
|
+
} else {
|
167
184
|
$(item).replaceWith(response.responseText);
|
168
|
-
|
185
|
+
}
|
169
186
|
},
|
170
187
|
error: function(jqXHR, textStatus, errorThrown) {
|
171
188
|
alert("FAILURE (Error "+textStatus+"): "+errorThrown);
|
@@ -181,11 +198,11 @@ Formize.refreshDependents = function (event) {
|
|
181
198
|
Formize.toggleCheckboxes = function () {
|
182
199
|
var checkable = $(this);
|
183
200
|
if (checkable.prop("checked")) {
|
184
|
-
|
185
|
-
|
201
|
+
$(checkable.attr('data-show')).slideDown();
|
202
|
+
$(checkable.attr('data-hide')).slideUp();
|
186
203
|
} else {
|
187
|
-
|
188
|
-
|
204
|
+
$(checkable.attr('data-show')).slideUp();
|
205
|
+
$(checkable.attr('data-hide')).slideDown();
|
189
206
|
}
|
190
207
|
};
|
191
208
|
|
@@ -300,17 +317,17 @@ $.behave("a[data-add-item]", "click", function() {
|
|
300
317
|
return false;
|
301
318
|
});
|
302
319
|
|
303
|
-
$.behave("input[data-
|
320
|
+
$.behave("input[data-autocompletion]", "load", function () {
|
304
321
|
var element = $(this);
|
305
322
|
element.autocomplete({
|
306
|
-
|
307
|
-
|
323
|
+
source: element.data("autocompletion"),
|
324
|
+
minLength: parseInt(element.data("min-length") || 1)
|
308
325
|
});
|
309
326
|
});
|
310
327
|
|
311
328
|
// Refresh dependents on changes
|
312
|
-
$.behave("*[data-dependents]", "change", Formize.refreshDependents);
|
313
|
-
$.behave("*[data-dependents]", "emulated:change", Formize.refreshDependents);
|
329
|
+
$.behave("*[data-dependents]", "change emulated:change", Formize.refreshDependents);
|
330
|
+
// $.behave("*[data-dependents]", "emulated:change", Formize.refreshDependents);
|
314
331
|
// Compensate for changes made with keyboard
|
315
332
|
$.behave("select[data-dependents]", "keypress", Formize.refreshDependents);
|
316
333
|
|
@@ -64,7 +64,7 @@ module Formize
|
|
64
64
|
for column in form.model.columns
|
65
65
|
next if column.name =~ /_count$/ or [:id, :created_at, :updated_at, :lock_version, :type, :creator_id, :updater_id].include?(column.name.to_sym)
|
66
66
|
if column.name =~ /_id$/
|
67
|
-
reflections = form.model.reflections.select{ |k, x| x.
|
67
|
+
reflections = form.model.reflections.select{ |k, x| x.send(Formize.foreign_key).to_s == column.name.to_s }
|
68
68
|
if reflections.size == 1
|
69
69
|
f.field(column.name.gsub(/_id$/, ''), :choices=>:all, :source=>:foreign_class, :new=>true)
|
70
70
|
# elsif reflections.size > 1 # AMBIGUITY
|
@@ -34,7 +34,7 @@ module Formize
|
|
34
34
|
@source = @options.delete(:source) # || @reflection.class_name
|
35
35
|
@is_method = true if @options[:new]
|
36
36
|
@method_name = self.form.unique_name + "_inf_" + @name
|
37
|
-
@method = @reflection.
|
37
|
+
@method = @reflection.send(Formize.foreign_key)
|
38
38
|
unless @item_label = @options.delete(:item_label)
|
39
39
|
model = @reflection.class_name.constantize
|
40
40
|
available_methods = (model.columns_hash.keys+model.instance_methods).collect{|x| x.to_s}
|
data/lib/formize/generator.rb
CHANGED
@@ -63,7 +63,7 @@ module Formize
|
|
63
63
|
# locals[df.name.to_sym] = Code.new(df.name)
|
64
64
|
end
|
65
65
|
if dependent.is_a?(Formize::Definition::Field) and dependent.reflection
|
66
|
-
event << " #{record_name}.#{dependent.reflection.
|
66
|
+
event << " #{record_name}.#{dependent.reflection.send(Formize.foreign_key)} = params[:selected].to_i if params[:selected]\n"
|
67
67
|
end
|
68
68
|
event << " render(:inline=>'<%=#{dependent.prototype}-%>', :locals=>#{locals.inspect})\n"
|
69
69
|
event << "end\n"
|
data/lib/formize.rb
CHANGED
@@ -3,6 +3,18 @@ require 'formize/engine' if defined?(::Rails)
|
|
3
3
|
|
4
4
|
# :include: ../README.rdoc
|
5
5
|
module Formize
|
6
|
+
if defined?(::Rails)
|
7
|
+
if ::Rails.version >= "3.1"
|
8
|
+
def self.foreign_key
|
9
|
+
:foreign_key
|
10
|
+
end
|
11
|
+
else
|
12
|
+
def self.foreign_key
|
13
|
+
:primary_key_name
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
6
18
|
extend ActiveSupport::Autoload
|
7
19
|
|
8
20
|
def self.configure(name, value = nil) # :nodoc:
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: formize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.21
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-17 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &12235800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *12235800
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: jquery-rails
|
27
|
-
requirement: &
|
27
|
+
requirement: &12232840 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *12232840
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: fastercsv
|
38
|
-
requirement: &
|
38
|
+
requirement: &12229560 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *12229560
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: jeweler
|
49
|
-
requirement: &
|
49
|
+
requirement: &12226540 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.6.4
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *12226540
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rcov
|
60
|
-
requirement: &
|
60
|
+
requirement: &12148520 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *12148520
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rdoc
|
71
|
-
requirement: &
|
71
|
+
requirement: &12143760 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: 2.4.2
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *12143760
|
80
80
|
description: Like simple_form or formtastic, it aims to handle easily forms but taking
|
81
81
|
in account AJAX and HTML5 on depending fields mainly.
|
82
82
|
email: brice.texier@ekylibre.org
|
@@ -209,7 +209,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
209
209
|
version: '0'
|
210
210
|
segments:
|
211
211
|
- 0
|
212
|
-
hash:
|
212
|
+
hash: 4163298408554769936
|
213
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
214
214
|
none: false
|
215
215
|
requirements:
|
@@ -218,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
218
|
version: '0'
|
219
219
|
requirements: []
|
220
220
|
rubyforge_project:
|
221
|
-
rubygems_version: 1.8.
|
221
|
+
rubygems_version: 1.8.11
|
222
222
|
signing_key:
|
223
223
|
specification_version: 3
|
224
224
|
summary: Simple form DSL with dynamic interactions for Rails
|