Sha256: 0689df70830ca52cda66059061918ad07996268829e9e10b8be318984c24eb0a

Contents?: true

Size: 1.55 KB

Versions: 2

Compression:

Stored size: 1.55 KB

Contents

module Negroku
  class Feature
    include Virtus.value_object

    values do
      attribute :name, String
      attribute :required, Boolean, default: false
      attribute :enabled, Boolean, default: false, :writer => :public
    end
  end
end

class Negroku::ConfigFactory
  include Virtus.model

  def self.loaded_in_bundler(name)
    Bundler.load.dependencies.any? {|a| a.name == name}
  end

  attribute :bower, Negroku::Feature, default: {
    name: "bower", enabled: File.exists?('bower.json')
  }

  attribute :bundler, Negroku::Feature, default: {
    name: "bundler", enabled: File.exists?('Gemfile')
  }

  attribute :delayed_job, Negroku::Feature, default: {
    name: "delayed_job", enabled: loaded_in_bundler('delayed_jobs')
  }

  attribute :nginx, Negroku::Feature, default: {
    name: "nginx", enabled: true, required: true
  }

  attribute :nodenv, Negroku::Feature, default: {
    name: "nodenv", enabled: true, required: true
  }

  attribute :rails, Negroku::Feature, default: {
    name: "rails", enabled: loaded_in_bundler('rails')
  }

  attribute :rbenv, Negroku::Feature, default: {
    name: "rbenv", enabled: true, required: true
  }

  attribute :sphinx, Negroku::Feature, default: {
    name: "sphinx", enabled: loaded_in_bundler('thinking-sphinx')
  }

  attribute :unicorn, Negroku::Feature, default: {
    name: "unicorn", enabled: loaded_in_bundler('unicorn')
  }

  attribute :whenever, Negroku::Feature, default: {
    name: "whenever", enabled: loaded_in_bundler('whenever')
  }

  # private

end

Negroku::Config = Negroku::ConfigFactory.new

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
negroku-2.5.1 lib/negroku/config.rb
negroku-2.5.0 lib/negroku/config.rb