historiographer 4.4.3 → 4.4.4

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +14 -0
  3. data/VERSION +1 -1
  4. data/historiographer.gemspec +26 -13
  5. data/lib/historiographer.rb +5 -0
  6. data/spec/db/migrate/20250827000000_create_templates.rb +9 -0
  7. data/spec/db/migrate/20250827000001_create_template_histories.rb +9 -0
  8. data/spec/db/migrate/20250827000002_create_websites.rb +9 -0
  9. data/spec/db/migrate/20250827000003_create_website_histories.rb +9 -0
  10. data/spec/db/migrate/20250827000004_create_template_files.rb +15 -0
  11. data/spec/db/migrate/20250827000005_create_template_file_histories.rb +9 -0
  12. data/spec/db/migrate/20250827000006_create_website_files.rb +15 -0
  13. data/spec/db/migrate/20250827000007_create_website_file_histories.rb +9 -0
  14. data/spec/db/migrate/20250827000008_create_code_files_view.rb +62 -0
  15. data/spec/db/schema.rb +126 -1
  16. data/spec/examples.txt +71 -0
  17. data/spec/internal/log/development.log +0 -0
  18. data/spec/internal/log/test.log +1479 -0
  19. data/spec/models/code_file.rb +16 -0
  20. data/spec/models/template.rb +6 -0
  21. data/spec/models/template_file.rb +5 -0
  22. data/spec/models/template_file_history.rb +3 -0
  23. data/spec/models/template_history.rb +3 -0
  24. data/spec/models/website.rb +7 -0
  25. data/spec/models/website_file.rb +5 -0
  26. data/spec/models/website_file_history.rb +3 -0
  27. data/spec/models/website_history.rb +3 -0
  28. data/spec/view_backed_model_spec.rb +166 -0
  29. metadata +24 -11
  30. data/.document +0 -5
  31. data/.rspec +0 -1
  32. data/.ruby-version +0 -1
  33. data/.standalone_migrations +0 -6
  34. data/Gemfile.lock +0 -355
  35. data/historiographer-4.1.12.gem +0 -0
  36. data/historiographer-4.1.13.gem +0 -0
  37. data/historiographer-4.1.14.gem +0 -0
  38. data/historiographer-4.3.0.gem +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e539c6a610a6dd526ea49199d9d8f773dc8528c5e50960b3fc40615d87d81ffb
4
- data.tar.gz: cc44f3a4a98e65763b27b869a36e4b8997e4bd9e3b1f988ee07a267b0b346dd3
3
+ metadata.gz: 60587470dc09b843fa049daa514e78c23492a10e1652535762e05838e827d75a
4
+ data.tar.gz: 248a9a9b6dc13d2a7fa9a7926e6bad37c22e2d70cb2a27ba85ca57c079d788ef
5
5
  SHA512:
6
- metadata.gz: fb5d80e2d90f8c5dc2172b1a81f75b646750c3eff34c2921fa3a454d7905d05e59420c86c0b24d08eec96ace5f067e1b91e30c0d944675a84a2c5f2ad63e0fb8
7
- data.tar.gz: 2fedc59aa4c1fcb684e43f18a03a686ffdf4137fcef83e086583d064491a9cb16b7b17ca46f4893b1a3d83cdc4bc6a3977de4ae534454895fa0a53e0b7bdcf2d
6
+ metadata.gz: 558b8819149579b0f9c5a21bb1c16082036661e37791fd40b9adbca3df395af99795cc9afad7d3c6e83dbfbb6a4e5b664380c3bbe73aa952366eb752d5e38db9
7
+ data.tar.gz: 8dc727ba00be315e3d4067de27b93e5544f4bf854b9f63ab80ff86a7c53927018b6072d0f5590fbc23cd022544e004f908108a22c1ff58b83679d9594794cd97
data/Rakefile CHANGED
@@ -22,6 +22,20 @@ Jeweler::Tasks.new do |gem|
22
22
  gem.description = %Q{Creates separate tables for each history table}
23
23
  gem.email = "brett.shollenberger@gmail.com"
24
24
  gem.authors = ["brettshollenberger"]
