Interactions between Lolex, Timecop and the Cache in HyperSpec
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par localiser les méthodes cache_read, cache_write et cache_delete de HyperSpec::Internal::Controller, puis examinez Lolex.evaluate_ruby et la manière dont Filecache et Timecop y interagissent. Le travail est considéré comme terminé lorsque les opérations de cache utilisent l’heure système et que les mises à jour de Lolex sont conservées lorsque HyperSpec n’est pas monté, sans envoyer de communication client inutile.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- JavaScript
- Étoiles
- 538
- Forks
- 41
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de hyperstack-org/hyperstack
-
expose_as_operations method Ouverteenhancement needs doc
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
hyperstack-org/hyperstack#359 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
hyperstack-org/hyperstack#267 ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
hyperstack-org/hyperstack#457 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
hyperstack-org/hyperstack#456 ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 15/100
hyperstack-org/hyperstack#455 · 2 commentaires ·
Toutes les issues de hyperstack-org/hyperstack
Issues similaires
-
bug customer-eng Durable Agents Inngest status: needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
-
optimization optimization:agents-md-curator
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
githubnext/gh-aw-cao#13475 ·
-
[BUG]: "Clear All" in Settings doesn't clear the saved analysis, old data comes back after reload Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
AOSSIE-Org/OrgExplorer#253 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
oxc-project/oxc#26944 ·
-
ai-observability bug team/ai-observability
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100