Interactions between Lolex, Timecop and the Cache in HyperSpec
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne damit, HyperSpec::Internal::Controller's cache_read-, cache_write- und cache_delete-Methoden zu lokalisieren, und untersuche anschließend Lolex.evaluate_ruby sowie, wie Filecache und Timecop dort interagieren. Als erfüllt gilt die Aufgabe, wenn Cache-Operationen die Systemzeit verwenden und Lolex-Aktualisierungen beibehalten werden, wenn HyperSpec nicht gemountet ist, ohne unnötige Client-Kommunikation zu senden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Hyperspec uses the Filecache gem, which uses Time.now. But if Timecop freezes time in a spec, then Time.now is not returning the system time, and the Filecache does not work. This should be fixable by wrapping calls to the Filecache with the timecop return method (and a block.) But this does not in general work because Hyperspec tries to communicate the "return" to the client, even if the client is not running.
The following series of patches fixes the issue, and can be incorporated into the next point release:
module HyperSpec
module Internal
module Controller
class << self
# wrap all calls with Timecop.return so the file cache gets the true system time
def cache_read(key)
Timecop.return { file_cache.get(key) }
end
def cache_write(key, value)
Timecop.return { file_cache.set(key, value) }
end
def cache_delete(key)
Timecop.return { file_cache.delete(key) }
rescue StandardError
nil
end
end
end
end
end
class Lolex
# store all lolex updates unless hyper_spec is mounted
def self.evaluate_ruby(&block)
if @capybara_page&.instance_variable_get('@hyper_spec_mounted')
@capybara_page.internal_evaluate_ruby(yield)
else
pending_evaluations << block
end
end
end
- Vorherrschende Sprache
- JavaScript
- Sterne
- 538
- Forks
- 41
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus hyperstack-org/hyperstack
-
enhancement needs doc
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
hyperstack-org/hyperstack#359 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
hyperstack-org/hyperstack#267 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
hyperstack-org/hyperstack#457 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
hyperstack-org/hyperstack#456 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
hyperstack-org/hyperstack#455 · 2 Kommentare ·
Alle Issues in hyperstack-org/hyperstack
Ähnliche Issues
-
bug customer-eng Durable Agents Inngest status: needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
optimization optimization:agents-md-curator
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
githubnext/gh-aw-cao#13475 ·
-
[BUG]: "Clear All" in Settings doesn't clear the saved analysis, old data comes back after reload Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
AOSSIE-Org/OrgExplorer#253 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
oxc-project/oxc#26944 ·
-
ai-observability bug team/ai-observability
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100