canvas_sync 0.1.5 → 0.1.7
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/lib/canvas_sync/generators/templates/create_users.rb +1 -0
- data/lib/canvas_sync/importers/bulk_importer.rb +21 -4
- data/lib/canvas_sync/processors/provisioning_report_processor.rb +2 -1
- data/lib/canvas_sync/version.rb +1 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/{20170831221129_create_users.rb → 20170918221413_create_users.rb} +1 -0
- data/spec/dummy/db/schema.rb +3 -1
- data/spec/dummy/log/development.log +149 -0
- data/spec/dummy/log/test.log +0 -0
- metadata +4 -6
- data/spec/dummy/db/test.sqlite3 +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68b09dd9ca869bb37f08c0691ce54f1efa4abb7e
|
4
|
+
data.tar.gz: 6615009014df4ddcd3b20e602549658fd659e0f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7526df95cf7d7cd2a86d48c95ca57b4da54d9a6e94095318b0eefc5ec08dc37112072e0be0246b655715b21a0c593a0d49fbfc6cf44a6b5ad647ee6aa57188d
|
7
|
+
data.tar.gz: 92b7dd1398562e07cacb45a5b5c54aac29ee4e366b090dbc5fec31e44690d4a211872c6dfe3d0b93c5aa71de5bff3f39da8f82d933f26484516a1fe875c17fd1
|
@@ -36,15 +36,32 @@ module CanvasSync
|
|
36
36
|
|
37
37
|
private
|
38
38
|
|
39
|
-
def self.perform_import(klass,
|
39
|
+
def self.perform_import(klass, columns, rows, conflict_target)
|
40
40
|
return if rows.length == 0
|
41
|
-
|
42
|
-
klass.import(
|
41
|
+
columns = columns.dup
|
42
|
+
klass.import(columns, rows, validate: false, on_duplicate_key_update: {
|
43
43
|
conflict_target: conflict_target,
|
44
|
-
|
44
|
+
condition: condition_sql(klass, columns),
|
45
|
+
columns: columns
|
45
46
|
})
|
46
47
|
end
|
47
48
|
|
49
|
+
# This method generates SQL that looks like:
|
50
|
+
# (users.sis_id, users.email) IS DISTINCT FROM (EXCLUDED.sis_id, EXCLUDED.email)
|
51
|
+
#
|
52
|
+
# This prevents activerecord-import from setting the `updated_at` column for
|
53
|
+
# rows that haven't actually changed. This allows you to query for rows that have changed
|
54
|
+
# by doing something like:
|
55
|
+
#
|
56
|
+
# started_at = Time.now
|
57
|
+
# run_the_users_sync!
|
58
|
+
# changed = User.where("updated_at >= ?", started_at)
|
59
|
+
def self.condition_sql(klass, columns)
|
60
|
+
columns_str = columns.map { |c| "#{klass.quoted_table_name}.#{c}" }.join(", ")
|
61
|
+
excluded_str = columns.map { |c| "EXCLUDED.#{c}" }.join(", ")
|
62
|
+
"(#{columns_str}) IS DISTINCT FROM (#{excluded_str})"
|
63
|
+
end
|
64
|
+
|
48
65
|
def self.batch_size
|
49
66
|
batch_size = ENV['BULK_IMPORTER_BATCH_SIZE'].to_i
|
50
67
|
batch_size > 0 ? batch_size : DEFAULT_BATCH_SIZE
|
data/lib/canvas_sync/version.rb
CHANGED
Binary file
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
#
|
11
11
|
# It's strongly recommended that you check this file into your version control system.
|
12
12
|
|
13
|
-
ActiveRecord::Schema.define(version:
|
13
|
+
ActiveRecord::Schema.define(version: 20170918221413) do
|
14
14
|
|
15
15
|
create_table "canvas_sync_job_logs", force: :cascade do |t|
|
16
16
|
t.datetime "started_at"
|
@@ -18,6 +18,7 @@ ActiveRecord::Schema.define(version: 20170915210836) do
|
|
18
18
|
t.string "exception"
|
19
19
|
t.text "backtrace"
|
20
20
|
t.string "job_class"
|
21
|
+
t.string "status"
|
21
22
|
t.text "metadata"
|
22
23
|
t.text "job_arguments"
|
23
24
|
t.datetime "created_at", null: false
|
@@ -93,6 +94,7 @@ ActiveRecord::Schema.define(version: 20170915210836) do
|
|
93
94
|
t.string "first_name"
|
94
95
|
t.string "last_name"
|
95
96
|
t.string "status"
|
97
|
+
t.string "login_id"
|
96
98
|
t.datetime "created_at", null: false
|
97
99
|
t.datetime "updated_at", null: false
|
98
100
|
t.index ["canvas_user_id"], name: "index_users_on_canvas_user_id", unique: true
|
@@ -4239,4 +4239,153 @@ Migrating to CreateCanvasSyncJobLog (20170915210836)
|
|
4239
4239
|
SELECT sql
|
4240
4240
|
FROM sqlite_temp_master
|
4241
4241
|
WHERE name='index_users_on_canvas_user_id' AND type='index'
|
4242
|
+
[0m
|
4243
|
+
[1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
4244
|
+
[1m[35m (0.1ms)[0m [1m[34mSELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ?[0m [["key", "environment"]]
|
4245
|
+
[1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
4246
|
+
[1m[35m (0.1ms)[0m [1m[34mSELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ?[0m [["key", "environment"]]
|
4247
|
+
[1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
4248
|
+
[1m[35m (0.1ms)[0m [1m[34mSELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ?[0m [["key", "environment"]]
|
4249
|
+
[1m[35m (0.1ms)[0m [1m[34mSELECT sqlite_version(*)[0m
|
4250
|
+
[1m[35m (7.2ms)[0m [1m[35mCREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)[0m
|
4251
|
+
[1m[35m (1.1ms)[0m [1m[35mCREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m
|
4252
|
+
[1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
4253
|
+
Migrating to CreateEnrollments (20170905192509)
|
4254
|
+
[1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m
|
4255
|
+
[1m[35m (0.4ms)[0m [1m[35mCREATE TABLE "enrollments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "canvas_enrollment_id" bigint NOT NULL, "canvas_course_id" bigint, "course_sis_id" varchar, "canvas_user_id" bigint, "user_sis_id" varchar, "role" varchar, "role_id" integer, "canvas_section_id" bigint, "section_sis_id" varchar, "status" varchar, "base_role_type" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m
|
4256
|
+
[1m[35m (0.1ms)[0m [1m[35mCREATE UNIQUE INDEX "index_enrollments_on_canvas_enrollment_id" ON "enrollments" ("canvas_enrollment_id")[0m
|
4257
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4258
|
+
FROM sqlite_master
|
4259
|
+
WHERE name='index_enrollments_on_canvas_enrollment_id' AND type='index'
|
4260
|
+
UNION ALL
|
4261
|
+
SELECT sql
|
4262
|
+
FROM sqlite_temp_master
|
4263
|
+
WHERE name='index_enrollments_on_canvas_enrollment_id' AND type='index'
|
4264
|
+
[0m
|
4265
|
+
[1m[35m (0.1ms)[0m [1m[35mCREATE INDEX "index_enrollments_on_canvas_course_id" ON "enrollments" ("canvas_course_id")[0m
|
4266
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4267
|
+
FROM sqlite_master
|
4268
|
+
WHERE name='index_enrollments_on_canvas_course_id' AND type='index'
|
4269
|
+
UNION ALL
|
4270
|
+
SELECT sql
|
4271
|
+
FROM sqlite_temp_master
|
4272
|
+
WHERE name='index_enrollments_on_canvas_course_id' AND type='index'
|
4273
|
+
[0m
|
4274
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4275
|
+
FROM sqlite_master
|
4276
|
+
WHERE name='index_enrollments_on_canvas_enrollment_id' AND type='index'
|
4277
|
+
UNION ALL
|
4278
|
+
SELECT sql
|
4279
|
+
FROM sqlite_temp_master
|
4280
|
+
WHERE name='index_enrollments_on_canvas_enrollment_id' AND type='index'
|
4281
|
+
[0m
|
4282
|
+
[1m[35m (0.1ms)[0m [1m[35mCREATE INDEX "index_enrollments_on_canvas_user_id" ON "enrollments" ("canvas_user_id")[0m
|
4283
|
+
[1m[35mSQL (0.1ms)[0m [1m[32mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20170905192509"]]
|
4284
|
+
[1m[35m (1.3ms)[0m [1m[36mcommit transaction[0m
|
4285
|
+
Migrating to CreateTerms (20170906193506)
|
4286
|
+
[1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m
|
4287
|
+
[1m[35m (0.4ms)[0m [1m[35mCREATE TABLE "terms" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "canvas_term_id" integer NOT NULL, "name" varchar, "start_at" datetime, "end_at" datetime, "workflow_state" varchar, "grading_period_group_id" integer, "sis_id" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m
|
4288
|
+
[1m[35m (0.1ms)[0m [1m[35mCREATE UNIQUE INDEX "index_terms_on_canvas_term_id" ON "terms" ("canvas_term_id")[0m
|
4289
|
+
[1m[35mSQL (0.1ms)[0m [1m[32mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20170906193506"]]
|
4290
|
+
[1m[35m (1.4ms)[0m [1m[36mcommit transaction[0m
|
4291
|
+
Migrating to CreateSections (20170906203438)
|
4292
|
+
[1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m
|
4293
|
+
[1m[35m (0.4ms)[0m [1m[35mCREATE TABLE "sections" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "canvas_section_id" bigint NOT NULL, "sis_id" varchar, "canvas_course_id" bigint, "name" varchar, "status" varchar, "start_date" datetime, "end_date" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m
|
4294
|
+
[1m[35m (0.1ms)[0m [1m[35mCREATE UNIQUE INDEX "index_sections_on_canvas_section_id" ON "sections" ("canvas_section_id")[0m
|
4295
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4296
|
+
FROM sqlite_master
|
4297
|
+
WHERE name='index_sections_on_canvas_section_id' AND type='index'
|
4298
|
+
UNION ALL
|
4299
|
+
SELECT sql
|
4300
|
+
FROM sqlite_temp_master
|
4301
|
+
WHERE name='index_sections_on_canvas_section_id' AND type='index'
|
4302
|
+
[0m
|
4303
|
+
[1m[35m (0.1ms)[0m [1m[35mCREATE INDEX "index_sections_on_canvas_course_id" ON "sections" ("canvas_course_id")[0m
|
4304
|
+
[1m[35mSQL (0.1ms)[0m [1m[32mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20170906203438"]]
|
4305
|
+
[1m[35m (0.8ms)[0m [1m[36mcommit transaction[0m
|
4306
|
+
Migrating to CreateCourses (20170914181345)
|
4307
|
+
[1m[35m (0.0ms)[0m [1m[36mbegin transaction[0m
|
4308
|
+
[1m[35m (0.3ms)[0m [1m[35mCREATE TABLE "courses" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "canvas_course_id" bigint NOT NULL, "sis_id" varchar, "short_name" varchar, "long_name" varchar, "status" varchar, "canvas_account_id" integer, "canvas_term_id" integer, "term_sis_id" integer, "start_date" datetime, "end_date" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m
|
4309
|
+
[1m[35m (0.1ms)[0m [1m[35mCREATE UNIQUE INDEX "index_courses_on_canvas_course_id" ON "courses" ("canvas_course_id")[0m
|
4310
|
+
[1m[35mSQL (0.2ms)[0m [1m[32mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20170914181345"]]
|
4311
|
+
[1m[35m (1.0ms)[0m [1m[36mcommit transaction[0m
|
4312
|
+
Migrating to CreateCanvasSyncJobLog (20170915210836)
|
4313
|
+
[1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m
|
4314
|
+
[1m[35m (0.3ms)[0m [1m[35mCREATE TABLE "canvas_sync_job_logs" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "started_at" datetime, "completed_at" datetime, "exception" varchar, "backtrace" text, "job_class" varchar, "status" varchar, "metadata" text, "job_arguments" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m
|
4315
|
+
[1m[35mSQL (0.1ms)[0m [1m[32mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20170915210836"]]
|
4316
|
+
[1m[35m (0.8ms)[0m [1m[36mcommit transaction[0m
|
4317
|
+
Migrating to CreateUsers (20170918221413)
|
4318
|
+
[1m[35m (0.0ms)[0m [1m[36mbegin transaction[0m
|
4319
|
+
[1m[35m (0.3ms)[0m [1m[35mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "canvas_user_id" bigint NOT NULL, "sis_id" varchar, "email" varchar, "first_name" varchar, "last_name" varchar, "status" varchar, "login_id" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m
|
4320
|
+
[1m[35m (0.1ms)[0m [1m[35mCREATE UNIQUE INDEX "index_users_on_canvas_user_id" ON "users" ("canvas_user_id")[0m
|
4321
|
+
[1m[35mSQL (0.1ms)[0m [1m[32mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20170918221413"]]
|
4322
|
+
[1m[35m (1.0ms)[0m [1m[36mcommit transaction[0m
|
4323
|
+
[1m[36mActiveRecord::InternalMetadata Load (0.1ms)[0m [1m[34mSELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ?[0m [["key", "environment"], ["LIMIT", 1]]
|
4324
|
+
[1m[35m (0.0ms)[0m [1m[36mbegin transaction[0m
|
4325
|
+
[1m[35mSQL (0.3ms)[0m [1m[32mINSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?)[0m [["key", "environment"], ["value", "development"], ["created_at", "2017-09-18 22:14:19.660824"], ["updated_at", "2017-09-18 22:14:19.660824"]]
|
4326
|
+
[1m[35m (1.0ms)[0m [1m[36mcommit transaction[0m
|
4327
|
+
[1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
4328
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4329
|
+
FROM sqlite_master
|
4330
|
+
WHERE name='index_courses_on_canvas_course_id' AND type='index'
|
4331
|
+
UNION ALL
|
4332
|
+
SELECT sql
|
4333
|
+
FROM sqlite_temp_master
|
4334
|
+
WHERE name='index_courses_on_canvas_course_id' AND type='index'
|
4335
|
+
[0m
|
4336
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4337
|
+
FROM sqlite_master
|
4338
|
+
WHERE name='index_enrollments_on_canvas_user_id' AND type='index'
|
4339
|
+
UNION ALL
|
4340
|
+
SELECT sql
|
4341
|
+
FROM sqlite_temp_master
|
4342
|
+
WHERE name='index_enrollments_on_canvas_user_id' AND type='index'
|
4343
|
+
[0m
|
4344
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4345
|
+
FROM sqlite_master
|
4346
|
+
WHERE name='index_enrollments_on_canvas_course_id' AND type='index'
|
4347
|
+
UNION ALL
|
4348
|
+
SELECT sql
|
4349
|
+
FROM sqlite_temp_master
|
4350
|
+
WHERE name='index_enrollments_on_canvas_course_id' AND type='index'
|
4351
|
+
[0m
|
4352
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4353
|
+
FROM sqlite_master
|
4354
|
+
WHERE name='index_enrollments_on_canvas_enrollment_id' AND type='index'
|
4355
|
+
UNION ALL
|
4356
|
+
SELECT sql
|
4357
|
+
FROM sqlite_temp_master
|
4358
|
+
WHERE name='index_enrollments_on_canvas_enrollment_id' AND type='index'
|
4359
|
+
[0m
|
4360
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4361
|
+
FROM sqlite_master
|
4362
|
+
WHERE name='index_sections_on_canvas_course_id' AND type='index'
|
4363
|
+
UNION ALL
|
4364
|
+
SELECT sql
|
4365
|
+
FROM sqlite_temp_master
|
4366
|
+
WHERE name='index_sections_on_canvas_course_id' AND type='index'
|
4367
|
+
[0m
|
4368
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4369
|
+
FROM sqlite_master
|
4370
|
+
WHERE name='index_sections_on_canvas_section_id' AND type='index'
|
4371
|
+
UNION ALL
|
4372
|
+
SELECT sql
|
4373
|
+
FROM sqlite_temp_master
|
4374
|
+
WHERE name='index_sections_on_canvas_section_id' AND type='index'
|
4375
|
+
[0m
|
4376
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4377
|
+
FROM sqlite_master
|
4378
|
+
WHERE name='index_terms_on_canvas_term_id' AND type='index'
|
4379
|
+
UNION ALL
|
4380
|
+
SELECT sql
|
4381
|
+
FROM sqlite_temp_master
|
4382
|
+
WHERE name='index_terms_on_canvas_term_id' AND type='index'
|
4383
|
+
[0m
|
4384
|
+
[1m[35m (0.1ms)[0m [1m[34m SELECT sql
|
4385
|
+
FROM sqlite_master
|
4386
|
+
WHERE name='index_users_on_canvas_user_id' AND type='index'
|
4387
|
+
UNION ALL
|
4388
|
+
SELECT sql
|
4389
|
+
FROM sqlite_temp_master
|
4390
|
+
WHERE name='index_users_on_canvas_user_id' AND type='index'
|
4242
4391
|
[0m
|
data/spec/dummy/log/test.log
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canvas_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nate Collings
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -346,13 +346,12 @@ files:
|
|
346
346
|
- spec/dummy/config/routes.rb
|
347
347
|
- spec/dummy/config/secrets.yml
|
348
348
|
- spec/dummy/db/development.sqlite3
|
349
|
-
- spec/dummy/db/migrate/20170831221129_create_users.rb
|
350
349
|
- spec/dummy/db/migrate/20170905192509_create_enrollments.rb
|
351
350
|
- spec/dummy/db/migrate/20170906193506_create_terms.rb
|
352
351
|
- spec/dummy/db/migrate/20170906203438_create_sections.rb
|
353
352
|
- spec/dummy/db/migrate/20170914181345_create_courses.rb
|
353
|
+
- spec/dummy/db/migrate/20170918221413_create_users.rb
|
354
354
|
- spec/dummy/db/schema.rb
|
355
|
-
- spec/dummy/db/test.sqlite3
|
356
355
|
- spec/dummy/log/development.log
|
357
356
|
- spec/dummy/log/test.log
|
358
357
|
- spec/factories/course_factory.rb
|
@@ -430,13 +429,12 @@ test_files:
|
|
430
429
|
- spec/dummy/config/routes.rb
|
431
430
|
- spec/dummy/config/secrets.yml
|
432
431
|
- spec/dummy/db/development.sqlite3
|
433
|
-
- spec/dummy/db/migrate/20170831221129_create_users.rb
|
434
432
|
- spec/dummy/db/migrate/20170905192509_create_enrollments.rb
|
435
433
|
- spec/dummy/db/migrate/20170906193506_create_terms.rb
|
436
434
|
- spec/dummy/db/migrate/20170906203438_create_sections.rb
|
437
435
|
- spec/dummy/db/migrate/20170914181345_create_courses.rb
|
436
|
+
- spec/dummy/db/migrate/20170918221413_create_users.rb
|
438
437
|
- spec/dummy/db/schema.rb
|
439
|
-
- spec/dummy/db/test.sqlite3
|
440
438
|
- spec/dummy/log/development.log
|
441
439
|
- spec/dummy/log/test.log
|
442
440
|
- spec/factories/course_factory.rb
|
data/spec/dummy/db/test.sqlite3
DELETED
Binary file
|