25
+
26
+ # Use glob patterns to automatically include all relevant files
27
+ gem.files = `git ls-files`.split("\n").reject { |f|
28
+ f.match(/^(test|spec|features)\//) ||
29
+ f.match(/\.gem$/) ||
30
+ f.match(/^\./) ||
31
+ f == 'Gemfile.lock'
32
+ }
33
+
34
+ # Include spec files for development/testing
35
+ gem.files += Dir.glob("spec/**/*")
36
+
37
+ # Ensure we have all the executables
38
+ gem.executables = Dir.glob("bin/*").map { |f| File.basename(f) }
25
39
  end
26
40
  Jeweler::RubygemsDotOrgTasks.new
27
41
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.4.3
1
+ 4.4.4
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: historiographer 4.4.3 ruby lib
5
+ # stub: historiographer 4.4.4 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "historiographer".freeze
9
- s.version = "4.4.3"
9
+ s.version = "4.4.4"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["brettshollenberger".freeze]
14
- s.date = "2025-08-22"
14
+ s.date = "2025-09-19"
15
15
  s.description = "Creates separate tables for each history table".freeze
16
16
  s.email = "brett.shollenberger@gmail.com".freeze
17
17
  s.executables = ["console".freeze, "setup".freeze, "test".freeze, "test-all".freeze, "test-rails".freeze]
@@ -20,13 +20,8 @@ Gem::Specification.new do |s|
20
20
  "README.md"
21
21
  ]
22
22
  s.files = [
23
- ".document",
24
- ".rspec",
25
- ".ruby-version",
26
- ".standalone_migrations",
27
23
  "DEVELOPMENT.md",
28
24
  "Gemfile",
29
- "Gemfile.lock",
30
25
  "Guardfile",
31
26
  "LICENSE.txt",
32
27
  "README.md",
@@ -37,10 +32,6 @@ Gem::Specification.new do |s|
37
32
  "bin/test",
38
33
  "bin/test-all",
39
34
  "bin/test-rails",
40
- "historiographer-4.1.12.gem",
41
- "historiographer-4.1.13.gem",
42
- "historiographer-4.1.14.gem",
43
- "historiographer-4.3.0.gem",
44
35
  "historiographer.gemspec",
45
36
  "init.rb",
46
37
  "instructions/implementation.md",
@@ -83,7 +74,17 @@ Gem::Specification.new do |s|
83
74
  "spec/db/migrate/20250826000001_create_test_user_histories.rb",
84
75
  "spec/db/migrate/20250826000002_create_test_websites.rb",
85
76
  "spec/db/migrate/20250826000003_create_test_website_histories.rb",
77
+ "spec/db/migrate/20250827000000_create_templates.rb",
78
+ "spec/db/migrate/20250827000001_create_template_histories.rb",
79
+ "spec/db/migrate/20250827000002_create_websites.rb",
80
+ "spec/db/migrate/20250827000003_create_website_histories.rb",
81
+ "spec/db/migrate/20250827000004_create_template_files.rb",
82
+ "spec/db/migrate/20250827000005_create_template_file_histories.rb",
83
+ "spec/db/migrate/20250827000006_create_website_files.rb",
84
+ "spec/db/migrate/20250827000007_create_website_file_histories.rb",
85
+ "spec/db/migrate/20250827000008_create_code_files_view.rb",
86
86
  "spec/db/schema.rb",
87
+ "spec/examples.txt",
87
88
  "spec/factories/post.rb",
88
89
  "spec/historiographer_spec.rb",
89
90
  "spec/integration/historiographer_safe_integration_spec.rb",
@@ -95,10 +96,13 @@ Gem::Specification.new do |s|
95
96
  "spec/internal/config/database.yml",
96
97
  "spec/internal/config/routes.rb",
97
98
  "spec/internal/db/schema.rb",
99
+ "spec/internal/log/development.log",
100
+ "spec/internal/log/test.log",
98
101
  "spec/models/application_record.rb",
99
102
  "spec/models/author.rb",
100
103
  "spec/models/author_history.rb",
101
104
  "spec/models/byline.rb",
105
+ "spec/models/code_file.rb",
102
106
  "spec/models/comment.rb",
103
107
  "spec/models/comment_history.rb",
104
108
  "spec/models/easy_ml/column.rb",
@@ -113,6 +117,10 @@ Gem::Specification.new do |s|
113
117
  "spec/models/safe_post_history.rb",
114
118
  "spec/models/silent_post.rb",
115
119
  "spec/models/silent_post_history.rb",
120
+ "spec/models/template.rb",
121
+ "spec/models/template_file.rb",
122
+ "spec/models/template_file_history.rb",
123
+ "spec/models/template_history.rb",
116
124
  "spec/models/test_article.rb",
117
125
  "spec/models/test_article_history.rb",
118
126
  "spec/models/test_category.rb",
@@ -125,8 +133,13 @@ Gem::Specification.new do |s|
125
133
  "spec/models/thing_with_compound_index_history.rb",
126
134
  "spec/models/thing_without_history.rb",
127
135
  "spec/models/user.rb",
136
+ "spec/models/website.rb",
137
+ "spec/models/website_file.rb",
138
+ "spec/models/website_file_history.rb",
139
+ "spec/models/website_history.rb",
128
140
  "spec/rails_integration/historiographer_rails_integration_spec.rb",
129
- "spec/spec_helper.rb"
141
+ "spec/spec_helper.rb",
142
+ "spec/view_backed_model_spec.rb"
130
143
  ]
