From 2bc7281008fc69191af252709c2347f0ef364db8 Mon Sep 17 00:00:00 2001 From: Bohung Date: Wed, 8 Dec 2021 18:21:08 +0800 Subject: [PATCH] Add cache. --- app/models/ruling_weather_cache.rb | 7 ++ app/models/ruling_weather_setting.rb | 52 +++++++++---- .../_ruling_weather_widget1.html.erb | 72 ++++++++++++++---- .../_ruling_weather_widget2.html.erb | 52 +++++++++++++ modules/ruling_weather/info.json | 8 ++ .../ruling_weather/thumbs/weather1_thumbs.png | Bin 22240 -> 23423 bytes .../ruling_weather/thumbs/weather2_thumbs.png | Bin 0 -> 22240 bytes ruling_weather.gemspec | 60 ++++++++++++++- 8 files changed, 223 insertions(+), 28 deletions(-) create mode 100644 app/models/ruling_weather_cache.rb create mode 100644 modules/ruling_weather/_ruling_weather_widget2.html.erb create mode 100644 modules/ruling_weather/thumbs/weather2_thumbs.png diff --git a/app/models/ruling_weather_cache.rb b/app/models/ruling_weather_cache.rb new file mode 100644 index 0000000..c02d235 --- /dev/null +++ b/app/models/ruling_weather_cache.rb @@ -0,0 +1,7 @@ +class RulingWeatherCache + include Mongoid::Document + include Mongoid::Timestamps + field :cache + field :cache_time , :type=> DateTime, :default=> DateTime.now + belongs_to :ruling_weather_setting +end \ No newline at end of file diff --git a/app/models/ruling_weather_setting.rb b/app/models/ruling_weather_setting.rb index 34eb232..a780107 100644 --- a/app/models/ruling_weather_setting.rb +++ b/app/models/ruling_weather_setting.rb @@ -7,6 +7,7 @@ class RulingWeatherSetting field :location, type: String, default: "" field :dataid, type: String, default: "" field :observatory_name, type: String, default: "" + has_one :ruling_weather_cache def get_now_info(custom_location=nil,custom_dataid=nil,custom_observatory_name=nil) time_now = DateTime.now.utc.new_offset(self.time_offset) today = time_now.strftime("%Y-%m-%d") @@ -23,18 +24,35 @@ class RulingWeatherSetting "locationName" => custom_location} res = Net::HTTP.get_response(URI.parse("#{url}?#{data.to_query}")) content = JSON.parse(res.body) - weather_data = get_weather_data(content) - mint = get_element_value(weather_data["MinT"]).to_i #最低溫度(攝氏度) - maxt = get_element_value(weather_data["MaxT"]).to_i #最高溫度(攝氏度) - avgt = get_element_value(weather_data["T"]).to_i #平均溫度(攝氏度) - rain_rate = get_element_value(weather_data["PoP12h"]).to_i #降雨機率(百分比) - uvi = get_element_value(weather_data["UVI"],0).to_i #紫外線指數(數值) - uvi_text = get_element_value(weather_data["UVI"],1).to_s #紫外線指數(文字) - uvi_text = uvi_text.blank? ? I18n.t("ruling_weather.none") : uvi_text - rh = get_element_value(weather_data["RH"]).to_i #相對溼度 - wx_text = get_element_value(weather_data["Wx"],0).to_s #天氣現象(文字) - wx_code = get_element_value(weather_data["Wx"],1).to_i #天氣現象(編碼) - ws = get_element_value(weather_data["WS"]).to_i #風速(m/s) + cahche_model = self.ruling_weather_cache + if cahche_model.nil? + cahche_model = RulingWeatherCache.create(:cache=>{},:ruling_weather_setting=>self) + end + cache = cahche_model.cache rescue {} + weather_data = get_weather_data(content) rescue {} + if (weather_data.count == 0 rescue true) + mint = cache["mint"].to_i + maxt = cache["maxt"].to_i + avgt = cache["avgt"].to_i + rain_rate = cache["rain_rate"].to_i + uvi = cache["uvi"].to_i + uvi_text = cache["uvi_text"].to_s + rh = cache["rh"].to_i + wx_text = cache["wx_text"].to_s + wx_code = cache["wx_code"].to_i + ws = cache["ws"].to_i + else + mint = get_element_value(weather_data["MinT"]).to_i #最低溫度(攝氏度) + maxt = get_element_value(weather_data["MaxT"]).to_i #最高溫度(攝氏度) + avgt = get_element_value(weather_data["T"]).to_i #平均溫度(攝氏度) + rain_rate = get_element_value(weather_data["PoP12h"]).to_i #降雨機率(百分比) + uvi = get_element_value(weather_data["UVI"],0).to_i #紫外線指數(數值) + uvi_text = get_element_value(weather_data["UVI"],1).to_s #紫外線指數(文字) + rh = get_element_value(weather_data["RH"]).to_i #相對溼度 + wx_text = get_element_value(weather_data["Wx"],0).to_s #天氣現象(文字) + wx_code = get_element_value(weather_data["Wx"],1).to_i #天氣現象(編碼) + ws = get_element_value(weather_data["WS"]).to_i #風速(m/s) + end if wx_code < 10 wx_code = "0" + wx_code.to_s else @@ -55,7 +73,11 @@ class RulingWeatherSetting res2 = Net::HTTP.get_response(URI.parse("#{url2}?#{data2.to_query}")) content2 = JSON.parse(res2.body) weather_data2 = get_weather_data(content2) rescue {} - rain = weather_data2["NOW"]["elementValue"].to_f rescue 0.0 + if (weather_data2.count == 0 rescue true) + rain = cache["rain"] + else + rain = weather_data2["NOW"]["elementValue"].to_f rescue 0.0 + end end result = {"mint" => mint, "maxt" => maxt, @@ -68,6 +90,10 @@ class RulingWeatherSetting "wx_svg" => wx_svg, "ws" => ws, "rain" => rain} + cahche_model.update(:cache=>result,:cache_time=>time_now) + if uvi_text.blank? + result["uvi_text"] = I18n.t("ruling_weather.none") + end return result end def test diff --git a/modules/ruling_weather/_ruling_weather_widget1.html.erb b/modules/ruling_weather/_ruling_weather_widget1.html.erb index c63e878..db0d860 100644 --- a/modules/ruling_weather/_ruling_weather_widget1.html.erb +++ b/modules/ruling_weather/_ruling_weather_widget1.html.erb @@ -1,52 +1,98 @@
-
+
{{wx_text}}
{{avgt}}
-
+
{{uv-head}}
{{uvi_text}}
-
+
{{relative_humidity-head}}
{{rh}}%
-
+
{{current_wind_speed-head}}
{{ws}}m/s
-
+
{{accumulated_rainfall-head}}
{{rain}}mm
-
\ No newline at end of file +
diff --git a/modules/ruling_weather/_ruling_weather_widget2.html.erb b/modules/ruling_weather/_ruling_weather_widget2.html.erb new file mode 100644 index 0000000..90a50e4 --- /dev/null +++ b/modules/ruling_weather/_ruling_weather_widget2.html.erb @@ -0,0 +1,52 @@ +
+ +
+
+
+ {{wx_text}} +
+
+
{{wx_text}}
+
{{avgt}}
+
+
+
{{uv-head}}
+
{{uvi_text}}
+
+
+
+
+
{{relative_humidity-head}}
+
{{rh}}%
+
+
+
{{current_wind_speed-head}}
+
{{ws}}m/s
+
+
+
{{accumulated_rainfall-head}}
+
{{rain}}mm
+
+
+
+
\ No newline at end of file diff --git a/modules/ruling_weather/info.json b/modules/ruling_weather/info.json index 2a20a42..126e501 100644 --- a/modules/ruling_weather/info.json +++ b/modules/ruling_weather/info.json @@ -9,6 +9,14 @@ "en" : "1. Weather layout 1" }, "thumbnail" : "weather1_thumbs.png" + }, + { + "filename" : "ruling_weather_widget2", + "name" : { + "zh_tw" : "2. 天氣呈現樣式2", + "en" : "2. Weather layout 2" + }, + "thumbnail" : "weather2_thumbs.png" } ] } \ No newline at end of file diff --git a/modules/ruling_weather/thumbs/weather1_thumbs.png b/modules/ruling_weather/thumbs/weather1_thumbs.png index e4bcf010173a11f1143cd89c88634efa345bbd46..676d874aee35b0490091bc840cf2b7d810c13508 100644 GIT binary patch literal 23423 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 WM|i*2`X9-kcIA?-1^&X#lz#(g?~0%R literal 22240 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 R%m0pNXYFKFd%^eq{{Sf!eDDAO diff --git a/modules/ruling_weather/thumbs/weather2_thumbs.png b/modules/ruling_weather/thumbs/weather2_thumbs.png new file mode 100644 index 0000000000000000000000000000000000000000..e4bcf010173a11f1143cd89c88634efa345bbd46 GIT binary patch literal 22240 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 R%m0pNXYFKFd%^eq{{Sf!eDDAO literal 0 HcmV?d00001 diff --git a/ruling_weather.gemspec b/ruling_weather.gemspec index 4144b41..3ee4ad5 100644 --- a/ruling_weather.gemspec +++ b/ruling_weather.gemspec @@ -8,11 +8,67 @@ if bundle_update_flag app_path = File.expand_path(__dir__) template_path = env_pwd + '/app/templates' all_template = Dir.glob(template_path+'/*/') + default_weather_widget_info = JSON.parse(File.read("#{app_path}/modules/ruling_weather/info.json"))["widgets"].sort_by{|h| h["filename"].to_i} rescue [] all_template.each do |folder| if !folder.include?('mobile') moudle_path = "#{folder}modules/ruling_weather/" - if !Dir.exist?(moudle_path) && Dir.exist?(File.dirname(moudle_path)) - Bundler.with_clean_env{system ('cp -r '+ app_path + '/modules/* ' + folder + '/modules/.')} + if Dir.exist?(File.dirname(moudle_path)) + if !Dir.exist?(moudle_path) + Bundler.with_clean_env{system ('cp -r '+ app_path + '/modules/* ' + folder + '/modules/.')} + else + info_json_file = "#{moudle_path}info.json" + if File.exist?(info_json_file) + begin + file_text = File.read(info_json_file) rescue "" + encode_file_text = file_text.encode("UTF-8", "UTF-8", invalid: :replace, replace: "???") + next if (encode_file_text.include?("???") rescue true) + info = JSON.parse(encode_file_text) rescue {} + flag = (info.count != 0 rescue false) + if flag + puts "Checking RulingWeather widgets" + widget_info = info["widgets"].sort_by{|h| h["filename"].to_i} rescue [] + update_flag = false + last_index = widget_info[-1]["filename"].match(/\d+/)[0].to_i rescue nil + if !last_index.nil? + idx_regex = /^(\d+[\. \t]*)|[ \t]+$/ + default_weather_widget_info.each do |h| + name_without_index = h["name"]["zh_tw"].gsub(idx_regex,'') + widget_info_index = (widget_info.index{|hh| hh["name"]["zh_tw"].gsub(idx_regex,'') == name_without_index}||-1 rescue -1) + if (widget_info_index == -1 || widget_info_index.nil?) + update_flag = true + copy_h = h.dup + h.delete("force_cover") + last_index = last_index + 1 + copy_h["filename"] = copy_h["filename"].sub(/\d+/){|ff| last_index.to_s} + copy_h["name"].keys.each do |locale| + copy_h["name"][locale] = copy_h["name"][locale].sub(/\d+/){|ff| last_index.to_s} + end + widget_info << copy_h + Bundler.with_clean_env{%x[cp -f #{app_path}/modules/ruling_weather/_#{h["filename"]}.html.erb #{folder}modules/ruling_weather/_#{copy_h["filename"]}.html.erb]} + elsif h["force_cover"] == "true" + Bundler.with_clean_env{%x[cp -f #{app_path}/modules/ruling_weather/_#{h["filename"]}.html.erb #{folder}modules/ruling_weather/_#{widget_info[widget_info_index]["filename"]}.html.erb]} + end + end + if update_flag + info["widgets"] = widget_info + puts "Writing json #{info["widgets"].count} in #{info_json_file}" + begin + info_json = JSON.pretty_generate(info).gsub(":[",":[\n").gsub(":{",":{\n") + rescue + info_json = info.to_s.gsub("=>",": \n") + end + File.open(info_json_file,"w+"){|f| f.write(info_json)} + end + Bundler.with_clean_env{%x[cp -rn #{app_path}/modules/ruling_weather/thumbs/* #{folder}modules/ruling_weather/thumbs/.]} + Bundler.with_clean_env{%x[cp -f #{app_path}/modules/ruling_weather/thumbs/weather1_thumbs.png #{folder}modules/ruling_weather/thumbs/.]} + end + end + rescue => e + puts e + puts "There has some error when checking RulingWeather widgets" + end + end + end end end end