panda_pal 5.4.0.beta7 → 5.4.1
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 → app/jobs}/panda_pal/jobs/grade_passback_job.rb +2 -2
- data/app/models/panda_pal/organization.rb +4 -0
- data/lib/panda_pal.rb +25 -0
- data/lib/panda_pal/engine.rb +4 -0
- data/lib/panda_pal/helpers/session_replacement.rb +5 -2
- data/lib/panda_pal/version.rb +1 -1
- metadata +34 -40
- data/app/lib/panda_pal/batch_processor.rb +0 -41
- data/lib/panda_pal/ability_mixin.rb +0 -85
- data/spec/dummy/log/development.log +0 -56
- data/spec/dummy/log/test.log +0 -83348
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 682c93cece4f79d9c12499c2ef13e31ac9492d1f96640717915c07f1944318de
|
4
|
+
data.tar.gz: 782c6bac9411aaa23d0a6d34ac0914e5a241b8b872582acff995bec51f8abfb9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0454692740709dc1be385443d5928631b87a9420a5a7666d7ef97ce18c55ff3776e3c3062ba1dfa2a236b69346b41c6139fa066a852faeb2aa667d0181c37317'
|
7
|
+
data.tar.gz: 699eff3766812c8bd3482df79e44a9f198865b2f556a92164496c22bfbfb4fb6e331c061e62467098e1c5ea7a495c591e54c37512944048e9226b3b9af30d083
|
@@ -4,10 +4,10 @@ module PandaPal::Jobs
|
|
4
4
|
class GradePassbackFailure < StandardError; end
|
5
5
|
|
6
6
|
class GradePassbackJob < ActiveJob::Base
|
7
|
-
sidekiq_options retry: 5
|
8
|
-
|
9
7
|
attr_accessor :organization, :opts
|
10
8
|
|
9
|
+
sidekiq_options(retry: 5) if respond_to?(:sidekiq_options)
|
10
|
+
|
11
11
|
# Required values for opts: passback_guid, passback_url, score AND/OR total_score.
|
12
12
|
# Possible values for opts: cdata_text, text, url, submitted_at, lti_launch_url.
|
13
13
|
# passback_guid is sent in launch params as 'lis_result_sourcedid'.
|
data/lib/panda_pal.rb
CHANGED
@@ -13,6 +13,7 @@ module PandaPal
|
|
13
13
|
@@lti_properties = {}
|
14
14
|
@@lti_environments = {}
|
15
15
|
@@lti_custom_params = {}
|
16
|
+
@@extensions = {}
|
16
17
|
@@lti_private_key = nil
|
17
18
|
|
18
19
|
def self.lti_options= lti_options
|
@@ -70,8 +71,30 @@ module PandaPal
|
|
70
71
|
@@lti_private_key = k
|
71
72
|
end
|
72
73
|
|
74
|
+
def self.register_extension(type, modul)
|
75
|
+
type = normalize_ext_type(type)
|
76
|
+
@@extensions[type] ||= []
|
77
|
+
@@extensions[type] << modul.to_s
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.extensions_for(type)
|
81
|
+
(@@extensions[normalize_ext_type(type)] || []).uniq
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.resolved_extensions_for(type)
|
85
|
+
extensions_for(type).map do |ext|
|
86
|
+
ext.safe_constantize
|
87
|
+
end.compact
|
88
|
+
end
|
89
|
+
|
73
90
|
private
|
74
91
|
|
92
|
+
def self.normalize_ext_type(type)
|
93
|
+
type = type.to_s
|
94
|
+
type = "#{self.to_s}::#{type}" unless type.starts_with?('::') || type.starts_with?(self.to_s)
|
95
|
+
type
|
96
|
+
end
|
97
|
+
|
75
98
|
def self.validate_pandapal_config!
|
76
99
|
errors = []
|
77
100
|
validate_lti_navigation(errors)
|
@@ -89,3 +112,5 @@ module PandaPal
|
|
89
112
|
errors
|
90
113
|
end
|
91
114
|
end
|
115
|
+
|
116
|
+
PandaPal.register_extension 'Organization', '::OrganizationExtension'
|
data/lib/panda_pal/engine.rb
CHANGED
@@ -43,6 +43,10 @@ module PandaPal
|
|
43
43
|
ActiveSupport.on_load(:active_record) do
|
44
44
|
if defined?(Sidekiq) && Sidekiq.server? && PandaPal::Organization.respond_to?(:sync_schedules)
|
45
45
|
PandaPal::Organization.sync_schedules
|
46
|
+
|
47
|
+
ActiveSupport::Reloader.to_prepare do
|
48
|
+
PandaPal::Organization.sync_schedules
|
49
|
+
end
|
46
50
|
end
|
47
51
|
end
|
48
52
|
end
|
@@ -5,8 +5,11 @@ module PandaPal::Helpers
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
|
9
|
-
|
8
|
+
# ActionController::API does not use views, so helper_method would not be defined
|
9
|
+
unless name == "ActionController::API"
|
10
|
+
helper_method :link_nonce, :current_session, :current_session_data
|
11
|
+
helper_method :link_with_session_to, :url_with_session, :session_url_for
|
12
|
+
end
|
10
13
|
|
11
14
|
prepend_around_action :monkeypatch_flash
|
12
15
|
prepend_around_action :auto_save_session
|
data/lib/panda_pal/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: panda_pal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.4.
|
4
|
+
version: 5.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Instructure ProServe
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -198,7 +198,7 @@ dependencies:
|
|
198
198
|
- - ">="
|
199
199
|
- !ruby/object:Gem::Version
|
200
200
|
version: '0'
|
201
|
-
description:
|
201
|
+
description:
|
202
202
|
email:
|
203
203
|
- pseng@instructure.com
|
204
204
|
executables: []
|
@@ -218,10 +218,10 @@ files:
|
|
218
218
|
- app/controllers/panda_pal/lti_v1_p0_controller.rb
|
219
219
|
- app/controllers/panda_pal/lti_v1_p3_controller.rb
|
220
220
|
- app/helpers/panda_pal/application_helper.rb
|
221
|
+
- app/jobs/panda_pal/jobs/grade_passback_job.rb
|
221
222
|
- app/lib/lti_xml/base_platform.rb
|
222
223
|
- app/lib/lti_xml/bridge_platform.rb
|
223
224
|
- app/lib/lti_xml/canvas_platform.rb
|
224
|
-
- app/lib/panda_pal/batch_processor.rb
|
225
225
|
- app/lib/panda_pal/launch_url_helpers.rb
|
226
226
|
- app/lib/panda_pal/lti_jwt_validator.rb
|
227
227
|
- app/lib/panda_pal/misc_helper.rb
|
@@ -244,14 +244,12 @@ files:
|
|
244
244
|
- db/migrate/20171205183457_encrypt_organization_settings.rb
|
245
245
|
- db/migrate/20171205194657_remove_old_organization_settings.rb
|
246
246
|
- lib/panda_pal.rb
|
247
|
-
- lib/panda_pal/ability_mixin.rb
|
248
247
|
- lib/panda_pal/engine.rb
|
249
248
|
- lib/panda_pal/helpers.rb
|
250
249
|
- lib/panda_pal/helpers/controller_helper.rb
|
251
250
|
- lib/panda_pal/helpers/route_helper.rb
|
252
251
|
- lib/panda_pal/helpers/secure_headers.rb
|
253
252
|
- lib/panda_pal/helpers/session_replacement.rb
|
254
|
-
- lib/panda_pal/jobs/grade_passback_job.rb
|
255
253
|
- lib/panda_pal/plugins.rb
|
256
254
|
- lib/panda_pal/version.rb
|
257
255
|
- lib/tasks/panda_pal_tasks.rake
|
@@ -286,8 +284,6 @@ files:
|
|
286
284
|
- spec/dummy/config/routes.rb
|
287
285
|
- spec/dummy/config/secrets.yml
|
288
286
|
- spec/dummy/db/schema.rb
|
289
|
-
- spec/dummy/log/development.log
|
290
|
-
- spec/dummy/log/test.log
|
291
287
|
- spec/dummy/public/404.html
|
292
288
|
- spec/dummy/public/422.html
|
293
289
|
- spec/dummy/public/500.html
|
@@ -304,7 +300,7 @@ homepage: http://instructure.com
|
|
304
300
|
licenses:
|
305
301
|
- MIT
|
306
302
|
metadata: {}
|
307
|
-
post_install_message:
|
303
|
+
post_install_message:
|
308
304
|
rdoc_options: []
|
309
305
|
require_paths:
|
310
306
|
- lib
|
@@ -315,56 +311,54 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
315
311
|
version: '0'
|
316
312
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
317
313
|
requirements:
|
318
|
-
- - "
|
314
|
+
- - ">="
|
319
315
|
- !ruby/object:Gem::Version
|
320
|
-
version:
|
316
|
+
version: '0'
|
321
317
|
requirements: []
|
322
|
-
rubygems_version: 3.
|
323
|
-
signing_key:
|
318
|
+
rubygems_version: 3.2.15
|
319
|
+
signing_key:
|
324
320
|
specification_version: 4
|
325
321
|
summary: LTI mountable engine
|
326
322
|
test_files:
|
327
|
-
- spec/
|
328
|
-
- spec/dummy/
|
329
|
-
- spec/dummy/app/views/layouts/application.html.erb
|
323
|
+
- spec/dummy/README.rdoc
|
324
|
+
- spec/dummy/Rakefile
|
330
325
|
- spec/dummy/app/assets/javascripts/application.js
|
331
326
|
- spec/dummy/app/assets/stylesheets/application.css
|
327
|
+
- spec/dummy/app/controllers/application_controller.rb
|
332
328
|
- spec/dummy/app/helpers/application_helper.rb
|
333
|
-
- spec/dummy/
|
334
|
-
- spec/dummy/bin/setup
|
329
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
335
330
|
- spec/dummy/bin/bundle
|
336
331
|
- spec/dummy/bin/rails
|
337
|
-
- spec/dummy/
|
338
|
-
- spec/dummy/
|
339
|
-
- spec/dummy/config/locales/en.yml
|
340
|
-
- spec/dummy/config/environments/production.rb
|
341
|
-
- spec/dummy/config/environments/development.rb
|
342
|
-
- spec/dummy/config/environments/test.rb
|
343
|
-
- spec/dummy/config/environment.rb
|
332
|
+
- spec/dummy/bin/rake
|
333
|
+
- spec/dummy/bin/setup
|
344
334
|
- spec/dummy/config/application.rb
|
345
|
-
- spec/dummy/config/database.yml
|
346
335
|
- spec/dummy/config/boot.rb
|
336
|
+
- spec/dummy/config/database.yml
|
337
|
+
- spec/dummy/config/environment.rb
|
338
|
+
- spec/dummy/config/environments/development.rb
|
339
|
+
- spec/dummy/config/environments/production.rb
|
340
|
+
- spec/dummy/config/environments/test.rb
|
347
341
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
348
|
-
- spec/dummy/config/initializers/
|
342
|
+
- spec/dummy/config/initializers/cookies_serializer.rb
|
349
343
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
344
|
+
- spec/dummy/config/initializers/inflections.rb
|
345
|
+
- spec/dummy/config/initializers/mime_types.rb
|
350
346
|
- spec/dummy/config/initializers/session_store.rb
|
351
347
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
352
|
-
- spec/dummy/config/
|
353
|
-
- spec/dummy/config/
|
348
|
+
- spec/dummy/config/locales/en.yml
|
349
|
+
- spec/dummy/config/routes.rb
|
350
|
+
- spec/dummy/config/secrets.yml
|
354
351
|
- spec/dummy/config.ru
|
355
|
-
- spec/dummy/
|
356
|
-
- spec/dummy/public/
|
352
|
+
- spec/dummy/db/schema.rb
|
353
|
+
- spec/dummy/public/404.html
|
357
354
|
- spec/dummy/public/422.html
|
358
355
|
- spec/dummy/public/500.html
|
359
|
-
- spec/dummy/public/
|
360
|
-
- spec/
|
361
|
-
- spec/
|
362
|
-
- spec/dummy/log/development.log
|
363
|
-
- spec/dummy/README.rdoc
|
356
|
+
- spec/dummy/public/favicon.ico
|
357
|
+
- spec/factories/panda_pal_organizations.rb
|
358
|
+
- spec/factories/panda_pal_sessions.rb
|
364
359
|
- spec/models/panda_pal/organization/settings_validation_spec.rb
|
365
360
|
- spec/models/panda_pal/organization/task_scheduling_spec.rb
|
366
|
-
- spec/models/panda_pal/session_spec.rb
|
367
361
|
- spec/models/panda_pal/organization_spec.rb
|
368
|
-
- spec/
|
369
|
-
- spec/factories/panda_pal_organizations.rb
|
362
|
+
- spec/models/panda_pal/session_spec.rb
|
370
363
|
- spec/rails_helper.rb
|
364
|
+
- spec/spec_helper.rb
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module PandaPal
|
2
|
-
# An array that "processes" after so many items are added.
|
3
|
-
#
|
4
|
-
# Example Usage:
|
5
|
-
# batches = BatchProcessor.new(of: 1000) do |batch|
|
6
|
-
# # Process the batch somehow
|
7
|
-
# end
|
8
|
-
# enumerator_of_some_kind.each { |item| batches << item }
|
9
|
-
# batches.flush
|
10
|
-
class BatchProcessor
|
11
|
-
attr_reader :batch_size
|
12
|
-
|
13
|
-
def initialize(of: 1000, &blk)
|
14
|
-
@batch_size = of
|
15
|
-
@block = blk
|
16
|
-
@current_batch = []
|
17
|
-
end
|
18
|
-
|
19
|
-
def <<(item)
|
20
|
-
@current_batch << item
|
21
|
-
process_batch if @current_batch.count >= batch_size
|
22
|
-
end
|
23
|
-
|
24
|
-
def add_all(items)
|
25
|
-
items.each do |i|
|
26
|
-
self << i
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def flush
|
31
|
-
process_batch if @current_batch.present?
|
32
|
-
end
|
33
|
-
|
34
|
-
protected
|
35
|
-
|
36
|
-
def process_batch
|
37
|
-
@block.call(@current_batch)
|
38
|
-
@current_batch = []
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,85 +0,0 @@
|
|
1
|
-
module PandaPal
|
2
|
-
module AbilityMixin
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
class_methods do
|
6
|
-
def self.role_permissions(labels)
|
7
|
-
roles = find_roles_by_label(labels)
|
8
|
-
|
9
|
-
if Rails.env.test? && roles.count == 0 && (labels || []).include?('Administrator')
|
10
|
-
return Hash.new(true)
|
11
|
-
end
|
12
|
-
|
13
|
-
final = {}
|
14
|
-
roles.find_each do |role|
|
15
|
-
role.permissions.each do |perm_name, perm|
|
16
|
-
final[perm_name] = false if final[perm_name].nil?
|
17
|
-
final[perm_name] = true if perm['enabled'] == true
|
18
|
-
end
|
19
|
-
end
|
20
|
-
final
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.find_roles_by_label(labels)
|
24
|
-
raise "PandaPal AbilityMixin's support for Roles and Permissions requires that Roles be synced by CanvasSync" unless defined?(Role)
|
25
|
-
|
26
|
-
built_ins = []
|
27
|
-
labels = labels.split(',') if labels.is_a?(String)
|
28
|
-
custom_labels = Array(labels).reject do |l|
|
29
|
-
if role_is_default?(l)
|
30
|
-
built_ins << l
|
31
|
-
elsif l == 'Account Admin'
|
32
|
-
built_ins << 'AccountMembership'
|
33
|
-
else
|
34
|
-
next
|
35
|
-
end
|
36
|
-
true
|
37
|
-
end
|
38
|
-
Role.where(workflow_state: 'built_in', base_role_type: built_ins)
|
39
|
-
.or(Role.where.not(workflow_state: 'built_in').where(label: custom_labels))
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.role_is_default?(role)
|
43
|
-
%w[TeacherEnrollment TaEnrollment StudentEnrollment DesignerEnrollment ObserverEnrollment].include? role
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def is_lti_launch?
|
48
|
-
@controller.current_session.present?
|
49
|
-
end
|
50
|
-
|
51
|
-
def panda_pal_session
|
52
|
-
@panda_pal_session ||= @controller.current_session&.data || {}
|
53
|
-
end
|
54
|
-
|
55
|
-
def rails_session
|
56
|
-
@rails_session ||= @controller.session
|
57
|
-
end
|
58
|
-
|
59
|
-
def launch_params
|
60
|
-
@launch_params ||= panda_pal_session[:launch_params] || {}
|
61
|
-
end
|
62
|
-
|
63
|
-
# Roles and Permissions
|
64
|
-
def lti_roles
|
65
|
-
@lti_roles ||= LTIRoles::RoleManager.new(launch_params['ext_roles'] || '')
|
66
|
-
end
|
67
|
-
|
68
|
-
def canvas_permissions
|
69
|
-
panda_pal_session[:canvas_permissions] ||= self.class.role_permissions(launch_params['custom_canvas_role'])
|
70
|
-
end
|
71
|
-
|
72
|
-
def canvas_role_labels
|
73
|
-
labels = launch_params['custom_canvas_role']
|
74
|
-
labels.is_a?(String) ? labels.split(',') : []
|
75
|
-
end
|
76
|
-
|
77
|
-
def canvas_roles
|
78
|
-
self.class.find_roles_by_label(canvas_role_labels)
|
79
|
-
end
|
80
|
-
|
81
|
-
def launch_role_ids
|
82
|
-
panda_pal_session[:launch_role_ids] ||= canvas_roles.map(&:canvas_id)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
[1m[35m (1.2ms)[0m [1m[35mDROP DATABASE IF EXISTS "panda_pal_development"[0m
|
2
|
-
[1m[35m (0.2ms)[0m [1m[35mDROP DATABASE IF EXISTS "panda_pal_test"[0m
|
3
|
-
[1m[35m (82.9ms)[0m [1m[35mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL PRIMARY KEY)[0m
|
4
|
-
[1m[35m (11.8ms)[0m [1m[35mCREATE TABLE "ar_internal_metadata" ("key" character varying NOT NULL PRIMARY KEY, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL)[0m
|
5
|
-
[1m[35m (0.3ms)[0m [1m[34mSELECT pg_try_advisory_lock(7878782013693407355);[0m
|
6
|
-
[1m[35m (2.8ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
7
|
-
[1m[36mActiveRecord::InternalMetadata Load (2.2ms)[0m [1m[34mSELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2[0m [["key", "environment"], ["LIMIT", 1]]
|
8
|
-
[1m[35m (0.2ms)[0m [1m[35mBEGIN[0m
|
9
|
-
[1m[35mSQL (3.2ms)[0m [1m[32mINSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "key"[0m [["key", "environment"], ["value", "development"], ["created_at", "2020-04-30 16:44:35.134620"], ["updated_at", "2020-04-30 16:44:35.134620"]]
|
10
|
-
[1m[35m (0.6ms)[0m [1m[35mCOMMIT[0m
|
11
|
-
[1m[35m (0.3ms)[0m [1m[34mSELECT pg_advisory_unlock(7878782013693407355)[0m
|
12
|
-
[1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
13
|
-
[1m[35m (0.5ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
14
|
-
[1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
15
|
-
[1m[35m (211.6ms)[0m [1m[35mDROP DATABASE IF EXISTS "panda_pal_development"[0m
|
16
|
-
[1m[35m (247.6ms)[0m [1m[35mDROP DATABASE IF EXISTS "panda_pal_test"[0m
|
17
|
-
[1m[35mSQL (0.4ms)[0m [1m[35mCREATE EXTENSION IF NOT EXISTS "plpgsql"[0m
|
18
|
-
[1m[35m (8.5ms)[0m [1m[35mDROP TABLE IF EXISTS "panda_pal_organizations" CASCADE[0m
|
19
|
-
[1m[35m (14.4ms)[0m [1m[35mCREATE TABLE "panda_pal_organizations" ("id" bigserial primary key, "name" character varying, "key" character varying, "secret" character varying, "canvas_account_id" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "salesforce_id" character varying, "encrypted_settings" text, "encrypted_settings_iv" character varying)[0m
|
20
|
-
[1m[35m (2.5ms)[0m [1m[35mCREATE UNIQUE INDEX "index_panda_pal_organizations_on_key" ON "panda_pal_organizations" ("key")[0m
|
21
|
-
[1m[35m (2.6ms)[0m [1m[35mCREATE UNIQUE INDEX "index_panda_pal_organizations_on_name" ON "panda_pal_organizations" ("name")[0m
|
22
|
-
[1m[35m (0.2ms)[0m [1m[35mDROP TABLE IF EXISTS "panda_pal_sessions" CASCADE[0m
|
23
|
-
[1m[35m (6.5ms)[0m [1m[35mCREATE TABLE "panda_pal_sessions" ("id" bigserial primary key, "session_key" character varying, "data" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "panda_pal_organization_id" integer)[0m
|
24
|
-
[1m[35m (1.9ms)[0m [1m[35mCREATE INDEX "index_panda_pal_sessions_on_panda_pal_organization_id" ON "panda_pal_sessions" ("panda_pal_organization_id")[0m
|
25
|
-
[1m[35m (2.5ms)[0m [1m[35mCREATE UNIQUE INDEX "index_panda_pal_sessions_on_session_key" ON "panda_pal_sessions" ("session_key")[0m
|
26
|
-
[1m[35m (3.5ms)[0m [1m[35mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL PRIMARY KEY)[0m
|
27
|
-
[1m[35m (1.4ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
28
|
-
[1m[35m (0.6ms)[0m [1m[32mINSERT INTO "schema_migrations" (version) VALUES (20171205194657)[0m
|
29
|
-
[1m[35m (47.2ms)[0m [1m[35mCREATE TABLE "ar_internal_metadata" ("key" character varying NOT NULL PRIMARY KEY, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL)[0m
|
30
|
-
[1m[36mActiveRecord::InternalMetadata Load (1.0ms)[0m [1m[34mSELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2[0m [["key", "environment"], ["LIMIT", 1]]
|
31
|
-
[1m[35m (0.4ms)[0m [1m[35mBEGIN[0m
|
32
|
-
[1m[35mSQL (0.4ms)[0m [1m[32mINSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "key"[0m [["key", "environment"], ["value", "development"], ["created_at", "2020-04-30 17:00:14.956327"], ["updated_at", "2020-04-30 17:00:14.956327"]]
|
33
|
-
[1m[35m (0.5ms)[0m [1m[35mCOMMIT[0m
|
34
|
-
[1m[36mActiveRecord::InternalMetadata Load (0.2ms)[0m [1m[34mSELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2[0m [["key", "environment"], ["LIMIT", 1]]
|
35
|
-
[1m[35m (0.1ms)[0m [1m[35mBEGIN[0m
|
36
|
-
[1m[35m (0.2ms)[0m [1m[35mCOMMIT[0m
|
37
|
-
[1m[35mSQL (0.4ms)[0m [1m[35mCREATE EXTENSION IF NOT EXISTS "plpgsql"[0m
|
38
|
-
[1m[35m (0.3ms)[0m [1m[35mDROP TABLE IF EXISTS "panda_pal_organizations" CASCADE[0m
|
39
|
-
[1m[35m (52.5ms)[0m [1m[35mCREATE TABLE "panda_pal_organizations" ("id" bigserial primary key, "name" character varying, "key" character varying, "secret" character varying, "canvas_account_id" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "salesforce_id" character varying, "encrypted_settings" text, "encrypted_settings_iv" character varying)[0m
|
40
|
-
[1m[35m (2.4ms)[0m [1m[35mCREATE UNIQUE INDEX "index_panda_pal_organizations_on_key" ON "panda_pal_organizations" ("key")[0m
|
41
|
-
[1m[35m (1.9ms)[0m [1m[35mCREATE UNIQUE INDEX "index_panda_pal_organizations_on_name" ON "panda_pal_organizations" ("name")[0m
|
42
|
-
[1m[35m (0.2ms)[0m [1m[35mDROP TABLE IF EXISTS "panda_pal_sessions" CASCADE[0m
|
43
|
-
[1m[35m (6.0ms)[0m [1m[35mCREATE TABLE "panda_pal_sessions" ("id" bigserial primary key, "session_key" character varying, "data" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "panda_pal_organization_id" integer)[0m
|
44
|
-
[1m[35m (1.8ms)[0m [1m[35mCREATE INDEX "index_panda_pal_sessions_on_panda_pal_organization_id" ON "panda_pal_sessions" ("panda_pal_organization_id")[0m
|
45
|
-
[1m[35m (1.8ms)[0m [1m[35mCREATE UNIQUE INDEX "index_panda_pal_sessions_on_session_key" ON "panda_pal_sessions" ("session_key")[0m
|
46
|
-
[1m[35m (4.8ms)[0m [1m[35mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL PRIMARY KEY)[0m
|
47
|
-
[1m[35m (0.9ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
48
|
-
[1m[35m (4.0ms)[0m [1m[32mINSERT INTO "schema_migrations" (version) VALUES (20171205194657)[0m
|
49
|
-
[1m[35m (6.5ms)[0m [1m[35mCREATE TABLE "ar_internal_metadata" ("key" character varying NOT NULL PRIMARY KEY, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL)[0m
|
50
|
-
[1m[36mActiveRecord::InternalMetadata Load (2.5ms)[0m [1m[34mSELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2[0m [["key", "environment"], ["LIMIT", 1]]
|
51
|
-
[1m[35m (0.1ms)[0m [1m[35mBEGIN[0m
|
52
|
-
[1m[35mSQL (5.0ms)[0m [1m[32mINSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "key"[0m [["key", "environment"], ["value", "development"], ["created_at", "2020-04-30 17:00:15.126316"], ["updated_at", "2020-04-30 17:00:15.126316"]]
|
53
|
-
[1m[35m (0.4ms)[0m [1m[35mCOMMIT[0m
|
54
|
-
[1m[36mActiveRecord::InternalMetadata Load (0.2ms)[0m [1m[34mSELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2[0m [["key", "environment"], ["LIMIT", 1]]
|
55
|
-
[1m[35m (0.2ms)[0m [1m[35mBEGIN[0m
|
56
|
-
[1m[35m (0.1ms)[0m [1m[35mCOMMIT[0m
|