Class: SharedTasks::Task

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/shared_tasks.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.file_dateObject



138
139
140
# File 'lib/shared_tasks.rb', line 138

def file_date
  @file.split("_").shift
end

.file_nameObject



134
135
136
# File 'lib/shared_tasks.rb', line 134

def file_name
  @file.split("_").drop(1).join("_").split(".").remove_last.first
end

.file_routeObject



130
131
132
# File 'lib/shared_tasks.rb', line 130

def file_route
  "lib/shared_tasks/#{@file}"
end

.load_and_run_task(task = file_name) ⇒ Object



96
97
98
99
# File 'lib/shared_tasks.rb', line 96

def load_and_run_task(task = file_name)
  load_file
  run_task(task)
end

.load_fileObject



101
102
103
# File 'lib/shared_tasks.rb', line 101

def load_file
  load(file_route)
end

.routeObject



126
127
128
# File 'lib/shared_tasks.rb', line 126

def route
  "lib/shared_tasks"
end

.run_single_task(name, task) ⇒ Object



85
86
87
88
89
90
91
92
93
94
# File 'lib/shared_tasks.rb', line 85

def run_single_task(name, task)
  @file = Dir.entries(route).select {|f| (!File.directory?(f) && f.include?("#{name}")) }.first
  if @file && File.exist?(file_route)
    load_and_run_task(task)
  else
    message = "There isnt a file with name given"
    puts message.center(100, ".")
    raise message
  end
end

.run_task(task = file_name) ⇒ Object



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/shared_tasks.rb', line 105

def run_task(task = file_name)
  class_name = "#{file_name.camelize}Shared".constantize
  puts "Start at #{Time.zone.now}"
  if task == file_name
    class_name.methods(false).each do |metad|
      if metad != :destroy_actions && metad != :_validators
        puts "Running: #{metad.to_s} at #{Time.zone.now}"
        eval("#{class_name}.#{metad.to_s}")
      end
    end
  else
    if class_name.methods(false).include?(task.to_sym)
      puts "Running single task: #{task} at #{Time.zone.now}"
      eval("#{class_name}.#{task}")
    else
      raise "There isnt a task with name given => #{class_name}.#{task} "
    end
  end
  puts "End at #{Time.zone.now}"
end

.run_tasksObject



73
74
75
76
77
78
79
80
81
82
# File 'lib/shared_tasks.rb', line 73

def run_tasks
  puts "Running shared tasks"
  files = Dir.entries(route).select {|f| !File.directory?(f)}
  files.each do |file|
    @file = file
    SharedTasks::Task.where(task: file_date).first_or_create do
      load_and_run_task if File.exist?(file_route)
    end
  end
end

Instance Method Details

#rollback_actionsObject



26
27
28
29
30
31
32
33
34
35
# File 'lib/shared_tasks.rb', line 26

def rollback_actions
  @file = Dir.entries(route).select {|f| !File.directory?(f) && f.include?(self.task) }.first
  if @file && File.exist?(file_route)
    load_file
    run_task("destroy_actions")
  else
    message = "There isnt a file with name given - destroying data"
    puts message.center(100, ".")
  end
end