ddr-models 1.11.0 → 1.11.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47da234ecb43f36fb0eb336d31519cddf290a207
4
- data.tar.gz: ff7d195e23915f0e127161c01f24d2044dc879d2
3
+ metadata.gz: 837cafd9ab6769041a062fd47742966370b1ba62
4
+ data.tar.gz: 589bac968ddbdf98c3c4b6d4139f655ca1dfe01f
5
5
  SHA512:
6
- metadata.gz: 3c435826a74310c1e70f2b8edf46569727edd0939a5863519bbe858a44313b1fb01dfdfd8cecb63d86399fc23e16205b80c634f73e4177c50d7ba1034fbdb2b4
7
- data.tar.gz: dfce4af10755852dea51a93ebbed93b31aeef6f3b3b5672bfe5171a0cdd88c6b3b836752efaecee5e6b7c2a5419f9c82a9e8b4a37e0c6d0616cea18442fb92f0
6
+ metadata.gz: 607544332a3376a8230868ba3c72ddbe79b63176992adbc3cbf4cb35f7d3fa59e3772b68278e3f2045705a250df739fc606d3cf28a9ef005b59a21462766248b
7
+ data.tar.gz: 5b6343f564728cfffe174982f6e94e92f6adace9ca472c9154552fdd29e477fc02717eee7b4a1911a17992b6cb87ab81904c08677646f8c5170d8afdef1dda91
@@ -8,8 +8,4 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
8
8
  sign_in_and_redirect user
9
9
  end
10
10
 
11
- def after_sign_in_path_for(resource)
12
- request.env["omniauth.origin"] || super
13
- end
14
-
15
11
  end
@@ -1,10 +1,11 @@
1
1
  class Users::SessionsController < Devise::SessionsController
2
2
 
3
3
  def new
4
+ store_location_for(:user, request.referrer)
4
5
  if Ddr::Auth.require_shib_user_authn
5
- redirect_to user_omniauth_authorize_path(:shibboleth, origin: request.referrer)
6
+ flash.discard(:alert)
7
+ redirect_to user_omniauth_authorize_path(:shibboleth)
6
8
  else
7
- store_location_for(:user, request.referrer)
8
9
  super
9
10
  end
10
11
  end
@@ -238,6 +238,7 @@ Devise.setup do |config|
238
238
  # end
239
239
 
240
240
  config.warden do |manager|
241
+ manager.failure_app = Ddr::Auth::FailureApp
241
242
  # :superuser scope
242
243
  manager.serialize_into_session(:superuser) { |superuser| superuser.id }
243
244
  manager.serialize_from_session(:superuser) { |id| Devise.mappings[:user].to.find(id) }
data/lib/ddr/auth.rb CHANGED
@@ -8,6 +8,7 @@ module Ddr
8
8
  autoload :GroupService
9
9
  autoload :GrouperService
10
10
  autoload :RemoteGroupService
11
+ autoload :FailureApp
11
12
 
12
13
  # Group authorized to act as superuser
13
14
  mattr_accessor :superuser_group
@@ -0,0 +1,16 @@
1
+ module Ddr
2
+ module Auth
3
+ class FailureApp < Devise::FailureApp
4
+
5
+ def respond
6
+ if scope == :user && Ddr::Auth.require_shib_user_authn
7
+ store_location!
8
+ redirect_to user_omniauth_authorize_path(:shibboleth)
9
+ else
10
+ super
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  module Ddr
2
2
  module Models
3
- VERSION = "1.11.0"
3
+ VERSION = "1.11.1"
4
4
  end
5
5
  end
@@ -0,0 +1,22 @@
1
+ RSpec.describe ApplicationController, type: :controller do
2
+ controller do
3
+ before_action :authenticate_user!
4
+ def index; end
5
+ end
6
+ describe "authentication failure handling" do
7
+ describe "when shibboleth user authentication is required" do
8
+ before { allow(Ddr::Auth).to receive(:require_shib_user_authn) { true } }
9
+ it "should redirect to the shib authn path" do
10
+ get :index
11
+ expect(response).to redirect_to(user_omniauth_authorize_path(:shibboleth))
12
+ end
13
+ end
14
+ describe "when shibboleth user authentication is not required" do
15
+ before { allow(Ddr::Auth).to receive(:require_shib_user_authn) { false } }
16
+ it "should redirect to the new user session path" do
17
+ get :index
18
+ expect(response).to redirect_to(new_user_session_path)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -4,21 +4,32 @@ RSpec.describe Users::SessionsController, type: :controller do
4
4
 