131
144
  s.homepage = "http://github.com/brettshollenberger/historiographer".freeze
132
145
  s.licenses = ["MIT".freeze]
@@ -304,6 +304,11 @@ module Historiographer
304
304
 
305
305
  # Recursively snapshot associations, avoiding infinite loops
306
306
  self.class.reflect_on_all_associations.each do |association|
307
+ # Skip associations to models without primary keys (e.g., database views)
308
+ association_class = association.klass rescue nil
309
+ next if association_class.nil?
310
+ next if association_class.primary_key.nil?
311
+
307
312
  associated_records = send(association.name)&.reload
308
313
  if associated_records.respond_to?(:order)
309
314
  associated_records = associated_records.order(id: :asc)
@@ -0,0 +1,9 @@
1
+ class CreateTemplates < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :templates do |t|
4
+ t.string :name, null: false
5
+ t.text :description
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'historiographer/history_migration'
2
+
3
+ class CreateTemplateHistories < ActiveRecord::Migration[7.0]
4
+ def change
5
+ create_table :template_histories do |t|
6
+ t.histories
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class CreateWebsites < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :websites do |t|
4
+ t.string :domain, null: false
5
+ t.references :template, foreign_key: true
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'historiographer/history_migration'
2
+
3
+ class CreateWebsiteHistories < ActiveRecord::Migration[7.0]
4
+ def change
5
+ create_table :website_histories do |t|
6
+ t.histories
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ class CreateTemplateFiles < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :template_files do |t|
4
+ t.references :template, foreign_key: true, null: false
5
+ t.string :path, null: false
6
+ t.text :content
7
+ t.tsvector :content_tsv
8
+ t.string :shasum
9
+ t.integer :file_specification_id
10
+ t.timestamps
11
+ end
12
+
13
+ add_index :template_files, [:template_id, :path], unique: true
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ require 'historiographer/history_migration'
2
+
3
+ class CreateTemplateFileHistories < ActiveRecord::Migration[7.0]
4
+ def change
5
+ create_table :template_file_histories do |t|
6
+ t.histories
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ class CreateWebsiteFiles < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :website_files do |t|
4
+ t.references :website, foreign_key: true, null: false
5
+ t.string :path, null: false
6
+ t.text :content
7
+ t.tsvector :content_tsv
8
+ t.string :shasum
9
+ t.integer :file_specification_id
10
+ t.timestamps
11
+ end
12
+
13
+ add_index :website_files, [:website_id, :path], unique: true
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ require 'historiographer/history_migration'
2
+
3
+ class CreateWebsiteFileHistories < ActiveRecord::Migration[7.0]
4
+ def change
5
+ create_table :website_file_histories do |t|
6
+ t.histories
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,62 @@
1
+ class CreateCodeFilesView < ActiveRecord::Migration[7.0]
2
+ def up
3
+ execute <<-SQL
4
+ CREATE OR REPLACE VIEW code_files AS
5
+ WITH merged_files AS (
6
+ -- Get all website files
7
+ SELECT
8
+ wf.website_id,
9
+ wf.path,
10
+ wf.content,
11
+ wf.content_tsv,
12
+ wf.shasum,
13
+ wf.file_specification_id,
14
+ wf.created_at,
15
+ wf.updated_at,
16
+ 'WebsiteFile' AS source_type,
17
+ wf.id AS source_id
18
+ FROM website_files wf
19
+
20
+ UNION ALL
21
+
22
+ -- Get template files that don't have a matching website file
23
+ SELECT
24
+ w.id AS website_id,
25
+ tf.path,
26
+ tf.content,
27
+ tf.content_tsv,
28
+ tf.shasum,
29
+ tf.file_specification_id,
30
+ tf.created_at,
31
+ tf.updated_at,
32
+ 'TemplateFile' AS source_type,
33
+ tf.id AS source_id
34
+ FROM template_files tf
35
+ INNER JOIN websites w ON w.template_id = tf.template_id
36
+ WHERE NOT EXISTS (
37
+ SELECT 1
38
+ FROM website_files wf2
39
+ WHERE wf2.website_id = w.id
40
+ AND wf2.path = tf.path
41
+ )
42
+ )
43
+ SELECT
44
+ website_id,
45
+ path,
46
+ content,
47
+ content_tsv,
48
+ shasum,
49
+ file_specification_id,
50
+ source_type,
51
+ source_id,
52
+ created_at,
53
+ updated_at
54
+ FROM merged_files
55
+ ORDER BY website_id, path;
56
+ SQL
57
+ end
58
+
59
+ def down
60
+ execute "DROP VIEW IF EXISTS code_files;"
61
+ end
62
+ end
data/spec/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[7.1].define(version: 2025_08_26_000003) do
13
+ ActiveRecord::Schema[7.1].define(version: 2025_08_27_000008) do
14
14
  # These are extensions that must be enabled in order to support this database
