Sha256: eea11f2dd54f9e486b726e8e2980ad5b8c1211877c7bb9bc385502ddd487791a

Contents?: true

Size: 1.45 KB

Versions: 2

Compression:

Stored size: 1.45 KB

Contents

require 'erb'
require 'launchy'

module Shelly
  class App < Base
    DATABASE_KINDS = %w(postgresql mongodb redis none)
    attr_accessor :purpose, :code_name, :databases, :ruby_version, :environment

    def initialize
      @ruby_version = "MRI-1.9.2"
    end

    def add_git_remote
      system("git remote add #{purpose} #{git_url}")
    end

    def git_url
      "git@git.shellycloud.com:#{code_name}.git"
    end

    def generate_cloudfile
      @email = current_user.email
      @databases = databases
      template = File.read(cloudfile_template_path)
      cloudfile = ERB.new(template, 0, "%<>-")
      cloudfile.result(binding)
    end

    def cloudfile_template_path
      File.join(File.dirname(__FILE__), "templates", "Cloudfile.erb")
    end

    def create
      attributes = {
        :name         => code_name,
        :code_name    => code_name,
        :environment  => purpose,
        :ruby_version => ruby_version,
        :domain_name  => "#{code_name}.shellycloud.com"
      }
      shelly.create_app(attributes)
    end

    def create_cloudfile
      content = generate_cloudfile
      File.open(cloudfile_path, "a+") { |f| f << content }
    end

    def cloudfile_path
      File.join(Dir.pwd, "Cloudfile")
    end

    def self.guess_code_name
      File.basename(Dir.pwd)
    end

    def open_billing_page
      url = "#{shelly.api_url}/apps/#{code_name}/edit_billing?api_key=#{current_user.token}"
      Launchy.open(url)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shelly-0.0.9 lib/shelly/app.rb
shelly-0.0.8 lib/shelly/app.rb