lazy_global_record 1.0.1 → 1.1.0
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/README.md +6 -0
- data/lib/lazy_global_record.rb +8 -0
- data/lib/lazy_global_record/version.rb +1 -1
- data/test/dummy/log/test.log +118 -0
- data/test/lazy_global_record_test.rb +18 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3312908d16be8dafcdacccc5d18284e7c182250a
|
4
|
+
data.tar.gz: cb5a6fbd1da7cd51495457272fc34463a1f0da1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ad2b93a79e1190343a7e774d14ae51a09fb98a2cb3f0a37f0cbf4517b5661e2441b0f149c8e2107c5444f1dd02a091046f66ddc4195cb99b82335818e8c2b15
|
7
|
+
data.tar.gz: 7e5f0fe1a9d2a5421a10874277a1d9b7d2a0d3eb8066ec6927f138fc727a5fbebbeddac0312e8e2e6a2b4d0c1a4024bd7eb6bd36ad8263c0100234ca00585f01
|
data/README.md
CHANGED
@@ -83,6 +83,12 @@ another in a `before(:each)` in your `spec_helper.rb`. Put
|
|
83
83
|
a `LazyGlobalRecord.reset_all` after each and any `DatabaseCleaner.clean`
|
84
84
|
or `clean_with` calls, to reset cached values when the db is cleaned out.
|
85
85
|
|
86
|
+
You can also use `LazyGlobalRecord.reload_all`, which rests and then
|
87
|
+
forces immediate re-fetch. Defeats the purpose of lazy loading to make
|
88
|
+
tests faster by only loading what's needed for the test -- but I was
|
89
|
+
getting odd segfaults in some cases that this is a potential workaround
|
90
|
+
for.
|
91
|
+
|
86
92
|
### Custom transformations
|
87
93
|
|
88
94
|
What if you need more than just the `id`? You can supply a custom
|
data/lib/lazy_global_record.rb
CHANGED
@@ -10,6 +10,9 @@ class LazyGlobalRecord
|
|
10
10
|
def reset_all
|
11
11
|
@all_instances.each { |instance| instance.reset if instance.resettable? }
|
12
12
|
end
|
13
|
+
def reload_all
|
14
|
+
@all_instances.each { |instance| instance.reload if instance.resettable? }
|
15
|
+
end
|
13
16
|
end
|
14
17
|
|
15
18
|
def initialize( relation:,
|
@@ -57,6 +60,11 @@ class LazyGlobalRecord
|
|
57
60
|
@slot.set( create_delay )
|
58
61
|
end
|
59
62
|
|
63
|
+
def reload
|
64
|
+
reset
|
65
|
+
value
|
66
|
+
end
|
67
|
+
|
60
68
|
protected
|
61
69
|
|
62
70
|
def create_delay
|
data/test/dummy/log/test.log
CHANGED
@@ -1650,3 +1650,121 @@ LazyGlobalRecordTest: test_custom_filter
|
|
1650
1650
|
[1m[35mValue Load (0.1ms)[0m SELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1 [["value", "seven"]]
|
1651
1651
|
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
1652
1652
|
[1m[35m (0.4ms)[0m rollback transaction
|
1653
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1654
|
+
[1m[35m (0.1ms)[0m begin transaction
|
1655
|
+
----------------------------------------
|
1656
|
+
LazyGlobalRecordTest: test_custom_filter
|
1657
|
+
----------------------------------------
|
1658
|
+
[1m[36m (0.0ms)[0m [1mSAVEPOINT active_record_1[0m
|
1659
|
+
[1m[35mSQL (0.4ms)[0m INSERT INTO "values" ("value", "other_value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["value", "seven"], ["other_value", "treasure"], ["created_at", "2016-03-02 18:08:03.297582"], ["updated_at", "2016-03-02 18:08:03.297582"]]
|
1660
|
+
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
1661
|
+
[1m[35m (0.0ms)[0m SAVEPOINT active_record_1
|
1662
|
+
[1m[36mValue Load (0.1ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1[0m [["value", "seven"]]
|
1663
|
+
[1m[35m (0.0ms)[0m RELEASE SAVEPOINT active_record_1
|
1664
|
+
[1m[36m (1.2ms)[0m [1mrollback transaction[0m
|
1665
|
+
[1m[35m (0.1ms)[0m begin transaction
|
1666
|
+
-------------------------------------
|
1667
|
+
LazyGlobalRecordTest: test_it_reloads
|
1668
|
+
-------------------------------------
|
1669
|
+
[1m[36m (0.0ms)[0m [1mSAVEPOINT active_record_1[0m
|
1670
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "values" ("value", "other_value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["value", "five"], ["other_value", "first"], ["created_at", "2016-03-02 18:08:03.305760"], ["updated_at", "2016-03-02 18:08:03.305760"]]
|
1671
|
+
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
1672
|
+
[1m[35m (0.0ms)[0m SAVEPOINT active_record_1
|
1673
|
+
[1m[36mValue Load (0.0ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1[0m [["value", "five"]]
|
1674
|
+
[1m[35m (0.0ms)[0m RELEASE SAVEPOINT active_record_1
|
1675
|
+
[1m[36mSQL (0.0ms)[0m [1mDELETE FROM "values"[0m
|
1676
|
+
[1m[35m (0.0ms)[0m SAVEPOINT active_record_1
|
1677
|
+
[1m[36mSQL (0.4ms)[0m [1mINSERT INTO "values" ("value", "other_value", "created_at", "updated_at") VALUES (?, ?, ?, ?)[0m [["value", "five"], ["other_value", "second"], ["created_at", "2016-03-02 18:08:03.307879"], ["updated_at", "2016-03-02 18:08:03.307879"]]
|
1678
|
+
[1m[35m (0.0ms)[0m RELEASE SAVEPOINT active_record_1
|
1679
|
+
[1m[36m (0.0ms)[0m [1mSAVEPOINT active_record_1[0m
|
1680
|
+
[1m[35mValue Load (0.0ms)[0m SELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1 [["value", "five"]]
|
1681
|
+
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
1682
|
+
[1m[35mValue Load (0.1ms)[0m SELECT "values".* FROM "values" WHERE "values"."id" = ? LIMIT 1 [["id", 2]]
|
1683
|
+
[1m[36m (0.7ms)[0m [1mrollback transaction[0m
|
1684
|
+
[1m[35m (0.1ms)[0m begin transaction
|
1685
|
+
---------------------------------------------------
|
1686
|
+
LazyGlobalRecordTest: test_it_returns_id_by_default
|
1687
|
+
---------------------------------------------------
|
1688
|
+
[1m[36m (0.0ms)[0m [1mSAVEPOINT active_record_1[0m
|
1689
|
+
[1m[35mSQL (0.3ms)[0m INSERT INTO "values" ("value", "created_at", "updated_at") VALUES (?, ?, ?) [["value", "one"], ["created_at", "2016-03-02 18:08:03.312365"], ["updated_at", "2016-03-02 18:08:03.312365"]]
|
1690
|
+
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
1691
|
+
[1m[35m (0.0ms)[0m SAVEPOINT active_record_1
|
1692
|
+
[1m[36mValue Load (0.0ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1[0m [["value", "one"]]
|
1693
|
+
[1m[35m (0.0ms)[0m RELEASE SAVEPOINT active_record_1
|
1694
|
+
[1m[36mValue Load (0.0ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1[0m [["value", "one"]]
|
1695
|
+
[1m[35m (0.3ms)[0m rollback transaction
|
1696
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
1697
|
+
-----------------------------------------------------------------------
|
1698
|
+
LazyGlobalRecordTest: test_raises_an_exception_if_exceptions_are_raised
|
1699
|
+
-----------------------------------------------------------------------
|
1700
|
+
[1m[35m (0.0ms)[0m SAVEPOINT active_record_1
|
1701
|
+
[1m[36m (0.0ms)[0m [1mROLLBACK TO SAVEPOINT active_record_1[0m
|
1702
|
+
[1m[35m (0.0ms)[0m SAVEPOINT active_record_1
|
1703
|
+
[1m[36mValue Load (0.1ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1[0m [["value", "nonesuch"]]
|
1704
|
+
[1m[35m (0.0ms)[0m ROLLBACK TO SAVEPOINT active_record_1
|
1705
|
+
[1m[36m (0.0ms)[0m [1mrollback transaction[0m
|
1706
|
+
[1m[35m (0.0ms)[0m begin transaction
|
1707
|
+
--------------------------------------------------------------------
|
1708
|
+
LazyGlobalRecordTest: test_it_creates_a_record_when_creation_allowed
|
1709
|
+
--------------------------------------------------------------------
|
1710
|
+
[1m[36m (0.0ms)[0m [1mSAVEPOINT active_record_1[0m
|
1711
|
+
[1m[35mValue Load (0.1ms)[0m SELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1 [["value", "three"]]
|
1712
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "values" ("value", "created_at", "updated_at") VALUES (?, ?, ?)[0m [["value", "three"], ["created_at", "2016-03-02 18:08:03.317191"], ["updated_at", "2016-03-02 18:08:03.317191"]]
|
1713
|
+
[1m[35m (0.0ms)[0m RELEASE SAVEPOINT active_record_1
|
1714
|
+
[1m[36mValue Load (0.0ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."id" = ? LIMIT 1[0m [["id", 1]]
|
1715
|
+
[1m[35m (0.4ms)[0m rollback transaction
|
1716
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
1717
|
+
-----------------------------------------------------------
|
1718
|
+
LazyGlobalRecordTest: test_it_does_allow_reset_when_allowed
|
1719
|
+
-----------------------------------------------------------
|
1720
|
+
[1m[35m (0.1ms)[0m SAVEPOINT active_record_1
|
1721
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "values" ("value", "other_value", "created_at", "updated_at") VALUES (?, ?, ?, ?)[0m [["value", "five"], ["other_value", "first"], ["created_at", "2016-03-02 18:08:03.319221"], ["updated_at", "2016-03-02 18:08:03.319221"]]
|
1722
|
+
[1m[35m (0.0ms)[0m RELEASE SAVEPOINT active_record_1
|
1723
|
+
[1m[36m (0.0ms)[0m [1mSAVEPOINT active_record_1[0m
|
1724
|
+
[1m[35mValue Load (0.0ms)[0m SELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1 [["value", "five"]]
|
1725
|
+
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
1726
|
+
[1m[35mSQL (0.0ms)[0m DELETE FROM "values"
|
1727
|
+
[1m[36m (0.0ms)[0m [1mSAVEPOINT active_record_1[0m
|
1728
|
+
[1m[35mSQL (0.3ms)[0m INSERT INTO "values" ("value", "other_value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["value", "five"], ["other_value", "second"], ["created_at", "2016-03-02 18:08:03.321187"], ["updated_at", "2016-03-02 18:08:03.321187"]]
|
1729
|
+
[1m[36m (0.1ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
1730
|
+
[1m[35m (0.1ms)[0m SAVEPOINT active_record_1
|
1731
|
+
[1m[36mValue Load (0.1ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1[0m [["value", "five"]]
|
1732
|
+
[1m[35m (0.0ms)[0m RELEASE SAVEPOINT active_record_1
|
1733
|
+
[1m[36mValue Load (0.0ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."id" = ? LIMIT 1[0m [["id", 2]]
|
1734
|
+
[1m[35m (0.6ms)[0m rollback transaction
|
1735
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
1736
|
+
---------------------------------------------------------------------------
|
1737
|
+
LazyGlobalRecordTest: test_it_raises_on_no_record_when_creation_not_allowed
|
1738
|
+
---------------------------------------------------------------------------
|
1739
|
+
[1m[35m (0.0ms)[0m SAVEPOINT active_record_1
|
1740
|
+
[1m[36mValue Load (0.1ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1[0m [["value", "two"]]
|
1741
|
+
[1m[35m (0.0ms)[0m ROLLBACK TO SAVEPOINT active_record_1
|
1742
|
+
[1m[36m (0.0ms)[0m [1mrollback transaction[0m
|
1743
|
+
[1m[35m (0.0ms)[0m begin transaction
|
1744
|
+
-------------------------------------------------------------------
|
1745
|
+
LazyGlobalRecordTest: test_it_does_not_allow_reset_when_not_allowed
|
1746
|
+
-------------------------------------------------------------------
|
1747
|
+
[1m[36m (0.0ms)[0m [1mSAVEPOINT active_record_1[0m
|
1748
|
+
[1m[35mValue Load (0.1ms)[0m SELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1 [["value", "four"]]
|
1749
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "values" ("value", "created_at", "updated_at") VALUES (?, ?, ?)[0m [["value", "four"], ["created_at", "2016-03-02 18:08:03.326868"], ["updated_at", "2016-03-02 18:08:03.326868"]]
|
1750
|
+
[1m[35m (0.0ms)[0m RELEASE SAVEPOINT active_record_1
|
1751
|
+
[1m[36m (0.5ms)[0m [1mrollback transaction[0m
|
1752
|
+
[1m[35m (0.2ms)[0m begin transaction
|
1753
|
+
-------------------------------------------------------
|
1754
|
+
LazyGlobalRecordTest: test_it_uses_custom_creation_proc
|
1755
|
+
-------------------------------------------------------
|
1756
|
+
[1m[36m (0.1ms)[0m [1mSAVEPOINT active_record_1[0m
|
1757
|
+
[1m[35mValue Load (0.1ms)[0m SELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1 [["value", "six"]]
|
1758
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "values" ("value", "other_value", "created_at", "updated_at") VALUES (?, ?, ?, ?)[0m [["value", "six"], ["other_value", "manual"], ["created_at", "2016-03-02 18:08:03.330629"], ["updated_at", "2016-03-02 18:08:03.330629"]]
|
1759
|
+
[1m[35m (0.1ms)[0m RELEASE SAVEPOINT active_record_1
|
1760
|
+
[1m[36mValue Load (0.1ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."id" = ? LIMIT 1[0m [["id", 1]]
|
1761
|
+
[1m[35m (0.5ms)[0m rollback transaction
|
1762
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
1763
|
+
---------------------------------------------------------
|
1764
|
+
LazyGlobalRecordTest: test_raises_on_exceptions_in_filter
|
1765
|
+
---------------------------------------------------------
|
1766
|
+
[1m[35m (0.1ms)[0m SAVEPOINT active_record_1
|
1767
|
+
[1m[36mValue Load (0.2ms)[0m [1mSELECT "values".* FROM "values" WHERE "values"."value" = ? ORDER BY "values"."id" ASC LIMIT 1[0m [["value", "one"]]
|
1768
|
+
[1m[35mSQL (0.3ms)[0m INSERT INTO "values" ("value", "created_at", "updated_at") VALUES (?, ?, ?) [["value", "one"], ["created_at", "2016-03-02 18:08:03.336266"], ["updated_at", "2016-03-02 18:08:03.336266"]]
|
1769
|
+
[1m[36m (0.1ms)[0m [1mROLLBACK TO SAVEPOINT active_record_1[0m
|
1770
|
+
[1m[35m (0.3ms)[0m rollback transaction
|
@@ -62,6 +62,24 @@ class LazyGlobalRecordTest < ActiveSupport::TestCase
|
|
62
62
|
assert_equal "second", Value.find(lazy.value).other_value
|
63
63
|
end
|
64
64
|
|
65
|
+
test "it reloads" do
|
66
|
+
Value.create(value: "five", other_value: "first")
|
67
|
+
|
68
|
+
lazy = LazyGlobalRecord.new(
|
69
|
+
relation: -> { Value.where(value: "five") },
|
70
|
+
resettable: true
|
71
|
+
)
|
72
|
+
|
73
|
+
lazy.value
|
74
|
+
|
75
|
+
Value.delete_all
|
76
|
+
Value.create(value: "five", other_value: "second")
|
77
|
+
|
78
|
+
lazy.reload
|
79
|
+
|
80
|
+
assert_equal "second", Value.find(lazy.value).other_value
|
81
|
+
end
|
82
|
+
|
65
83
|
test "it uses custom creation proc" do
|
66
84
|
lazy = LazyGlobalRecord.new(
|
67
85
|
relation: -> { Value.where(value: "six") },
|