abracadabra 1.1.4 → 1.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f6be915a98686f681e12658208d1597ee3d0114
4
- data.tar.gz: 048b658309331f1170ba7955dee5beca1bb5cbd8
3
+ metadata.gz: ce1d95226cb46bbaea1c88bf845f2eebf5f12259
4
+ data.tar.gz: e1fa8fc9ca8fcfe6e234ffe4e3e84371b1ddc097
5
5
  SHA512:
6
- metadata.gz: 9193a97298456380a147ce104f474886a2e13f71dc4b57d035d2f799b0c98e693479094dfd6b8e08efc87c407406408ca0ca346237b4602b163ed537a0b29daf
7
- data.tar.gz: 1679b17fb3bff3d262953b039708ba54086d32831cb95b0eee2c4120483435e2cde3dc0ce2b58de2a3a58ee373acee4c0e3cdb944933e6f258772fec33bf5662
6
+ metadata.gz: 02d2c22dea7363db85fb422b9d6d07623354d2ff47ba8d3248920c569f6d243490c87122f2bbae055f72593440d2d0366efff608312d04134efe4b63640b57e2
7
+ data.tar.gz: 1242c42a402cf3d3fe94f2df519535b35ff0fff89a9a061d929224ff3ac3e4a6d36f48393ea1ec9f9a09bb76ac95f1116191077b521b42285e2b67be399bcc2a
data/README.md CHANGED
@@ -31,7 +31,13 @@ In your `application.css`, AFTER Bootstrap, include the css file:
31
31
  *= require abracadabra
32
32
  ```
33
33
 
34
- In your `application.js`, AFTER Jquery (required), include the javascript file:
34
+ OR if you're using SASS/SCSS:
35
+
36
+ ```sass
37
+ @import "abracadabra-scss";
38
+ ```
39
+
40
+ In your `application.js`, AFTER JQuery (required), include the javascript file:
35
41
 
36
42
  ```js
37
43
  //= require abracadabra
@@ -59,7 +65,7 @@ It accepts the following parameters:
59
65
  - `attribute: :name` - Specifies what attribute your text field will be updating.
60
66
 
61
67
  #### OPTIONAL
62
- - `class: "my-class"` - Class(es) to be added to the abracadabra link. The class "abracadabra" is added # either way. [*Default:* `"abracadabra"`]
68
+ - `class: "my-class"` - Class(es) to be added to the abracadabra link. The class "abracadabra" is added either way. [*Default:* `"abracadabra"`]
63
69
 
64
70
  - `id: "my-id"` - ID to be added to the abracadabra link. [*Default:* `nil`]
65
71
 
@@ -67,7 +73,7 @@ It accepts the following parameters:
67
73
 
68
74
  - `method: "patch"` - HTTP REST method to use. Use anything but "get". [*Default:* `"patch"`]
69
75
 
70
- - `buttonless: true` - Removes submit and cancel buttons, submission and cancellation is then one through the Enter/Tab and Escape keys, respectively. [*Default:* `false`]
76
+ - `buttonless: true` - Removes submit and cancel buttons. Submission and cancellation is then done through the Enter/Tab and Escape keys, respectively. [*Default:* `false`]
71
77
 
72
78
  - `remote: true` - Same as link_to's `remote: true`, form submits via AJAX. [*Default:* `true`]
73
79
 
@@ -107,6 +113,14 @@ click_to_edit @friend,
107
113
  submit_on_blur: true