5
5
  describe "#new" do
6
6
  before { request.env["HTTP_REFERER"] = "/foo/bar" }
7
+ it "should store the location of the previous page" do
8
+ expect(subject).to receive(:store_location_for).with(:user, "/foo/bar")
9
+ get :new
10
+ end
7
11
  describe "when shibboleth user authentication is required" do
8
12
  before { allow(Ddr::Auth).to receive(:require_shib_user_authn) { true } }
9
- it "should redirect to the shib authn path, setting the origin to the previous page" do
13
+ it "should redirect to the shib authn path" do
14
+ get :new
15
+ expect(response).to redirect_to(user_omniauth_authorize_path(:shibboleth))
16
+ end
17
+ it "should discard the flash alert" do
18
+ expect_any_instance_of(ActionDispatch::Flash::FlashHash).to receive(:discard).with(:alert)
10
19
  get :new
11
- expect(response).to redirect_to(user_omniauth_authorize_path(:shibboleth, origin: "/foo/bar"))
12
20
  end
13
21
  end
14
22
 
15
23
  describe "when shibboleth user authentication is NOT required" do
16
24
  before { allow(Ddr::Auth).to receive(:require_shib_user_authn) { false } }
17
25
  it "should store the location of the previous page and render the 'new' template" do
18
- expect(subject).to receive(:store_location_for).with(:user, "/foo/bar")
19
26
  get :new
20
27
  expect(response).to render_template(:new)
21
28
  end
29
+ it "should NOT discard the flash alert" do
30
+ expect_any_instance_of(ActionDispatch::Flash::FlashHash).not_to receive(:discard).with(:alert)
31
+ get :new
32
+ end
22
33
  end
23
34
  end
24
35
 
@@ -10291,3 +10291,309 @@ Migrating to AddUserKeyToEvents (20150130134416)
10291
10291
   (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20141216040225')
10292
10292
   (1.4ms) INSERT INTO "schema_migrations" (version) VALUES ('20141218020612')
10293
10293
   (1.1ms) INSERT INTO "schema_migrations" (version) VALUES ('20150110023410')
10294
+ Using the default predicate_mappings.yml that comes with active-fedora. If you want to override this, pass the path to predicate_mappings.yml to ActiveFedora - ie. ActiveFedora.init(:predicate_mappings_config_path => '/path/to/predicate_mappings.yml') - or set Rails.root and put predicate_mappings.yml into #{Rails.root}/config.
10295
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
10296
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
10297
+  (0.1ms)  SELECT sql
10298
+ FROM sqlite_master
10299
+ WHERE name='index_events_on_type' AND type='index'
10300
+ UNION ALL
10301
+ SELECT sql
10302
+ FROM sqlite_temp_master
10303
+ WHERE name='index_events_on_type' AND type='index'
10304
+ 
10305
+  (0.2ms) SELECT sql
10306
+ FROM sqlite_master
10307
+ WHERE name='index_events_on_pid' AND type='index'
10308
+ UNION ALL
10309
+ SELECT sql
10310
+ FROM sqlite_temp_master
10311
+ WHERE name='index_events_on_pid' AND type='index'
10312
+
10313
+  (0.1ms)  SELECT sql
10314
+ FROM sqlite_master
10315
+ WHERE name='index_events_on_outcome' AND type='index'
10316
+ UNION ALL
10317
+ SELECT sql
10318
+ FROM sqlite_temp_master
10319
+ WHERE name='index_events_on_outcome' AND type='index'
10320
+ 
10321
+  (0.1ms) SELECT sql
10322
+ FROM sqlite_master
10323
+ WHERE name='index_events_on_event_date_time' AND type='index'
10324
+ UNION ALL
10325
+ SELECT sql
10326
+ FROM sqlite_temp_master
10327
+ WHERE name='index_events_on_event_date_time' AND type='index'
10328
+
10329
+  (0.1ms)  SELECT sql
10330
+ FROM sqlite_master
10331
+ WHERE name='index_users_on_username' AND type='index'
10332
+ UNION ALL
10333
+ SELECT sql
10334
+ FROM sqlite_temp_master
10335
+ WHERE name='index_users_on_username' AND type='index'
10336
+ 
10337
+  (0.1ms) SELECT sql
10338
+ FROM sqlite_master
10339
+ WHERE name='index_users_on_reset_password_token' AND type='index'
10340
+ UNION ALL
10341
+ SELECT sql
10342
+ FROM sqlite_temp_master
10343
+ WHERE name='index_users_on_reset_password_token' AND type='index'
10344
+
10345
+  (0.1ms)  SELECT sql
10346
+ FROM sqlite_master
10347
+ WHERE name='index_users_on_email' AND type='index'
10348
+ UNION ALL
10349
+ SELECT sql
10350
+ FROM sqlite_temp_master
10351
+ WHERE name='index_users_on_email' AND type='index'
10352
+ 
10353
+  (1.3ms) CREATE TABLE "events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "event_date_time" datetime, "user_id" integer, "type" varchar(255), "pid" varchar(255), "software" varchar(255), "comment" text, "created_at" datetime, "updated_at" datetime, "summary" varchar(255), "outcome" varchar(255), "detail" text, "exception" varchar(255), "user_key" varchar(255))
10354
+  (0.1ms) select sqlite_version(*)
10355
+  (1.1ms) CREATE INDEX "index_events_on_event_date_time" ON "events" ("event_date_time")
10356
+  (0.1ms)  SELECT sql
10357
+ FROM sqlite_master
10358
+ WHERE name='index_events_on_event_date_time' AND type='index'
10359
+ UNION ALL
10360
+ SELECT sql
10361
+ FROM sqlite_temp_master
10362
+ WHERE name='index_events_on_event_date_time' AND type='index'
10363
+ 
10364
+  (1.1ms) CREATE INDEX "index_events_on_outcome" ON "events" ("outcome")
10365
+  (0.1ms)  SELECT sql
10366
+ FROM sqlite_master
10367
+ WHERE name='index_events_on_outcome' AND type='index'
10368
+ UNION ALL
10369
+ SELECT sql
10370
+ FROM sqlite_temp_master
10371
+ WHERE name='index_events_on_outcome' AND type='index'
10372
+ 
10373
+  (0.1ms) SELECT sql
10374
+ FROM sqlite_master
10375
+ WHERE name='index_events_on_event_date_time' AND type='index'
10376
+ UNION ALL
10377
+ SELECT sql
10378
+ FROM sqlite_temp_master
10379
+ WHERE name='index_events_on_event_date_time' AND type='index'
10380
+
10381
+  (1.1ms) CREATE INDEX "index_events_on_pid" ON "events" ("pid")
10382
+  (0.1ms) SELECT sql
10383
+ FROM sqlite_master
10384
+ WHERE name='index_events_on_pid' AND type='index'
10385
+ UNION ALL
10386
+ SELECT sql
10387
+ FROM sqlite_temp_master
10388
+ WHERE name='index_events_on_pid' AND type='index'
10389
+
10390
+  (0.1ms)  SELECT sql
10391
+ FROM sqlite_master
10392
+ WHERE name='index_events_on_outcome' AND type='index'
10393
+ UNION ALL
10394
+ SELECT sql
10395
+ FROM sqlite_temp_master
10396
+ WHERE name='index_events_on_outcome' AND type='index'
10397
+ 
10398
+  (0.1ms) SELECT sql
10399
+ FROM sqlite_master
10400
+ WHERE name='index_events_on_event_date_time' AND type='index'
10401
+ UNION ALL
10402
+ SELECT sql
10403
+ FROM sqlite_temp_master
10404
+ WHERE name='index_events_on_event_date_time' AND type='index'
10405
+
10406
+  (1.0ms) CREATE INDEX "index_events_on_type" ON "events" ("type")
10407
+  (1.6ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255) DEFAULT '' NOT NULL, "encrypted_password" varchar(255) DEFAULT '' NOT NULL, "reset_password_token" varchar(255), "reset_password_sent_at" datetime, "remember_created_at" datetime, "sign_in_count" integer DEFAULT 0, "current_sign_in_at" datetime, "last_sign_in_at" datetime, "current_sign_in_ip" varchar(255), "last_sign_in_ip" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "username" varchar(255) DEFAULT '' NOT NULL, "first_name" varchar(255), "middle_name" varchar(255), "nickname" varchar(255), "last_name" varchar(255), "display_name" varchar(255))
10408
+  (1.1ms) CREATE INDEX "index_users_on_email" ON "users" ("email")
10409
+  (0.1ms) SELECT sql
10410
+ FROM sqlite_master
10411
+ WHERE name='index_users_on_email' AND type='index'
10412
+ UNION ALL
10413
+ SELECT sql
10414
+ FROM sqlite_temp_master
10415
+ WHERE name='index_users_on_email' AND type='index'
10416
+
10417
+  (1.1ms) CREATE UNIQUE INDEX "index_users_on_reset_password_token" ON "users" ("reset_password_token")
10418
+  (0.1ms) SELECT sql
10419
+ FROM sqlite_master
10420
+ WHERE name='index_users_on_reset_password_token' AND type='index'
10421
+ UNION ALL
10422
+ SELECT sql
10423
+ FROM sqlite_temp_master
10424
+ WHERE name='index_users_on_reset_password_token' AND type='index'
10425
+
10426
+  (0.1ms)  SELECT sql
10427
+ FROM sqlite_master
10428
+ WHERE name='index_users_on_email' AND type='index'
10429
+ UNION ALL
10430
+ SELECT sql
10431
+ FROM sqlite_temp_master
10432
+ WHERE name='index_users_on_email' AND type='index'
10433
+ 
10434
+  (1.3ms) CREATE UNIQUE INDEX "index_users_on_username" ON "users" ("username")
10435
+  (1.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
10436
+  (1.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
10437
+  (0.1ms) SELECT version FROM "schema_migrations"
10438
+  (1.5ms) INSERT INTO "schema_migrations" (version) VALUES ('20150130134416')
10439
+  (1.2ms) INSERT INTO "schema_migrations" (version) VALUES ('20141021233359')
10440
+  (1.2ms) INSERT INTO "schema_migrations" (version) VALUES ('20141021234156')
10441
+  (1.1ms) INSERT INTO "schema_migrations" (version) VALUES ('20141103192146')
10442
+  (1.2ms) INSERT INTO "schema_migrations" (version) VALUES ('20141104181418')
10443
+  (1.2ms) INSERT INTO "schema_migrations" (version) VALUES ('20141107124012')
10444
+  (1.6ms) INSERT INTO "schema_migrations" (version) VALUES ('20141216040225')
10445
+  (1.1ms) INSERT INTO "schema_migrations" (version) VALUES ('20141218020612')
10446
+  (1.2ms) INSERT INTO "schema_migrations" (version) VALUES ('20150110023410')
10447
+ Using the default predicate_mappings.yml that comes with active-fedora. If you want to override this, pass the path to predicate_mappings.yml to ActiveFedora - ie. ActiveFedora.init(:predicate_mappings_config_path => '/path/to/predicate_mappings.yml') - or set Rails.root and put predicate_mappings.yml into #{Rails.root}/config.
10448
+ ActiveRecord::SchemaMigration Load (0.4ms) SELECT "schema_migrations".* FROM "schema_migrations"
10449
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
10450
+  (0.1ms)  SELECT sql
10451
+ FROM sqlite_master
10452
+ WHERE name='index_events_on_type' AND type='index'
10453
+ UNION ALL
10454
+ SELECT sql
10455
+ FROM sqlite_temp_master
10456
+ WHERE name='index_events_on_type' AND type='index'
10457
+ 
10458
+  (0.1ms) SELECT sql
10459
+ FROM sqlite_master
10460
+ WHERE name='index_events_on_pid' AND type='index'
10461
+ UNION ALL
10462
+ SELECT sql
10463
+ FROM sqlite_temp_master
10464
+ WHERE name='index_events_on_pid' AND type='index'
10465
+
10466
+  (0.1ms)  SELECT sql
10467
+ FROM sqlite_master
10468
+ WHERE name='index_events_on_outcome' AND type='index'
10469
+ UNION ALL
10470
+ SELECT sql
10471
+ FROM sqlite_temp_master
10472
+ WHERE name='index_events_on_outcome' AND type='index'
10473
+ 
10474
+  (0.1ms) SELECT sql
10475
+ FROM sqlite_master
10476
+ WHERE name='index_events_on_event_date_time' AND type='index'
10477
+ UNION ALL
10478
+ SELECT sql
10479
+ FROM sqlite_temp_master
10480
+ WHERE name='index_events_on_event_date_time' AND type='index'
10481
+
10482
+  (0.1ms)  SELECT sql
10483
+ FROM sqlite_master
10484
+ WHERE name='index_users_on_username' AND type='index'
10485
+ UNION ALL
10486
+ SELECT sql
10487
+ FROM sqlite_temp_master
10488
+ WHERE name='index_users_on_username' AND type='index'
10489
+ 
10490
+  (0.1ms) SELECT sql
10491
+ FROM sqlite_master
10492
+ WHERE name='index_users_on_reset_password_token' AND type='index'
10493
+ UNION ALL
10494
+ SELECT sql
10495
+ FROM sqlite_temp_master
10496
+ WHERE name='index_users_on_reset_password_token' AND type='index'
10497
+
10498
+  (0.1ms)  SELECT sql
10499
+ FROM sqlite_master
10500
+ WHERE name='index_users_on_email' AND type='index'
10501
+ UNION ALL
10502
+ SELECT sql
10503
+ FROM sqlite_temp_master
10504
+ WHERE name='index_users_on_email' AND type='index'
10505
+ 
10506
+  (1.2ms) CREATE TABLE "events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "event_date_time" datetime, "user_id" integer, "type" varchar(255), "pid" varchar(255), "software" varchar(255), "comment" text, "created_at" datetime, "updated_at" datetime, "summary" varchar(255), "outcome" varchar(255), "detail" text, "exception" varchar(255), "user_key" varchar(255))
10507
+  (0.1ms) select sqlite_version(*)
10508
+  (1.2ms) CREATE INDEX "index_events_on_event_date_time" ON "events" ("event_date_time")
10509
+  (0.2ms)  SELECT sql
10510
+ FROM sqlite_master
10511
+ WHERE name='index_events_on_event_date_time' AND type='index'
10512
+ UNION ALL
10513
+ SELECT sql
10514
+ FROM sqlite_temp_master
10515
+ WHERE name='index_events_on_event_date_time' AND type='index'
10516
+ 
10517
+  (1.2ms) CREATE INDEX "index_events_on_outcome" ON "events" ("outcome")
10518
+  (0.1ms)  SELECT sql
10519
+ FROM sqlite_master
10520
+ WHERE name='index_events_on_outcome' AND type='index'
10521
+ UNION ALL
10522
+ SELECT sql
10523
+ FROM sqlite_temp_master
10524
+ WHERE name='index_events_on_outcome' AND type='index'
10525
+ 
10526
+  (0.1ms) SELECT sql
10527
+ FROM sqlite_master
10528
+ WHERE name='index_events_on_event_date_time' AND type='index'
10529
+ UNION ALL
10530
+ SELECT sql
10531
+ FROM sqlite_temp_master
10532
+ WHERE name='index_events_on_event_date_time' AND type='index'
10533
+
10534
+  (1.1ms) CREATE INDEX "index_events_on_pid" ON "events" ("pid")
10535
+  (0.1ms) SELECT sql
10536
+ FROM sqlite_master
10537
+ WHERE name='index_events_on_pid' AND type='index'
10538
+ UNION ALL
10539
+ SELECT sql
10540
+ FROM sqlite_temp_master
10541
+ WHERE name='index_events_on_pid' AND type='index'
10542
+
10543
+  (0.1ms)  SELECT sql
10544
+ FROM sqlite_master
10545
+ WHERE name='index_events_on_outcome' AND type='index'
10546
+ UNION ALL
10547
+ SELECT sql
10548
+ FROM sqlite_temp_master
10549
+ WHERE name='index_events_on_outcome' AND type='index'
10550
+ 
10551
+  (0.1ms) SELECT sql
10552
+ FROM sqlite_master
10553
+ WHERE name='index_events_on_event_date_time' AND type='index'
10554
+ UNION ALL
10555
+ SELECT sql
10556
+ FROM sqlite_temp_master
10557
+ WHERE name='index_events_on_event_date_time' AND type='index'
10558
+
10559
+  (1.2ms) CREATE INDEX "index_events_on_type" ON "events" ("type")
10560
+  (1.2ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255) DEFAULT '' NOT NULL, "encrypted_password" varchar(255) DEFAULT '' NOT NULL, "reset_password_token" varchar(255), "reset_password_sent_at" datetime, "remember_created_at" datetime, "sign_in_count" integer DEFAULT 0, "current_sign_in_at" datetime, "last_sign_in_at" datetime, "current_sign_in_ip" varchar(255), "last_sign_in_ip" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "username" varchar(255) DEFAULT '' NOT NULL, "first_name" varchar(255), "middle_name" varchar(255), "nickname" varchar(255), "last_name" varchar(255), "display_name" varchar(255))
10561
+  (1.2ms) CREATE INDEX "index_users_on_email" ON "users" ("email")
10562
+  (0.1ms) SELECT sql
10563
+ FROM sqlite_master
10564
+ WHERE name='index_users_on_email' AND type='index'
10565
+ UNION ALL
10566
+ SELECT sql
10567
+ FROM sqlite_temp_master
10568
+ WHERE name='index_users_on_email' AND type='index'
10569
+
10570
+  (1.2ms) CREATE UNIQUE INDEX "index_users_on_reset_password_token" ON "users" ("reset_password_token")
10571
+  (0.1ms) SELECT sql
10572
+ FROM sqlite_master
10573
+ WHERE name='index_users_on_reset_password_token' AND type='index'
10574
+ UNION ALL
10575
+ SELECT sql
10576
+ FROM sqlite_temp_master
10577
+ WHERE name='index_users_on_reset_password_token' AND type='index'
10578
+
10579
+  (0.1ms)  SELECT sql
10580
+ FROM sqlite_master
10581
+ WHERE name='index_users_on_email' AND type='index'
10582
+ UNION ALL
10583
+ SELECT sql
10584
+ FROM sqlite_temp_master
10585
+ WHERE name='index_users_on_email' AND type='index'
10586
+ 
10587
+  (1.3ms) CREATE UNIQUE INDEX "index_users_on_username" ON "users" ("username")
10588
+  (1.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
10589
+  (1.2ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
10590
+  (0.1ms) SELECT version FROM "schema_migrations"
10591
+  (1.4ms) INSERT INTO "schema_migrations" (version) VALUES ('20150130134416')
10592
+  (1.1ms) INSERT INTO "schema_migrations" (version) VALUES ('20141021233359')
10593
+  (1.2ms) INSERT INTO "schema_migrations" (version) VALUES ('20141021234156')
10594
+  (1.2ms) INSERT INTO "schema_migrations" (version) VALUES ('20141103192146')
10595
+  (1.2ms) INSERT INTO "schema_migrations" (version) VALUES ('20141104181418')
10596
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20141107124012')
10597
+  (1.6ms) INSERT INTO "schema_migrations" (version) VALUES ('20141216040225')
10598
+  (1.2ms) INSERT INTO "schema_migrations" (version) VALUES ('20141218020612')
10599
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20150110023410')