Sha256: acd907246b3af16ffe5281a65a199752e9e67ec83b60a16e5b077a6c05db7579

Contents?: true

Size: 1.52 KB

Versions: 3

Compression:

Stored size: 1.52 KB

Contents

# -*- coding: utf-8 -*-
require 'tengine/job/template'

# DSLを評価して登録されるルートジョブネットを表すVertex
class Tengine::Job::Template::RootJobnet < Tengine::Job::Template::Jobnet
  include Tengine::Core::FindByName

  field :dsl_filepath, :type => String  # ルートジョブネットを定義した際にロードされたDSLのファイル名(Tengine::Core::Config#dsl_dir_pathからの相対パス)
  field :dsl_lineno  , :type => Integer # ルートジョブネットを定義するjobnetメソッドの呼び出しの、ロードされたDSLのファイルでの行番号
  field :dsl_version , :type => String  # ルートジョブネットを定義した際のDSLのバージョン

  belongs_to :category, inverse_of: nil, index: true, class_name: "Tengine::Job::Structure::Category"

  def generate(options = {})
    super(options) do |r|
      r.template = self
    end
  end

  def find_duplication
    return nil unless self.new_record?
    self.class.find_by_name(name, :version => self.dsl_version)
  end

  class << self
    # Tengine::Core::FindByName で定義しているクラスメソッドfind_by_nameを上書きしています
    def find_by_name(name, options = {})
      version = options[:version] || Tengine::Core::Setting.dsl_version
      where({:name => name, :dsl_version => version}).first
    end
  end

  Tengine::Job::Template::Jobnet::VERTEX_CLASSES.keys.each do |key|
    instance_eval("def #{key}_class; Tengine::Job::Template::Jobnet.#{key}_class; end", __FILE__, __LINE__)
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tengine_job-1.2.2 lib/tengine/job/template/root_jobnet.rb
tengine_job-1.2.1 lib/tengine/job/template/root_jobnet.rb
tengine_job-1.2.0 lib/tengine/job/template/root_jobnet.rb