Sha256: 2b1caaec435946ddbd8c6c178161720312cc7aada20a57578b8c1d2d4e006821

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 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.locked_gems.specs.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_job')
  }

  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

1 entries across 1 versions & 1 rubygems

Version Path
negroku-2.5.2 lib/negroku/config.rb