Sha256: 69ddd2e1f4fa00c2f06634cfb9c9a06baca0dda92d8f1b20d1cca46cc9b3bd8e
Contents?: true
Size: 1.96 KB
Versions: 8
Compression:
Stored size: 1.96 KB
Contents
require "yaml" module Shelly class Cloudfile < Model attr_accessor :content # Cloudfile attributes used for generating Cloudfile from a template attr_accessor :code_name, :ruby_version, :environment, :domains, :databases, :size # Public: Return true if Cloudfile is present in current directory def present? File.exists?(path) end # Public: Clouds in Cloudfile # Returns Array of clouds names from Cloudfile # nil if there is no cloudfile def clouds content.keys.sort if content end # Public: Generate example Cloudfile based on object attributes # Returns the generated Cloudfile as String def generate @email = current_user.email @thin = @size == "small" ? 2 : 4 template = File.read(template_path) cloudfile = ERB.new(template, 0, "%<>-") cloudfile.result(binding) end # Public: Create Cloudfile in current path (or append if exists) # File is created based on assigned attributes def create File.open(path, "a+") { |f| f << generate } end # Public: Return databases for given Cloud in Cloudfile # Returns Array of databases def databases(cloud) content[cloud.to_s]["servers"].map do |server, settings| settings["databases"] end.flatten.uniq end # Public: Return databases to backup for given Cloud in Cloudfile # Returns Array of databases, except redis db def backup_databases(cloud) databases(cloud) - ['redis'] end private # Internal: Load and parse Cloudfile def content return unless present? @content ||= YAML.load(File.open(path)) end # Internal: Path to Cloudfile in current directory # Returns path as String def path File.join(Dir.pwd, "Cloudfile") end # Internal: Return path to Cloudfile template # Returns path as String def template_path File.join(File.dirname(__FILE__), "templates", "Cloudfile.erb") end end end
Version data entries
8 entries across 8 versions & 1 rubygems