Class: Ultrafast::Server
- Inherits:
-
Object
- Object
- Ultrafast::Server
- Defined in:
- lib/ultrafast/server.rb
Class Method Summary collapse
- .application_name ⇒ Object
- .get_redis_page(model, cursor) ⇒ Object
- .list_models ⇒ Object
- .redis_connection ⇒ Object
- .sleep_time ⇒ Object
- .start ⇒ Object
- .start_message ⇒ Object
Class Method Details
.application_name ⇒ Object
39 40 41 |
# File 'lib/ultrafast/server.rb', line 39 def self.application_name Ultrafast::CurrentApplication.name end |
.get_redis_page(model, cursor) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/ultrafast/server.rb', line 27 def self.get_redis_page(model, cursor) redis_connection.scan( cursor, match: "#{application_name}.#{model}.*", count: model.fast_default_amount ) end |
.list_models ⇒ Object
43 44 45 |
# File 'lib/ultrafast/server.rb', line 43 def self.list_models ActiveRecord::Base.descendants.select{|model| model.try(:has_fast_create) } end |
.redis_connection ⇒ Object
35 36 37 |
# File 'lib/ultrafast/server.rb', line 35 def self.redis_connection Ultrafast::Storage.redis_connection end |
.sleep_time ⇒ Object
53 54 55 |
# File 'lib/ultrafast/server.rb', line 53 def self.sleep_time (ENV['UF_LOOP_INTERVAL'] || 0.5).to_f end |
.start ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/ultrafast/server.rb', line 3 def self.start Rails.application.eager_load! cursors = {} loop do list_models.each do |model| keys = [] cursor = cursors[model.name] rescue 0 cursors[model.name], keys = get_redis_page(model, cursor) values = keys.map{|key| JSON.parse(redis_connection.get(key))[0] } if values.count > 0 model.import(values) keys.each{|key| redis_connection.del(key) } end end sleep(sleep_time) end end |
.start_message ⇒ Object
47 48 49 50 51 |
# File 'lib/ultrafast/server.rb', line 47 def self. Rails.logger.info '-----------------------------------------------------' Rails.logger.info '[START ULTRAFAST] Ultrafast server is started' Rails.logger.info '-----------------------------------------------------' end |