15
15
  enable_extension "plpgsql"
16
16
 
@@ -299,6 +299,66 @@ ActiveRecord::Schema[7.1].define(version: 2025_08_26_000003) do
299
299
  t.index ["live_at"], name: "index_silent_posts_on_live_at"
300
300
  end
301
301
 
302
+ create_table "template_file_histories", force: :cascade do |t|
303
+ t.integer "template_file_id", null: false
304
+ t.integer "template_id", null: false
305
+ t.string "path", null: false
306
+ t.text "content"
307
+ t.tsvector "content_tsv"
308
+ t.string "shasum"
309
+ t.integer "file_specification_id"
310
+ t.datetime "created_at", null: false
311
+ t.datetime "updated_at", null: false
312
+ t.datetime "history_started_at", null: false
313
+ t.datetime "history_ended_at"
314
+ t.integer "history_user_id"
315
+ t.string "snapshot_id"
316
+ t.index ["history_ended_at"], name: "index_template_file_histories_on_history_ended_at"
317
+ t.index ["history_started_at"], name: "index_template_file_histories_on_history_started_at"
318
+ t.index ["history_user_id"], name: "index_template_file_histories_on_history_user_id"
319
+ t.index ["snapshot_id"], name: "index_template_file_histories_on_snapshot_id"
320
+ t.index ["template_file_id"], name: "index_template_file_histories_on_template_file_id"
321
+ t.index ["template_id", "path"], name: "index_template_file_histories_on_template_id_and_path"
322
+ t.index ["template_id"], name: "index_template_file_histories_on_template_id"
323
+ end
324
+
325
+ create_table "template_files", force: :cascade do |t|
326
+ t.bigint "template_id", null: false
327
+ t.string "path", null: false
328
+ t.text "content"
329
+ t.tsvector "content_tsv"
330
+ t.string "shasum"
331
+ t.integer "file_specification_id"
332
+ t.datetime "created_at", null: false
333
+ t.datetime "updated_at", null: false
334
+ t.index ["template_id", "path"], name: "index_template_files_on_template_id_and_path", unique: true
335
+ t.index ["template_id"], name: "index_template_files_on_template_id"
336
+ end
337
+
338
+ create_table "template_histories", force: :cascade do |t|
339
+ t.integer "template_id", null: false
340
+ t.string "name", null: false
341
+ t.text "description"
342
+ t.datetime "created_at", null: false
343
+ t.datetime "updated_at", null: false
344
+ t.datetime "history_started_at", null: false
345
+ t.datetime "history_ended_at"
346
+ t.integer "history_user_id"
347
+ t.string "snapshot_id"
348
+ t.index ["history_ended_at"], name: "index_template_histories_on_history_ended_at"
349
+ t.index ["history_started_at"], name: "index_template_histories_on_history_started_at"
350
+ t.index ["history_user_id"], name: "index_template_histories_on_history_user_id"
351
+ t.index ["snapshot_id"], name: "index_template_histories_on_snapshot_id"
352
+ t.index ["template_id"], name: "index_template_histories_on_template_id"
353
+ end
354
+
355
+ create_table "templates", force: :cascade do |t|
356
+ t.string "name", null: false
357
+ t.text "description"
358
+ t.datetime "created_at", null: false
359
+ t.datetime "updated_at", null: false
360
+ end
361
+
302
362
  create_table "test_article_histories", force: :cascade do |t|
