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.
- checksums.yaml +4 -4
- data/Rakefile +14 -0
- data/VERSION +1 -1
- data/historiographer.gemspec +26 -13
- data/lib/historiographer.rb +5 -0
- data/spec/db/migrate/20250827000000_create_templates.rb +9 -0
- data/spec/db/migrate/20250827000001_create_template_histories.rb +9 -0
- data/spec/db/migrate/20250827000002_create_websites.rb +9 -0
- data/spec/db/migrate/20250827000003_create_website_histories.rb +9 -0
- data/spec/db/migrate/20250827000004_create_template_files.rb +15 -0
- data/spec/db/migrate/20250827000005_create_template_file_histories.rb +9 -0
- data/spec/db/migrate/20250827000006_create_website_files.rb +15 -0
- data/spec/db/migrate/20250827000007_create_website_file_histories.rb +9 -0
- data/spec/db/migrate/20250827000008_create_code_files_view.rb +62 -0
- data/spec/db/schema.rb +126 -1
- data/spec/examples.txt +71 -0
- data/spec/internal/log/development.log +0 -0
- data/spec/internal/log/test.log +1479 -0
- data/spec/models/code_file.rb +16 -0
- data/spec/models/template.rb +6 -0
- data/spec/models/template_file.rb +5 -0
- data/spec/models/template_file_history.rb +3 -0
- data/spec/models/template_history.rb +3 -0
- data/spec/models/website.rb +7 -0
- data/spec/models/website_file.rb +5 -0
- data/spec/models/website_file_history.rb +3 -0
- data/spec/models/website_history.rb +3 -0
- data/spec/view_backed_model_spec.rb +166 -0
- metadata +24 -11
- data/.document +0 -5
- data/.rspec +0 -1
- data/.ruby-version +0 -1
- data/.standalone_migrations +0 -6
- data/Gemfile.lock +0 -355
- data/historiographer-4.1.12.gem +0 -0
- data/historiographer-4.1.13.gem +0 -0
- data/historiographer-4.1.14.gem +0 -0
- data/historiographer-4.3.0.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60587470dc09b843fa049daa514e78c23492a10e1652535762e05838e827d75a
|
4
|
+
data.tar.gz: 248a9a9b6dc13d2a7fa9a7926e6bad37c22e2d70cb2a27ba85ca57c079d788ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
1
|
+
4.4.4
|
data/historiographer.gemspec
CHANGED
@@ -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.
|
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.
|
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-
|
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]
|
data/lib/historiographer.rb
CHANGED
@@ -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,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,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,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:
|
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
|