learn_together 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b7ab3fd2602b6badc44b7559c4c186fa0ce22ebd
4
+ data.tar.gz: 742c49d386e5d5eb80b5932759120aeb7139b90f
5
+ SHA512:
6
+ metadata.gz: 09c71f0f21ea3f458fe740fbd59ce0199d72bd7b9a9287444aedeb99e0ab91378e0d21c80a633e54124fae1f1b4ce547f02edb13fc37d22c979359459b520305
7
+ data.tar.gz: c514082affc49a624aa1adfa867afa15b23716344cbd6420566177c52371a9dc5cc6e7006efd2b4ea8c8c89229204314e57a810879992af9e3cc1a59adf47fc4
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.1
4
+ before_install: gem install bundler -v 1.11.2
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in learn_together.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 TODO: Write your name
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,253 @@
1
+ # LearnTogether
2
+
3
+ This gem is meant to be used to group Learn student batches into groups for tables, labs and projects.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'learn_together'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install learn_together
20
+
21
+ ## Usage
22
+
23
+ The Learn Together gem is meant to be used from within another project, like a Rails app. The gem can take in any collection of student-like objects, along with a few specifications, and generate groups of students accordingly.
24
+
25
+ #### What's a 'student-like object?'
26
+
27
+ The Learn Together gem can take in a collection of objects that respond to a `#completed_lesson_count_for_active_track` method *or* a collection of hashes, each of which has a key of `:completed_lesson_count_for_active_track`.
28
+
29
+ This is because the gem can generate groups based on similar progress. The gem uses the total number of completed lessons for a given student's active track as a metric with which to measure progress and thereby sort students.
30
+
31
+ #### These student-like objects sound great! Where can I get some?
32
+
33
+ You can hit this Learn API endpoint for your batch to retrieve a JSON payload describing Learn students.
34
+
35
+ ```bash
36
+ GET http://leanr.co.api/batches/:batch_id/users
37
+ ```
38
+
39
+ The payload for each student will include an attribute, `"completed_lesson_count_for_active_track"`. You can either use this data to instantiate `Student` objects of your own, OR, you can simply `JSON.parse` the payload, and pass student-like hashes to the gem.
40
+
41
+ *Important:* If you give the gem a collection of student objects, instantiated from student class you yourself defined, then the gem will return to you groups of these student objects. If you give the gem a collection of hashes, each of which describe a student, the gem will return to you groups of these student hashes, sorted/grouped accordingly.
42
+
43
+ #### Using the Gem
44
+
45
+ Once you have your student collection, you can call the gem with a number of different arguments.
46
+
47
+ **Student groups with n number of students, based on progress**
48
+
49
+ ```ruby
50
+ LearnTogether::GroupMaker.new.run(collection: <collection of student-like objects>, groups_of: some_number, sort_type: "progress")
51
+ ```
52
+
53
+ For example:
54
+
55
+ ```ruby
56
+ students = Student.all # assuming you have a database full of students with the necessary .completed_lesson_for_active_track attribute
57
+
58
+ LearnTogether::GroupMaker.new.run(collection: students, groups_of: 2, sort_type: "progress")
59
+ ```
60
+
61
+ returns:
62
+
63
+ ```ruby
64
+ [[#<Student:0x007fc0a1344450
65
+ @completed_lesson_count_for_active_track=1,
66
+ @first_name=nil,
67
+ @github_username="destany-wintheiser",
68
+ @last_name=nil>,
69
+ #<Student:0x007fc0a1344810
70
+ @completed_lesson_count_for_active_track=1,
71
+ @first_name=nil,
72
+ @github_username="rowena-larson",
73
+ @last_name=nil>],
74
+ [#<Student:0x007fc0a1344608
75
+ @completed_lesson_count_for_active_track=2,
76
+ @first_name=nil, @github_username="nakia", @last_name=nil>,
77
+ #<Student:0x007fc0a1344798
78
+ @completed_lesson_count_for_active_track=3,
79
+ @first_name=nil,
80
+ @github_username="fletcher-fisher",
81
+ @last_name=nil>],
82
+ [#<Student:0x007fc0a13446f8
83
+ @completed_lesson_count_for_active_track=3,
84
+ @first_name=nil,
85
+ @github_username="francesca-bashirian",
86
+ @last_name=nil>,
87
+ #<Student:0x007fc0a13448b0
88
+ @completed_lesson_count_for_active_track=3,
89
+ @first_name=nil,
90
+ @github_username="meaghan", @last_name=nil>],
91
+ [#<Student:0x007fc0a1344c20
92
+ @completed_lesson_count_for_active_track=4,
93
+ @first_name=nil, @github_username="keeley",
94
+ @last_name=nil>,
95
+ #<Student:0x007fc0a1344478
96
+ @completed_lesson_count_for_active_track=4,
97
+ @first_name=nil,
98
+ @github_username="german", @last_name=nil>],
99
+ [#<Student:0x007fc0a13447e8
100
+ @completed_lesson_count_for_active_track=4,
101
+ @first_name=nil,
102
+ @github_username="eleazar-beatty",
103
+ @last_name=nil>,
104
+ #<Student:0x007fc0a1344950
105
+ @completed_lesson_count_for_active_track=4,
106
+ @first_name=nil, @github_username="ivy", @last_name=nil>],
107
+ [#<Student:0x007fc0a13449f0
108
+ @completed_lesson_count_for_active_track=4,
109
+ @first_name=nil, @github_username="ernestina",
110
+ @last_name=nil>,
111
+ #<Student:0x007fc0a1344bf8
112
+ @completed_lesson_count_for_active_track=5,
113
+ @first_name=nil, @github_username="erling",
114
+ @last_name=nil>],
115
+ [#<Student:0x007fc0a1344a40
116
+ @completed_lesson_count_for_active_track=5,
117
+ @first_name=nil, @github_username="heloise-toy",
118
+ @last_name=nil>,
119
+ #<Student:0x007fc0a13449a0
120
+ @completed_lesson_count_for_active_track=5,
121
+ @first_name=nil,
122
+ @github_username="quinten-botsford",
123
+ @last_name=nil>],
124
+ [#<Student:0x007fc0a13444c8
125
+ @completed_lesson_count_for_active_track=6,
126
+ @first_name=nil,
127
+ @github_username="janick-feeney",
128
+ @last_name=nil>,
129
+ #<Student:0x007fc0a13446d0
130
+ @completed_lesson_count_for_active_track=6,
131
+ @first_name=nil,
132
+ @github_username="trevor-mcclure",
133
+ @last_name=nil>],
134
+ [#<Student:0x007fc0a1344748
135
+ @completed_lesson_count_for_active_track=7,
136
+ @first_name=nil, @github_username="maxie-price",
137
+ @last_name=nil>,
138
+ #<Student:0x007fc0a1344b30
139
+ @completed_lesson_count_for_active_track=7,
140
+ @first_name=nil,
141
+ @github_username="mable-luettgen",
142
+ @last_name=nil>],
143
+ [#<Student:0x007fc0a13449c8
144
+ @completed_lesson_count_for_active_track=7,
145
+ @first_name=nil,
146
+ @github_username="jailyn-okeefe",
147
+ @last_name=nil>,
148
+ #<Student:0x007fc0a1344978
149
+ @completed_lesson_count_for_active_track=7,
150
+ @first_name=nil, @github_username="yvonne",
151
+ @last_name=nil>],
152
+ [#<Student:0x007fc0a1344888
153
+ @completed_lesson_count_for_active_track=7,
154
+ @first_name=nil, @github_username="bobby",
155
+ @last_name=nil>,
156
+ #<Student:0x007fc0a13444f0
157
+ @completed_lesson_count_for_active_track=7,
158
+ @first_name=nil, @github_username="jerrold",
159
+ @last_name=nil>],
160
+ [#<Student:0x007fc0a1344590
161
+ @completed_lesson_count_for_active_track=7,
162
+ @first_name=nil, @github_username="vivianne",
163
+ @last_name=nil>,
164
+ #<Student:0x007fc0a1344428
165
+ @completed_lesson_count_for_active_track=8,
166
+ @first_name=nil,
167
+ @github_username="jaden-wintheiser",
168
+ @last_name=nil>],
169
+ [#<Student:0x007fc0a1344b80
170
+ @completed_lesson_count_for_active_track=8,
171
+ @first_name=nil, @github_username="obie", @last_name=nil>,
172
+ #<Student:0x007fc0a1344860
173
+ @completed_lesson_count_for_active_track=8,
174
+ @first_name=nil, @github_username="sydnie",
175
+ @last_name=nil>],
176
+ [#<Student:0x007fc0a1344770
177
+ @completed_lesson_count_for_active_track=8,
178
+ @first_name=nil,
179
+ @github_username="evelyn-corkery",
180
+ @last_name=nil>,
181
+ #<Student:0x007fc0a1344518
182
+ @completed_lesson_count_for_active_track=8,
183
+ @first_name=nil, @github_username="ashley",
184
+ @last_name=nil>],
185
+ [#<Student:0x007fc0a1344900
186
+ @completed_lesson_count_for_active_track=9,
187
+ @first_name=nil, @github_username="carey", @last_name=nil>,
188
+ #<Student:0x007fc0a1344838
189
+ @completed_lesson_count_for_active_track=9,
190
+ @first_name=nil,
191
+ @github_username="rosina-carter",
192
+ @last_name=nil>],
193
+ [#<Student:0x007fc0a1344a18
194
+ @completed_lesson_count_for_active_track=9,
195
+ @first_name=nil,
196
+ @github_username="mose-nikolaus",
197
+ @last_name=nil>,
198
+ #<Student:0x007fc0a1344720
199
+ @completed_lesson_count_for_active_track=10,
200
+ @first_name=nil,
201
+ @github_username="aurore-feeney",
202
+ @last_name=nil>],
203
+ [#<Student:0x007fc0a1344928
204
+ @completed_lesson_count_for_active_track=10,
205
+ @first_name=nil,
206
+ @github_username="maurice-collier",
207
+ @last_name=nil>,
208
+ #<Student:0x007fc0a1344b58
209
+ @completed_lesson_count_for_active_track=10,
210
+ @first_name=nil,
211
+ @github_username="valentin-langworth",
212
+ @last_name=nil>,
213
+ #<Student:0x007fc0a13445b8
214
+ @completed_lesson_count_for_active_track=10,
215
+ @first_name=nil, @github_username="andreanne",
216
+ @last_name=nil>]
217
+ ]
218
+ ```
219
+
220
+ We can see that the return of the `#run` method is an array of arrays, in which each child array represents one group of students and contains the list of the students in that group. In this case, we assume the original student collection contained 35 students. So, `#run` returned an array of 17 arrays, each of which contains two students, except for the last one, which contains 3 students.
221
+
222
+ **Student groups with n number of students, sorted randomly**
223
+
224
+ ```ruby
225
+ LearnTogether::GroupMaker.new.run(collection: <collection of student-like objects>, groups_of: some_number, sort_type: "random")
226
+ ```
227
+
228
+ For example:
229
+
230
+ ```ruby
231
+ students = Student.all # assuming you have a database full of students with the necessary .completed_lesson_for_active_track attribute
232
+
233
+ LearnTogether::GroupMaker.new.run(collection: students, groups_of: 3, sort_type: "random")
234
+ ```
235
+
236
+ **Students into n number of groups**
237
+
238
+ ```ruby
239
+ LearnTogether::GroupMaker.new.run(collection: <collection of student-like objects>, number_of_groups: 3)
240
+ ```
241
+
242
+ This will return an array of three smaller arrays, each of which contains the appropriate number of students.
243
+
244
+ ## Development
245
+
246
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
247
+
248
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
249
+
250
+ ## License
251
+
252
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
253
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "learn_together"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'learn_together/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "learn_together"
8
+ spec.version = LearnTogether::VERSION
9
+ spec.authors = ["sophie debenedetto"]
10
+ spec.email = ["sophie.debenedetto@gmail.com"]
11
+
12
+ spec.summary = %q{tool for Flatiron School instructors to group students for projects}
13
+ spec.homepage = "https://github.com/flatiron-school/learn-together-gem"
14
+ spec.license = "MIT"
15
+
16
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
+ # delete this section to allow pushing this gem to any host.
18
+ if spec.respond_to?(:metadata)
19
+ spec.metadata['allowed_push_host'] = "https://rubygems.org/"
20
+ else
21
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
+ end
23
+
24
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ spec.bindir = "exe"
26
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
+ spec.require_paths = ["lib"]
28
+
29
+ spec.add_development_dependency "bundler", "~> 1.11"
30
+ spec.add_development_dependency "rake", "~> 10.0"
31
+ spec.add_development_dependency "rspec", "~> 3.0"
32
+ spec.add_development_dependency "pry"
33
+ spec.add_dependency 'activesupport', '~> 5.0'
34
+ end
@@ -0,0 +1,86 @@
1
+ require 'ostruct'
2
+ require "learn_together/version"
3
+ require 'learn_together/generator'
4
+ require 'active_support/core_ext/hash'
5
+
6
+ module LearnTogether
7
+ class GroupMaker
8
+ VALID_ARGS = {
9
+ valid_keys: ["groups_of", "collection", "sort_type", "number_of_groups"],
10
+ sort_type: ["random", "progress"]
11
+ }
12
+
13
+ attr_accessor :options
14
+
15
+ def run(options)
16
+ @options = ActiveSupport::HashWithIndifferentAccess.new(options)
17
+ validate_args
18
+ students = Student.new(options[:collection]).generate_batch_students
19
+ generator = Generator.new(students: students, groups_of: options[:groups_of], number_of_groups: options[:number_of_groups], sort_type: options[:sort_type])
20
+ generator.make_groups
21
+ end
22
+
23
+ def validate_args
24
+ (has_valid_keys? && has_valid_values? && has_valid_key_combination?) ? true : (raise GroupMakerArgError.new)
25
+ end
26
+
27
+ def has_valid_keys?
28
+ options.keys.all? {|key| VALID_ARGS[:valid_keys].include?(key)}
29
+ end
30
+
31
+ def has_valid_key_combination?
32
+ !(options.keys.include?("groups_of") && options.keys.include?("number_of_groups"))
33
+ end
34
+
35
+ def has_valid_values?
36
+ if options["sort_type"]
37
+ if VALID_ARGS[:sort_type].include?(options["sort_type"])
38
+ true
39
+ else
40
+ false
41
+ end
42
+ else
43
+ true
44
+ end
45
+ end
46
+ end
47
+
48
+ class GroupMakerArgError < StandardError
49
+ def initialize(msg="must pass arguments of: student collection, groups_of (i.e. groups_of: 4), sort_type (i.e. sort_type: 'random') OR student collection and number of groups (i.e. number_of_groups: 3)")
50
+ super
51
+ end
52
+ end
53
+
54
+ class Student
55
+ attr_accessor :collection
56
+
57
+ def initialize(collection)
58
+ @collection = collection
59
+ end
60
+
61
+ def generate_batch_students
62
+ if student_hash_type
63
+ return collection.collect {|s| OpenStruct.new(s)}
64
+ elsif student_instance_object_type
65
+ return collection
66
+ else
67
+ raise StudentTypeError.new
68
+ end
69
+ end
70
+
71
+ def student_hash_type
72
+ collection.first.respond_to?(:[]) && (collection.first[:completed_lesson_count_for_active_track] || collection.first["completed_lesson_count_for_active_track"])
73
+ end
74
+
75
+ def student_instance_object_type
76
+ collection.first.respond_to?(:completed_lesson_count_for_active_track)
77
+ end
78
+ end
79
+
80
+ class StudentTypeError < StandardError
81
+ def initialize(msg="student collection must contain student objects that respond to a #completed_lesson_count_for_active_track method or have a key of :completed_lesson_count_for_active_track_count")
82
+ super
83
+ end
84
+ end
85
+ end
86
+
@@ -0,0 +1,117 @@
1
+ class Generator
2
+ attr_accessor :students, :groups_of, :sort_type, :number_of_groups
3
+
4
+ def initialize(students:, groups_of: nil, sort_type:, number_of_groups: nil)
5
+ @students = students
6
+ @groups_of = groups_of
7
+ @number_of_groups = number_of_groups
8
+ @sort_type = sort_type
9
+ end
10
+
11
+ def make_groups
12
+ if groups_of_n_students?
13
+ GroupsOfNStudents.new(students: students, groups_of: groups_of, sort_type: sort_type).make_groups
14
+ elsif n_number_of_groups?
15
+ NNumberOfGroups.new(students: students, number_of_groups: number_of_groups).make_groups
16
+ end
17
+ end
18
+
19
+ def groups_of_n_students?
20
+ !!groups_of
21
+ end
22
+
23
+ def n_number_of_groups?
24
+ !!number_of_groups
25
+ end
26
+
27
+ class GroupsOfNStudents
28
+
29
+ attr_accessor :groups_of, :sort_type, :students, :final_groups, :number_of_groups
30
+
31
+ def initialize(students:, groups_of:, sort_type:)
32
+ @students = students
33
+ @groups_of = groups_of
34
+ @sort_type = sort_type
35
+ @final_groups = []
36
+ end
37
+
38
+
39
+ def make_groups
40
+ if sort_by_random?
41
+ form_random_groups
42
+ elsif sort_by_progress?
43
+ form_progress_based_groups
44
+ end
45
+ final_groups
46
+ end
47
+
48
+
49
+ def sort_by_random?
50
+ sort_type == "random"
51
+ end
52
+
53
+ def sort_by_progress?
54
+ sort_type == "progress"
55
+ end
56
+
57
+ def form_random_groups
58
+ students.shuffle.each_slice(groups_of.to_i) { |students| final_groups << students }
59
+ check_student_distribution
60
+ end
61
+
62
+ def form_progress_based_groups
63
+ students.sort_by {|s| s.completed_lesson_count_for_active_track}.each_slice(groups_of.to_i) { |students| final_groups << students }
64
+ check_student_distribution
65
+ end
66
+
67
+ def check_student_distribution
68
+ if leftover_students
69
+ final_groups.pop.each_with_index do |student, i|
70
+ final_groups["-#{i + 1}".to_i] << student
71
+ end
72
+ end
73
+ end
74
+
75
+ def leftover_students
76
+ students.length % groups_of <= (groups_of - 2) || students.length % groups_of == 1
77
+ end
78
+ end
79
+
80
+ class NNumberOfGroups
81
+ attr_accessor :students, :number_of_groups, :students_per_group, :final_groups
82
+
83
+ def initialize(students:, number_of_groups:)
84
+ @students = students
85
+ @number_of_groups = number_of_groups
86
+ @final_groups = []
87
+ end
88
+
89
+ def make_groups
90
+ make_initial_distribution
91
+ adjust_distribution
92
+ final_groups
93
+ end
94
+
95
+ def students_per_group
96
+ @students_per_group = students.length / number_of_groups
97
+ end
98
+
99
+ def make_initial_distribution
100
+ students.each_slice(students_per_group) do |slice|
101
+ final_groups << slice
102
+ end
103
+ end
104
+
105
+ def adjust_distribution
106
+ if final_groups.last.size < students_per_group && final_groups.length > number_of_groups
107
+ final_groups.pop.each_with_index do |remaining_student, i|
108
+ final_groups[i] << remaining_student
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+
115
+
116
+ end
117
+
@@ -0,0 +1,3 @@
1
+ module LearnTogether
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: learn_together
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - sophie debenedetto
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-07-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activesupport
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5.0'
83
+ description:
84
+ email:
85
+ - sophie.debenedetto@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
+ - Gemfile
94
+ - LICENSE.txt
95
+ - README.md
96
+ - Rakefile
97
+ - bin/console
98
+ - bin/setup
99
+ - learn_together.gemspec
100
+ - lib/learn_together.rb
101
+ - lib/learn_together/generator.rb
102
+ - lib/learn_together/version.rb
103
+ homepage: https://github.com/flatiron-school/learn-together-gem
104
+ licenses:
105
+ - MIT
106
+ metadata:
107
+ allowed_push_host: https://rubygems.org/
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 2.5.1
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: tool for Flatiron School instructors to group students for projects
128
+ test_files: []