lib/fluentd_server/model.rb in fluentd-server-0.1.0 vs lib/fluentd_server/model.rb in fluentd-server-0.2.0

- old
+ new

@@ -1,10 +1,68 @@ require 'sinatra/activerecord' require 'sinatra/decorator' -require 'fluentd_server/environments' +require 'fluentd_server/environment' +require 'fluentd_server/task_runner' +require 'acts_as_file' +class Delayed::Job < ActiveRecord::Base; end + class Post < ActiveRecord::Base include Sinatra::Decorator::Decoratable + include FluentdServer::Logger validates :name, presence: true validates :body, presence: true + + if FluentdServer::Config.data_dir + include ActsAsFile + + def filename + File.join(FluentdServer::Config.data_dir, "#{self.name}.erb") if self.name + end + + acts_as_file :body => self.instance_method(:filename) + end + + def new? + self.id.nil? + end +end + +class Task < ActiveRecord::Base + include Sinatra::Decorator::Decoratable + include FluentdServer::Logger + include ActsAsFile + include TaskRunner # task runnable codes are here + + def filename + prefix = "#{self.id.to_s.rjust(4, '0')}" if self.id + File.join(FluentdServer::Config.job_dir, "#{prefix}_result.txt") if prefix + end + + acts_as_file :body => self.instance_method(:filename) + + def finished? + !self.exit_code.nil? + end + + def successful? + self.finished? and self.exit_code == 0 + end + + def error? + self.finished? and self.exit_code != 0 + end + + def new? + self.id.nil? + end + + def self.create_and_delete(*args) + created = self.create(*args) + if self.count > FluentdServer::Config.task_max_num + oldest = self.first + oldest.destroy_with_file + end + created + end end