303
363
  t.integer "test_article_id", null: false
304
364
  t.string "title"
@@ -419,4 +479,69 @@ ActiveRecord::Schema[7.1].define(version: 2025_08_26_000003) do
419
479
  t.string "name"
420
480
  end
421
481
 
482
+ create_table "website_file_histories", force: :cascade do |t|
483
+ t.integer "website_file_id", null: false
484
+ t.integer "website_id", null: false
485
+ t.string "path", null: false
486
+ t.text "content"
487
+ t.tsvector "content_tsv"
488
+ t.string "shasum"
489
+ t.integer "file_specification_id"
490
+ t.datetime "created_at", null: false
491
+ t.datetime "updated_at", null: false
492
+ t.datetime "history_started_at", null: false
493
+ t.datetime "history_ended_at"
494
+ t.integer "history_user_id"
495
+ t.string "snapshot_id"
496
+ t.index ["history_ended_at"], name: "index_website_file_histories_on_history_ended_at"
497
+ t.index ["history_started_at"], name: "index_website_file_histories_on_history_started_at"
498
+ t.index ["history_user_id"], name: "index_website_file_histories_on_history_user_id"
499
+ t.index ["snapshot_id"], name: "index_website_file_histories_on_snapshot_id"
500
+ t.index ["website_file_id"], name: "index_website_file_histories_on_website_file_id"
501
+ t.index ["website_id", "path"], name: "index_website_file_histories_on_website_id_and_path"
502
+ t.index ["website_id"], name: "index_website_file_histories_on_website_id"
503
+ end
504
+
505
+ create_table "website_files", force: :cascade do |t|
506
+ t.bigint "website_id", null: false
507
+ t.string "path", null: false
508
+ t.text "content"
509
+ t.tsvector "content_tsv"
510
+ t.string "shasum"
511
+ t.integer "file_specification_id"
512
+ t.datetime "created_at", null: false
513
+ t.datetime "updated_at", null: false
514
+ t.index ["website_id", "path"], name: "index_website_files_on_website_id_and_path", unique: true
515
+ t.index ["website_id"], name: "index_website_files_on_website_id"
516
+ end
517
+
518
+ create_table "website_histories", force: :cascade do |t|
519
+ t.integer "website_id", null: false
520
+ t.string "domain", null: false
521
+ t.integer "template_id"
522
+ t.datetime "created_at", null: false
523
+ t.datetime "updated_at", null: false
524
+ t.datetime "history_started_at", null: false
525
+ t.datetime "history_ended_at"
526
+ t.integer "history_user_id"
527
+ t.string "snapshot_id"
528
+ t.index ["history_ended_at"], name: "index_website_histories_on_history_ended_at"
529
+ t.index ["history_started_at"], name: "index_website_histories_on_history_started_at"
530
+ t.index ["history_user_id"], name: "index_website_histories_on_history_user_id"
531
+ t.index ["snapshot_id"], name: "index_website_histories_on_snapshot_id"
532
+ t.index ["template_id"], name: "index_website_histories_on_template_id"
533
+ t.index ["website_id"], name: "index_website_histories_on_website_id"
534
+ end
535
+
536
+ create_table "websites", force: :cascade do |t|
537
+ t.string "domain", null: false
538
+ t.bigint "template_id"
539
+ t.datetime "created_at", null: false
540
+ t.datetime "updated_at", null: false
541
+ t.index ["template_id"], name: "index_websites_on_template_id"
542
+ end
543
+
544
+ add_foreign_key "template_files", "templates"
545
+ add_foreign_key "website_files", "websites"
546
+ add_foreign_key "websites", "templates"
422
547
  end