108
114
  ```
109
115
 
116
+ #### REBINDING
117
+
118
+ Simply call abracadabra's jQuery function:
119
+
120
+ ```javascript
121
+ $.abracadabra();
122
+ ```
123
+
110
124
  ## Configuration
111
125
 
112
126
  Abracadabra allows some customization. If you would like to change what icon classes are used for the `submit`, `cancel`, and `delete` icons, you can change them globally.
@@ -1,233 +1,247 @@
1
1
  $(function() {
2
- abracadabraSubmissionInProgress = false;
3
- abracadabraButtonMousedown = false;
4
- abracadabraEscapeKeydown = false;
5
-
6
- function closeAbracadabra(element, destroy, valueChanged) {
7
- $element = $(element);
8
- if($element.hasClass("abracadabra-container")) {
9
- container = $element;
10
- } else {
11
- container = $element.parents(".abracadabra-container");
12
- }
13
-
14
- if(destroy) {
15
- container.siblings(".abracadabra").remove();
16
- } else {
17
- if(valueChanged == true) {
18
- value = container.find(".abracadabra-input").val();
19
- } else {
20
- value = container.find(".abracadabra-input").data("original-value");
21
- }
22
- container.siblings(".abracadabra").text(value).show();
23
- }
24
-
25
- try {
26
- container.remove();
27
- } catch (error) {}
28
- }
29
-
30
- function tabToNextAbracadabra(element, selector) {
31
- if(selector != undefined) {
32
- nextAbracadabra = $(selector);
33
2
 
34
- /* If selector isn't an ID, find the element with the class AFTER the current element */
35
- if (selector.indexOf("#") == -1) {
36
- abracadabra = $(element).parents(".abracadabra-container").siblings(".abracadabra");
37
- indexOfAbracadabra = $(selector).index(abracadabra);
38
- nextAbracadabra = $($(selector)[indexOfAbracadabra + 1]);
3
+ $.extend({
4
+ abracadabra: function() {
5
+ abracadabraSubmissionInProgress = false;
6
+ abracadabraButtonMousedown = false;
7
+ abracadabraEscapeKeydown = false;
8
+
9
+ function closeAbracadabra(element, destroy, valueChanged) {
10
+ $element = $(element);
11
+ if($element.hasClass("abracadabra-container")) {
12
+ container = $element;
13
+ } else {
14
+ container = $element.parents(".abracadabra-container");
15
+ }
16
+
17
+ if(destroy) {
18
+ container.siblings(".abracadabra").remove();
19
+ } else {
20
+ if(valueChanged == true) {
21
+ value = container.find(".abracadabra-input").val();
22
+ } else {
23
+ value = container.find(".abracadabra-input").data("original-value");
24
+ }
25
+ container.siblings(".abracadabra").text(value).show();
26
+ }
27
+
28
+ try {
29
+ container.remove();
30
+ } catch (error) {}
39
31
  }
40
- /* /If selector isn't an ID, find the element with the class AFTER the current element */
41
-
42
- closeAbracadabra(element, false, true);
43
- nextAbracadabra.click();
44
- } else {
45
- closeAbracadabra(element, false, true);
46
- }
47
- }
48
-
49
- $("body").on("submit", ".abracadabra-form", function(e) {
50
- if(abracadabraSubmissionInProgress == true || abracadabraEscapeKeydown == true) {
51
- e.preventDefault();
52
- return false;
53
- }
54
- abracadabraSubmissionInProgress = true;
55
- });
56
-
57
- $("body").on("ajax:before", ".abracadabra-delete", function() {
58
- if(abracadabraSubmissionInProgress == true) {
59
- e.preventDefault();
60
- return false;
61
- }
62
- abracadabraSubmissionInProgress = true;
63
- });
64
-
65
- $("body").on("mousedown", ".abracadabra-delete, .abracadabra-submit, .abracadabra-cancel", function() {
66
- abracadabraButtonMousedown = true;
67
- });
68
-
69
- $("body").on("ajax:success", ".abracadabra-form", function(e) {
70
- target = $(e.target);
71
- abracadabraButtonMousedown = false;
72
-
73
- /* If form is a DELETE, remove abracadabra instance, if not, call tabToNextSelector */
74
- if(target.hasClass("abracadabra-delete")) {
75
- closeAbracadabra(target, true, true);
76
- } else {
77
- input = $(target).find(".abracadabra-input");
78
- tabToNextSelector = input.data("tab-to-next-selector");
79
- tabToNextAbracadabra(target, tabToNextSelector);
80
- }
81
- /* /If form is a DELETE, remove abracadabra instance, if not, call tabToNextSelector */
82
32
 
83
- abracadabraSubmissionInProgress = false;
84
- });
85
-
86
- $("body").on("click", ".abracadabra-cancel", function() {
87
- if(abracadabraSubmissionInProgress == false) {
88
- closeAbracadabra(this, false, false);
89
- }
90
- });
91
-
92
- $("body").on("blur", ".abracadabra-input", function() {
93
- if(abracadabraSubmissionInProgress == false && abracadabraButtonMousedown == false) {
94
- if($(this).data("submit-on-blur") == true) {
95
- $(this.form).submit();
96
- } else {
97
- closeAbracadabra(this, false, false);
33
+ function tabToNextAbracadabra(element, selector) {
34
+ if(selector != undefined) {
35
+ nextAbracadabra = $(selector);
36
+
37
+ /* If selector isn't an ID, find the element with the class AFTER the current element */
38
+ if (selector.indexOf("#") == -1) {
39
+ abracadabra = $(element).parents(".abracadabra-container").siblings(".abracadabra");
40
+ indexOfAbracadabra = $(selector).index(abracadabra);
41
+ nextAbracadabra = $($(selector)[indexOfAbracadabra + 1]);
42
+ }
43
+ /* /If selector isn't an ID, find the element with the class AFTER the current element */
44
+
45
+ closeAbracadabra(element, false, true);
46
+ nextAbracadabra.click();
47
+ } else {
48
+ closeAbracadabra(element, false, true);
49
+ }
98
50
  }
99
- }
100
- });
101
51
 
102
- $("body").on("keydown", ".abracadabra-input", function(e) {
103
- /* Press Tab to submit (same function as Enter key) */
104
- if (e.keyCode == 9)
105
- {
106
- e.preventDefault();
107
- if(abracadabraSubmissionInProgress == false) {
108
- $(this.form).submit();
109
- }
110
- }
111
- /* /Press Tab to submit (same function as Enter key) */
112
-
113
- /* Press Escape to cancel */
114
- if (e.keyCode == 27)
115
- {
116
- abracadabraEscapeKeydown = true;
117
- e.preventDefault();
118
- if(abracadabraSubmissionInProgress == false) {
52
+ $("body").unbind(".abracadabra-binding")
53
+
54
+ $("body").on("submit.abracadabra-binding", ".abracadabra-form", function(e) {
55
+ if(abracadabraSubmissionInProgress == true || abracadabraEscapeKeydown == true) {
56
+ e.preventDefault();
57
+ return false;
58
+ }
59
+ abracadabraSubmissionInProgress = true;
60
+ });
61
+
62
+ $("body").on("ajax:before.abracadabra-binding", ".abracadabra-delete", function() {
63
+ if(abracadabraSubmissionInProgress == true) {
64
+ e.preventDefault();
65
+ return false;
66
+ }
67
+ abracadabraSubmissionInProgress = true;
68
+ });
69
+
70
+ $("body").on("mousedown.abracadabra-binding", ".abracadabra-delete, .abracadabra-submit, .abracadabra-cancel", function() {
71
+ abracadabraButtonMousedown = true;
72
+ });
73
+
74
+ $("body").on("ajax:success.abracadabra-binding", ".abracadabra-form", function(e) {
75
+ target = $(e.target);
76
+ abracadabraButtonMousedown = false;
77
+
78
+ /* If form is a DELETE, remove abracadabra instance, if not, call tabToNextSelector */
79
+ if(target.hasClass("abracadabra-delete")) {
80
+ closeAbracadabra(target, true, true);
81
+ } else {
82
+ input = $(target).find(".abracadabra-input");
83
+ tabToNextSelector = input.data("tab-to-next-selector");
84
+ tabToNextAbracadabra(target, tabToNextSelector);
85
+ }
86
+ /* /If form is a DELETE, remove abracadabra instance, if not, call tabToNextSelector */
87
+
88
+ abracadabraSubmissionInProgress = false;
89
+ });
90
+
91
+ $("body").on("ajax:error.abracadabra-binding", ".abracadabra-form", function() {
119
92
  closeAbracadabra(this, false, false);
120
- abracadabraEscapeKeydown = false;
121
- }
122
- }
123
- /* /Press Escape to cancel */
124
- });
125
-
126
-
127
- $("body").on("confirm:complete", ".abracadabra-delete", function(e, response) {
128
- /* If cancel is clicked in the deletable_confirm dialog, focus on the input */
129
- if(response == false) {
130
- input = $(this).parents(".abracadabra-delete-container").siblings();
131
- inputValue = input.val();
132
- input.focus().val("").val(inputValue);
93
+ $.abracadabra();
94
+ });
95
+
96
+ $("body").on("click.abracadabra-binding", ".abracadabra-cancel", function() {
97
+ if(abracadabraSubmissionInProgress == false) {
98
+ closeAbracadabra(this, false, false);
99
+ }
100
+ });
101
+
102
+ $("body").on("blur.abracadabra-binding", ".abracadabra-input", function() {
103
+ if(abracadabraSubmissionInProgress == false && abracadabraButtonMousedown == false) {
104
+ if($(this).data("submit-on-blur") == true) {
105
+ $(this.form).submit();
106
+ } else {
107
+ closeAbracadabra(this, false, false);
108
+ }
109
+ }
110
+ });
111
+
112
+ $("body").on("keydown.abracadabra-binding", ".abracadabra-input", function(e) {
113
+ /* Press Tab to submit (same function as Enter key) */
114
+ if (e.keyCode == 9)
115
+ {
116
+ e.preventDefault();
117
+ if(abracadabraSubmissionInProgress == false) {
118
+ $(this.form).submit();
119
+ }
120
+ }
121
+ /* /Press Tab to submit (same function as Enter key) */
122
+
123
+ /* Press Escape to cancel */
124
+ if (e.keyCode == 27)
125
+ {
126
+ abracadabraEscapeKeydown = true;
127
+ e.preventDefault();
128
+ if(abracadabraSubmissionInProgress == false) {
129
+ closeAbracadabra(this, false, false);
130
+ abracadabraEscapeKeydown = false;
131
+ }
132
+ }
133
+ /* /Press Escape to cancel */
134
+ });
135
+
136
+
137
+ $("body").on("confirm:complete.abracadabra-binding", ".abracadabra-delete", function(e, response) {
138
+ /* If cancel is clicked in the deletable_confirm dialog, focus on the input */
139
+ if(response == false) {
140
+ input = $(this).parents(".abracadabra-delete-container").siblings();
141
+ inputValue = input.val();
142
+ input.focus().val("").val(inputValue);
143
+ }
144
+ /* /If cancel is clicked in the deletable_confirm dialog, focus on the input */
145
+ });
146
+
147
+ $(".abracadabra").on("click", function() {
148
+ if($(".abracadabra-container:visible").length) {
149
+ return false;
150
+ }
151
+
152
+ link = $(this);
153
+ link.hide();
154
+ path = link.data("path");
155
+ attribute = link.data("attribute");
156
+ formMethod = link.data("method");
157
+ remote = ((link.data("remote") == true) ? " data-remote=\"true\"" : "");
158
+
159
+ /* Check if button classes have been manually overridden elsewhere */
160
+ if(typeof abracadabraSubmitIcon == "undefined") {
161
+ abracadabraSubmitIcon = "fa fa-check";
162
+ }
163
+
164
+ if(typeof abracadabraCancelIcon == "undefined") {
165
+ abracadabraCancelIcon = "fa fa-times";
166
+ }
167
+
168
+ if(typeof abracadabraDeleteIcon == "undefined") {
169
+ abracadabraDeleteIcon = "fa fa-times-circle-o";
170
+ }
171
+ /* /Check if button classes have been manually overridden elsewhere */
172
+
173
+ /* AJAX? */
174
+ if(remote == "") {
175
+ authToken = "<input name=\"authenticity_token\" type=\"hidden\" value=\"" + $("meta[name=\"csrf-token\"]").attr("content") + "\">";
176
+ type = "";
177
+ deletableType = "";
178
+ } else {
179
+ authToken = "";
180
+ type = " data-type=\"" + link.data("type") + "\"";
181
+ deletableType = " data-type=\"" + link.data("deletable-type") + "\"";
182
+ }
183
+ /* /AJAX? */
184
+
185
+ /* Deletable? */
186
+ if(link.data("deletable") !== false) {
187
+ deletablePath = link.data("deletable-path");
188
+ deletableConfirm = link.data("deletable");
189
+ if(deletableConfirm === true) {
190
+ deletableConfirm = "";
191
+ } else {
192
+ deletableConfirm = " data-confirm=\"" + deletableConfirm + "\"";
193
+ }
194
+ deletable = "<span class=\"abracadabra-delete-container\"><a href=\"" + deletablePath + "\" class=\"abracadabra-delete\" data-method=\"delete\"" + deletableConfirm + remote + deletableType + " rel=\"nofollow\"><i class=\"" + abracadabraDeleteIcon + "\"></i></a></span>";
195
+ } else {
196
+ deletable = "";
197
+ }
198
+ /* /Deletable? */
199
+
200
+ /* Tab to next? */
201
+ tabToNextSelector = link.data("tab-to-next");
202
+ if(tabToNextSelector !== false) {
203
+ tabToNextSelector = link.data("tab-to-next");
204
+ tabToNextSelector = " data-tab-to-next-selector=\"" + tabToNextSelector + "\"";
205
+ } else {
206
+ tabToNextSelector = "";
207
+ }
208
+ /* /Tab to next? */
209
+
210
+ /* Submit on blur? */
211
+ submitOnBlur = link.data("submit-on-blur");
212
+ if(submitOnBlur == true) {
213
+ submitOnBlur = " data-submit-on-blur=\"true\"";
214
+ } else {
215
+ submitOnBlur = "";
216
+ }
217
+ /* /Submit on blur? */
218
+
219
+ /* Show buttons? */
220
+ if(link.data("buttonless") == true) {
221
+ buttons = "";
222
+ } else {
223
+ buttons = "<button type=\"submit\" class=\"btn btn-primary abracadabra-submit\"><i class=\"" + abracadabraSubmitIcon + "\"></i></button><button type=\"button\" class=\"btn abracadabra-cancel\"><i class=\"" + abracadabraCancelIcon + "\"></i></button>";
224
+ }
225
+ /* /Show buttons? */
226
+
227
+ instanceClass = link.data("class");
228
+ inputValue = link.text().replace(/"|\\"/g, "&quot;");
229
+ inputId = instanceClass + "_" + attribute;
230
+ inputName = instanceClass + "[" + attribute + "]";
231
+
232
+ openFormTag = "<form accept-charset=\"UTF-8\" action=\"" + path + "\"" + remote + type + " class=\"form-inline abracadabra-form\" method=\"post\">";
233
+ hiddenMethodTags = "<div style=\"display:none;\"><input name=\"utf8\" type=\"hidden\" value=\"&#10003;\"><input name=\"_method\" type=\"hidden\" value=\"" + formMethod + "\">" + authToken + "</div>";
234
+ input = "<input type=\"text\" class=\"form-control abracadabra-input\" id=\"" + inputId + "\" name=\"" + inputName + "\" value=\"" + inputValue + "\" data-original-value=\"" + inputValue + "\"" + tabToNextSelector + submitOnBlur + ">";
235
+
236
+ html = "<span class=\"abracadabra-container\">" + openFormTag + hiddenMethodTags;
237
+ html += "<div class=\"control-group\"><div class=\"abracadabra-input-and-button-wrapper\"><div class=\"abracadabra-input-container\">" + input + deletable + "</div>";
238
+ html += "<div class=\"abracadabra-buttons\">" + buttons + "</div></div></form></span>";
239
+
240
+ link.after(html);
241
+ link.siblings(".abracadabra-container").find(".abracadabra-input").focus().val("").val(inputValue);
242
+ });
133
243
  }
134
- /* /If cancel is clicked in the deletable_confirm dialog, focus on the input */
135
244
  });
136
-
137
- $(".abracadabra").on("click", function() {
138
- if($(".abracadabra-container:visible").length) {
139
- return false;
140
- }
141
-
142
- link = $(this);
143
- link.hide();
144
- path = link.data("path");
145
- attribute = link.data("attribute");
146
- formMethod = link.data("method");
147
- remote = ((link.data("remote") == true) ? " data-remote=\"true\"" : "");
148
-
149
- /* Check if button classes have been manually overridden elsewhere */
150
- if(typeof abracadabraSubmitIcon == "undefined") {
151
- abracadabraSubmitIcon = "fa fa-check";
152
- }
153
-
154
- if(typeof abracadabraCancelIcon == "undefined") {
155
- abracadabraCancelIcon = "fa fa-times";
156
- }
157
-
158
- if(typeof abracadabraDeleteIcon == "undefined") {
159
- abracadabraDeleteIcon = "fa fa-times-circle-o";
160
- }
161
- /* /Check if button classes have been manually overridden elsewhere */
162
-
163
- /* AJAX? */
164
- if(remote == "") {
165
- authToken = "<input name=\"authenticity_token\" type=\"hidden\" value=\"" + $("meta[name=\"csrf-token\"]").attr("content") + "\">";
166
- type = "";
167
- deletableType = "";
168
- } else {
169
- authToken = "";
170
- type = " data-type=\"" + link.data("type") + "\"";
171
- deletableType = " data-type=\"" + link.data("deletable-type") + "\"";
172
- }
173
- /* /AJAX? */
174
-
175
- /* Deletable? */
176
- if(link.data("deletable") !== false) {
177
- deletablePath = link.data("deletable-path");
178
- deletableConfirm = link.data("deletable");
179
- if(deletableConfirm === true) {
180
- deletableConfirm = "";
181
- } else {
182
- deletableConfirm = " data-confirm=\"" + deletableConfirm + "\"";
183
- }
184
- deletable = "<span class=\"abracadabra-delete-container\"><a href=\"" + deletablePath + "\" class=\"abracadabra-delete\" data-method=\"delete\"" + deletableConfirm + remote + deletableType + " rel=\"nofollow\"><i class=\"" + abracadabraDeleteIcon + "\"></i></a></span>";
185
- } else {
186
- deletable = "";
187
- }
188
- /* /Deletable? */
189
-
190
- /* Tab to next? */
191
- tabToNextSelector = link.data("tab-to-next");
192
- if(tabToNextSelector !== false) {
193
- tabToNextSelector = link.data("tab-to-next");
194
- tabToNextSelector = " data-tab-to-next-selector=\"" + tabToNextSelector + "\"";
195
- } else {
196
- tabToNextSelector = "";
197
- }
198
- /* /Tab to next? */
199
-
200
- /* Submit on blur? */
201
- submitOnBlur = link.data("submit-on-blur");
202
- if(submitOnBlur == true) {
203
- submitOnBlur = " data-submit-on-blur=\"true\"";
204
- } else {
205
- submitOnBlur = "";
206
- }
207
- /* /Submit on blur? */
208
245
 
209
- /* Show buttons? */
210
- if(link.data("buttonless") == true) {
211
- buttons = "";
212
- } else {
213
- buttons = "<button type=\"submit\" class=\"btn btn-primary abracadabra-submit\"><i class=\"" + abracadabraSubmitIcon + "\"></i></button><button type=\"button\" class=\"btn abracadabra-cancel\"><i class=\"" + abracadabraCancelIcon + "\"></i></button>";
214
- }
215
- /* /Show buttons? */
216
-
217
- instanceClass = link.data("class");
218
- inputValue = link.text().replace(/"|\\"/g, "&quot;");
219
- inputId = instanceClass + "_" + attribute;
220
- inputName = instanceClass + "[" + attribute + "]";
221
-
222
- openFormTag = "<form accept-charset=\"UTF-8\" action=\"" + path + "\"" + remote + type + " class=\"form-inline abracadabra-form\" method=\"post\">";
223
- hiddenMethodTags = "<div style=\"display:none;\"><input name=\"utf8\" type=\"hidden\" value=\"&#10003;\"><input name=\"_method\" type=\"hidden\" value=\"" + formMethod + "\">" + authToken + "</div>";
224
- input = "<input type=\"text\" class=\"form-control abracadabra-input\" id=\"" + inputId + "\" name=\"" + inputName + "\" value=\"" + inputValue + "\" data-original-value=\"" + inputValue + "\"" + tabToNextSelector + submitOnBlur + ">";
225
-
226
- html = "<span class=\"abracadabra-container\">" + openFormTag + hiddenMethodTags;
227
- html += "<div class=\"control-group\"><div class=\"abracadabra-input-and-button-wrapper\"><div class=\"abracadabra-input-container\">" + input + deletable + "</div>";
228
- html += "<div class=\"abracadabra-buttons\">" + buttons + "</div></div></form></span>";
229
-
230
- link.after(html);
231
- link.siblings(".abracadabra-container").find(".abracadabra-input").focus().val("").val(inputValue);
232
- });
246
+ $.abracadabra();
233
247
  });
@@ -1,5 +1,5 @@
1
1
  module Abracadabra
2
2
  module Rails
3
- VERSION = "1.1.4"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abracadabra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trevor Hinesley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-18 00:00:00.000000000 Z
11
+ date: 2014-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails