ddr-models 1.11.0 → 1.11.1

Sign up to get free protection for your applications and to get access to all the features.
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')