data/spec/examples.txt ADDED
@@ -0,0 +1,71 @@
1
+ example_id | status | run_time |
2
+ ------------------------------------------------------------------ | ------ | --------------- |
3
+ ./spec/historiographer_spec.rb[1:1:1] | passed | 0.06528 seconds |
4
+ ./spec/historiographer_spec.rb[1:1:2] | passed | 0.06876 seconds |
5
+ ./spec/historiographer_spec.rb[1:1:3] | passed | 0.06676 seconds |
6
+ ./spec/historiographer_spec.rb[1:2:1] | passed | 0.07069 seconds |
7
+ ./spec/historiographer_spec.rb[1:2:2] | passed | 0.05746 seconds |
8
+ ./spec/historiographer_spec.rb[1:2:3:1:1] | passed | 0.09942 seconds |
9
+ ./spec/historiographer_spec.rb[1:2:3:1:2] | passed | 0.09532 seconds |
10
+ ./spec/historiographer_spec.rb[1:2:3:2:1] | passed | 0.0666 seconds |
11
+ ./spec/historiographer_spec.rb[1:2:3:2:2] | passed | 0.09223 seconds |
12
+ ./spec/historiographer_spec.rb[1:2:3:2:3] | passed | 0.16142 seconds |
13
+ ./spec/historiographer_spec.rb[1:2:3:3:1] | passed | 0.09003 seconds |
14
+ ./spec/historiographer_spec.rb[1:2:3:3:2] | passed | 0.0727 seconds |
15
+ ./spec/historiographer_spec.rb[1:2:4:1] | passed | 0.07277 seconds |
16
+ ./spec/historiographer_spec.rb[1:2:4:2] | passed | 0.07295 seconds |
17
+ ./spec/historiographer_spec.rb[1:2:4:3] | passed | 0.06818 seconds |
18
+ ./spec/historiographer_spec.rb[1:2:5:1] | passed | 0.07794 seconds |
19
+ ./spec/historiographer_spec.rb[1:2:5:2] | passed | 0.06574 seconds |
20
+ ./spec/historiographer_spec.rb[1:2:5:3] | passed | 0.07246 seconds |
21
+ ./spec/historiographer_spec.rb[1:2:6] | passed | 0.05671 seconds |
22
+ ./spec/historiographer_spec.rb[1:2:7] | passed | 0.06192 seconds |
23
+ ./spec/historiographer_spec.rb[1:2:8] | passed | 0.06312 seconds |
24
+ ./spec/historiographer_spec.rb[1:3:1] | passed | 0.08252 seconds |
25
+ ./spec/historiographer_spec.rb[1:4:1] | passed | 0.08901 seconds |
26
+ ./spec/historiographer_spec.rb[1:5:1] | passed | 0.06204 seconds |
27
+ ./spec/historiographer_spec.rb[1:5:2] | passed | 0.06017 seconds |
28
+ ./spec/historiographer_spec.rb[1:6:1] | passed | 0.06542 seconds |
29
+ ./spec/historiographer_spec.rb[1:6:2] | passed | 0.07392 seconds |
30
+ ./spec/historiographer_spec.rb[1:7:1] | passed | 0.08007 seconds |
31
+ ./spec/historiographer_spec.rb[1:7:2] | passed | 0.06545 seconds |
32
+ ./spec/historiographer_spec.rb[1:7:3] | passed | 0.06212 seconds |
33
+ ./spec/historiographer_spec.rb[1:7:4] | passed | 0.06293 seconds |
34
+ ./spec/historiographer_spec.rb[1:7:5] | passed | 0.06288 seconds |
35
+ ./spec/historiographer_spec.rb[1:8:1] | passed | 0.062 seconds |
36
+ ./spec/historiographer_spec.rb[1:9:1] | passed | 0.09362 seconds |
37
+ ./spec/historiographer_spec.rb[1:10:1] | passed | 0.05997 seconds |
38
+ ./spec/historiographer_spec.rb[1:11:1] | passed | 0.07282 seconds |
39
+ ./spec/historiographer_spec.rb[1:11:2] | passed | 0.06606 seconds |
40
+ ./spec/historiographer_spec.rb[1:11:3] | passed | 0.06809 seconds |
41
+ ./spec/historiographer_spec.rb[1:11:4] | passed | 0.07018 seconds |
42
+ ./spec/historiographer_spec.rb[1:12:1] | passed | 0.08426 seconds |
43
+ ./spec/historiographer_spec.rb[1:12:2] | passed | 0.06852 seconds |
44
+ ./spec/historiographer_spec.rb[1:12:3] | passed | 0.10016 seconds |
45
+ ./spec/historiographer_spec.rb[1:12:4] | passed | 0.09182 seconds |
46
+ ./spec/historiographer_spec.rb[1:12:5] | passed | 0.08378 seconds |
47
+ ./spec/historiographer_spec.rb[1:12:6] | passed | 0.11921 seconds |
48
+ ./spec/historiographer_spec.rb[1:13:1] | passed | 0.11958 seconds |
49
+ ./spec/historiographer_spec.rb[1:14:1] | passed | 0.05717 seconds |
50
+ ./spec/historiographer_spec.rb[1:14:2] | passed | 0.07805 seconds |
51
+ ./spec/historiographer_spec.rb[1:14:3] | passed | 0.06426 seconds |
52
+ ./spec/historiographer_spec.rb[1:14:4] | passed | 0.06178 seconds |
53
+ ./spec/historiographer_spec.rb[1:15:1] | passed | 0.06755 seconds |
54
+ ./spec/historiographer_spec.rb[1:15:2] | passed | 0.08706 seconds |
55
+ ./spec/historiographer_spec.rb[1:16:1] | passed | 0.06589 seconds |
56
+ ./spec/historiographer_spec.rb[1:16:2] | passed | 0.04756 seconds |
57
+ ./spec/historiographer_spec.rb[1:16:3] | passed | 0.04635 seconds |
58
+ ./spec/historiographer_spec.rb[1:16:4] | passed | 0.07578 seconds |
59
+ ./spec/historiographer_spec.rb[1:17:1:1] | passed | 0.06365 seconds |
60
+ ./spec/historiographer_spec.rb[1:17:1:2] | passed | 0.10348 seconds |
61
+ ./spec/historiographer_spec.rb[1:17:2:1] | passed | 0.06393 seconds |
62
+ ./spec/integration/historiographer_safe_integration_spec.rb[1:1:1] | passed | 0.06664 seconds |
63
+ ./spec/integration/historiographer_safe_integration_spec.rb[1:1:2] | passed | 0.07357 seconds |
64
+ ./spec/integration/historiographer_safe_integration_spec.rb[1:1:3] | passed | 0.05953 seconds |
65
+ ./spec/view_backed_model_spec.rb[1:1:1] | passed | 0.06878 seconds |
66
+ ./spec/view_backed_model_spec.rb[1:1:2] | passed | 0.08949 seconds |
67
+ ./spec/view_backed_model_spec.rb[1:1:3:1] | passed | 0.11878 seconds |
68
+ ./spec/view_backed_model_spec.rb[1:1:3:2] | passed | 0.1122 seconds |
69
+ ./spec/view_backed_model_spec.rb[1:1:3:3] | passed | 0.10204 seconds |
70
+ ./spec/view_backed_model_spec.rb[1:1:3:4] | passed | 0.11072 seconds |
71
+ ./spec/view_backed_model_spec.rb[1:2:1] | passed | 0.07444 seconds |
File without changes