Class: RabbitMQ::Definition::FileDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/rabbitmq_definition/file_definition.rb

Constant Summary collapse

RELEVANT_KEYS =
%i(rabbit_version version vhosts queues bindings exchanges)
SCHEMA_PATH =
'db/rabbitmq_definition.json'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(definition) ⇒ FileDefinition

Returns a new instance of FileDefinition.



24
25
26
27
28
29
30
# File 'lib/rabbitmq_definition/file_definition.rb', line 24

def initialize(definition)
  RELEVANT_KEYS.each do |key|
    default_value = ["rabbit_version", "version"].include?(key.to_s) ? nil : []
    self.send("#{key}=", definition[key] || definition[key.to_s] || default_value)
  end
  self.version = Time.now.utc.strftime("%Y%m%d%H%M%S").to_s
end

Class Method Details

.exists?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/rabbitmq_definition/file_definition.rb', line 13

def exists?
  File.exist?(file_path)
end

.file_pathObject



9
10
11
# File 'lib/rabbitmq_definition/file_definition.rb', line 9

def file_path
  Rails.root.join(SCHEMA_PATH)
end

.readObject



17
18
19
20
21
# File 'lib/rabbitmq_definition/file_definition.rb', line 17

def read
  return nil unless exists?
  json = File.read(file_path)
  new JSON.parse(json)
end

Instance Method Details

#as_jsonObject



32
33
34
35
36
37
# File 'lib/rabbitmq_definition/file_definition.rb', line 32

def as_json
  RELEVANT_KEYS.reduce({}) do |hash, key|
    hash[key] = send(key)
    hash
  end
end

#destroyObject



49
50
51
# File 'lib/rabbitmq_definition/file_definition.rb', line 49

def destroy
  File.delete(self.class.file_path)
end

#saveObject



43
44
45
46
47
# File 'lib/rabbitmq_definition/file_definition.rb', line 43

def save
  File.open(self.class.file_path, 'w') do |f|
    f.write(to_json)
  end
end

#to_jsonObject



39
40
41
# File 'lib/rabbitmq_definition/file_definition.rb', line 39

def to_json
  JSON.pretty_generate(as_json)
end