lazy_global_record 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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") },
|