8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/stimulus_reflex/version_checker.rb', line 8
def check_version!
return if StimulusReflex.config.on_failed_sanity_checks == :ignore
return if version == StimulusReflex::VERSION
level = (StimulusReflex.config.on_failed_sanity_checks == :exit) ? "error" : "warn"
reason = (level == "error") ? "failed to execute your reflex action due to" : "noticed"
mismatch = "StimulusReflex #{reason} a version mismatch between your gem and JavaScript version. Package versions must match exactly.\n\nstimulus_reflex gem: #{StimulusReflex::VERSION}\nstimulus_reflex npm: #{npm_version}"
StimulusReflex.config.logger.error("\n\e[31m#{mismatch}\e[0m")
log = {
message: mismatch,
level: level,
reflexId: id
}
event = {
name: "stimulus-reflex:version-mismatch",
reflexId: id,
detail: {
message: mismatch,
gem: StimulusReflex::VERSION,
npm: npm_version,
level: level
}
}
toast = {
text: mismatch.to_s,
destination: "https://docs.stimulusreflex.com/hello-world/setup#upgrading-package-versions-and-sanity",
reflexId: id,
level: level
}
CableReady::Channels.instance[@channel.stream_name].tap { |channel|
channel.console_log(log)
channel.dispatch_event(event)
channel.stimulus_reflex_version_mismatch(toast) if Rails.env.development?
}.broadcast
return if level == "warn"
raise VersionMismatchError.new(mismatch)
end
|