rapidfire 1.2.0 → 2.0.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 +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +33 -0
- data/app/helpers/rapidfire/application_helper.rb +3 -1
- data/app/models/rapidfire/questions/checkbox.rb +2 -2
- data/app/models/rapidfire/questions/select.rb +1 -1
- data/app/services/rapidfire/answer_group_builder.rb +11 -2
- data/app/services/rapidfire/question_group_results.rb +4 -2
- data/lib/rapidfire.rb +10 -0
- data/lib/rapidfire/version.rb +1 -1
- data/lib/tasks/change_delimiter_to_srsn.rake +16 -0
- metadata +35 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98a860721e84efa9238468ab8d4de455acfc1004
|
4
|
+
data.tar.gz: d4a2bbade0997c99ac53d8344dc07a7f56e67b80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 859a4f282ae1505193d540ef46137d229a5efc4d2797d2640cc47fcea265151145071617b404a7fbcf4c48a2eec5e2acb1e02ed54127b546894406b48badf545
|
7
|
+
data.tar.gz: d8f1a0e3645f7ceb8e84e11e407d0d75dbb6763dfbb827e7c27965e9364745324e968f8ef1883a9339636b6929da4ee8c1381842b79b32f31d2d1ef84165c44a
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -185,6 +185,39 @@ The typical flow about how to use this gem is:
|
|
185
185
|
creating questions fail.
|
186
186
|
|
187
187
|
|
188
|
+
## Notes on upgrading
|
189
|
+
##### Upgrading from 1.2.0 to 2.0.0
|
190
|
+
|
191
|
+
The default delimiter which is used to store options for questions like select
|
192
|
+
input, multiple answers for checkbox question is comma (,). This resulted in
|
193
|
+
problems where gem is unable to parse options properly if answers also contain
|
194
|
+
commas. For more information see [issue-19](https://github.com/code-mancers/rapidfire/issues/19).
|
195
|
+
|
196
|
+
Starting from version `2.0.0` default delimiter is changed to `\r\n`, but a
|
197
|
+
configuration is provided to change the delimiter. Please run this rake task
|
198
|
+
to make existing questions or stored answers to use new delimiter.
|
199
|
+
|
200
|
+
NOTE: Please take database backup before running this rake task.
|
201
|
+
|
202
|
+
```ruby
|
203
|
+
bundle exec rake rapidfire:change_delimiter_from_comma_to_srsn
|
204
|
+
```
|
205
|
+
|
206
|
+
|
207
|
+
If you dont want to make this change rightaway, and would like to use comma
|
208
|
+
as delimiter, then please use this initializer, but be warned that in future
|
209
|
+
delimiter will be hardcoded to `\r\n`:
|
210
|
+
|
211
|
+
|
212
|
+
```ruby
|
213
|
+
# /<path-to-app>/config/initializers/rapidfire.rb
|
214
|
+
|
215
|
+
Rapidfire.config do |config|
|
216
|
+
config.answers_delimiter = ','
|
217
|
+
end
|
218
|
+
```
|
219
|
+
|
220
|
+
|
188
221
|
## TODO
|
189
222
|
1. Add ability to sort questions, so that order is preserved.
|
190
223
|
2. Add multi tenant support.
|
@@ -6,7 +6,9 @@ module Rapidfire
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def checkbox_checked?(answer, option)
|
9
|
-
|
9
|
+
answers_delimiter = Rapidfire.answers_delimiter
|
10
|
+
answers = answer.answer_text.to_s.split(answers_delimiter)
|
11
|
+
answers.include?(option)
|
10
12
|
end
|
11
13
|
end
|
12
14
|
end
|
@@ -4,14 +4,14 @@ module Rapidfire
|
|
4
4
|
validates :answer_options, :presence => true
|
5
5
|
|
6
6
|
def options
|
7
|
-
answer_options.split(
|
7
|
+
answer_options.split(Rapidfire.answers_delimiter)
|
8
8
|
end
|
9
9
|
|
10
10
|
def validate_answer(answer)
|
11
11
|
super(answer)
|
12
12
|
|
13
13
|
if rules[:presence] == "1" || answer.answer_text.present?
|
14
|
-
answer.answer_text.split(
|
14
|
+
answer.answer_text.split(Rapidfire.answers_delimiter).each do |value|
|
15
15
|
answer.errors.add(:answer_text, :invalid) unless options.include?(value)
|
16
16
|
end
|
17
17
|
end
|
@@ -15,8 +15,17 @@ module Rapidfire
|
|
15
15
|
params.each do |question_id, answer_attributes|
|
16
16
|
if answer = @answer_group.answers.find { |a| a.question_id.to_s == question_id.to_s }
|
17
17
|
text = answer_attributes[:answer_text]
|
18
|
+
|
19
|
+
# in case of checkboxes, values are submitted as an array of
|
20
|
+
# strings. we will store answers as one big string separated
|
21
|
+
# by delimiter.
|
18
22
|
answer.answer_text =
|
19
|
-
text.is_a?(Array)
|
23
|
+
if text.is_a?(Array)
|
24
|
+
stripped_answers = strip_checkbox_answers(text)
|
25
|
+
stripped_answers.join(Rapidfire.answers_delimiter)
|
26
|
+
else
|
27
|
+
text
|
28
|
+
end
|
20
29
|
end
|
21
30
|
end
|
22
31
|
|
@@ -25,7 +34,7 @@ module Rapidfire
|
|
25
34
|
|
26
35
|
def save(options = {})
|
27
36
|
save!(options)
|
28
|
-
rescue
|
37
|
+
rescue ActiveRecord::ActiveRecordError => e
|
29
38
|
# repopulate answers here in case of failure as they are not getting updated
|
30
39
|
@answers = @question_group.questions.collect do |question|
|
31
40
|
@answer_group.answers.find { |a| a.question_id == question.id }
|
@@ -14,9 +14,11 @@ module Rapidfire
|
|
14
14
|
case question
|
15
15
|
when Rapidfire::Questions::Select, Rapidfire::Questions::Radio,
|
16
16
|
Rapidfire::Questions::Checkbox
|
17
|
-
answers = question.answers.map(&:answer_text).map
|
18
|
-
|
17
|
+
answers = question.answers.map(&:answer_text).map do |text|
|
18
|
+
text.to_s.split(Rapidfire.answers_delimiter)
|
19
|
+
end.flatten
|
19
20
|
|
21
|
+
answers.inject(Hash.new(0)) { |total, e| total[e] += 1; total }
|
20
22
|
when Rapidfire::Questions::Short, Rapidfire::Questions::Date,
|
21
23
|
Rapidfire::Questions::Long, Rapidfire::Questions::Numeric
|
22
24
|
question.answers.pluck(:answer_text)
|
data/lib/rapidfire.rb
CHANGED
@@ -3,4 +3,14 @@ require "rapidfire/engine"
|
|
3
3
|
module Rapidfire
|
4
4
|
class AccessDenied < StandardError
|
5
5
|
end
|
6
|
+
|
7
|
+
# configuration which will be used as delimiter in case answers are bunch
|
8
|
+
# of collection values. This is the default delimiter which is used by
|
9
|
+
# all the browsers.
|
10
|
+
mattr_accessor :answers_delimiter
|
11
|
+
self.answers_delimiter = "\r\n"
|
12
|
+
|
13
|
+
def self.config
|
14
|
+
yield(self)
|
15
|
+
end
|
6
16
|
end
|
data/lib/rapidfire/version.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
desc 'Earlier delimiter used to be comma(,), but for #19, delimter is changed to \r\n'
|
2
|
+
namespace :rapidfire do
|
3
|
+
task change_delimiter_from_comma_to_srsn: :environment do
|
4
|
+
Rapidfire::Question.transaction do
|
5
|
+
Rapidfire::Question.all.each do |question|
|
6
|
+
if question.is_a?(Rapidfire::Questions::Checkbox) ||
|
7
|
+
question.is_a?(Rapidfire::Questions::Select)
|
8
|
+
|
9
|
+
new_answer_options = question.answer_options.split(',')
|
10
|
+
.join(Rapidfire.answers_delimiter)
|
11
|
+
question.update_attributes!(answer_options: new_answer_options)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,125 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rapidfire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuva Kumar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.2.13
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.2.13
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: active_model_serializers
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.8.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.8.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: quiet_assets
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec-rails
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - '
|
73
|
+
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 2.14.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - '
|
80
|
+
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 2.14.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: shoulda
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: database_cleaner
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: factory_girl_rails
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
@@ -140,28 +140,28 @@ dependencies:
|
|
140
140
|
name: capybara-webkit
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: launchy
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- -
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- -
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
description: One stop solution for all survey related requirements! Its tad easy!.
|
@@ -171,6 +171,9 @@ executables: []
|
|
171
171
|
extensions: []
|
172
172
|
extra_rdoc_files: []
|
173
173
|
files:
|
174
|
+
- MIT-LICENSE
|
175
|
+
- README.md
|
176
|
+
- Rakefile
|
174
177
|
- app/assets/javascripts/rapidfire/application.js
|
175
178
|
- app/assets/stylesheets/rapidfire/application.css
|
176
179
|
- app/controllers/rapidfire/answer_groups_controller.rb
|
@@ -221,33 +224,33 @@ files:
|
|
221
224
|
- db/migrate/20130502195415_create_rapidfire_answer_groups.rb
|
222
225
|
- db/migrate/20130502195504_create_rapidfire_answers.rb
|
223
226
|
- lib/generators/rapidfire/views_generator.rb
|
227
|
+
- lib/rapidfire.rb
|
224
228
|
- lib/rapidfire/engine.rb
|
225
229
|
- lib/rapidfire/version.rb
|
226
|
-
- lib/
|
230
|
+
- lib/tasks/change_delimiter_to_srsn.rake
|
227
231
|
- lib/tasks/rapidfire_tasks.rake
|
228
|
-
- MIT-LICENSE
|
229
|
-
- Rakefile
|
230
|
-
- README.md
|
231
232
|
homepage: https://github.com/code-mancers/rapidfire
|
232
233
|
licenses: []
|
233
234
|
metadata: {}
|
234
|
-
post_install_message:
|
235
|
+
post_install_message: |
|
236
|
+
There is breaking delimiter change when upgrading to version 2.0.0.
|
237
|
+
Please see Readme for more information.
|
235
238
|
rdoc_options: []
|
236
239
|
require_paths:
|
237
240
|
- lib
|
238
241
|
required_ruby_version: !ruby/object:Gem::Requirement
|
239
242
|
requirements:
|
240
|
-
- -
|
243
|
+
- - ">="
|
241
244
|
- !ruby/object:Gem::Version
|
242
245
|
version: '0'
|
243
246
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
244
247
|
requirements:
|
245
|
-
- -
|
248
|
+
- - ">="
|
246
249
|
- !ruby/object:Gem::Version
|
247
250
|
version: '0'
|
248
251
|
requirements: []
|
249
252
|
rubyforge_project:
|
250
|
-
rubygems_version: 2.
|
253
|
+
rubygems_version: 2.4.2
|
251
254
|
signing_key:
|
252
255
|
specification_version: 4
|
253
256
|
summary: Surveys made easy.
|