Skip to content

Commit 9e7dd42

Browse files
authored
[rails] Warmup cache before starting up (#9691)
Also make sure records are always loaded from cache for cached_query.
1 parent 1b5925e commit 9e7dd42

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

frameworks/Ruby/rails/app/controllers/hello_world_controller.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ def query
2121
end
2222

2323
def cached_query
24-
items = Rails.cache.fetch_multi(*ALL_IDS.sample(query_count)) do |id|
25-
World.find(id).as_json
24+
keys = ALL_IDS.sample(query_count).map { "world_#{_1}" }
25+
items = Rails.cache.fetch_multi(*keys) do |id|
26+
raise "Could not find World with id: #{id} in cache"
2627
end
2728

2829
render json: items.values

frameworks/Ruby/rails/config/application.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,11 @@ class Application < Rails::Application
4747
config.middleware.delete Rails::Rack::Logger
4848

4949
config.active_support.isolation_level = :fiber if defined?(Falcon)
50+
51+
config.to_prepare do
52+
HelloWorldController::ALL_IDS.each do |id|
53+
Rails.cache.write("world_#{id}", World.find(id).as_json, expires_in: 1.day)
54+
end
55+
end
5056
end
5157
end

0 commit comments

Comments
 (0)