Module: Bixby::Provision

Defined in:
lib/bixby/provision.rb,
lib/bixby/provision/app.rb,
lib/bixby/provision/dsl/dir.rb,
lib/bixby/provision/dsl/npm.rb,
lib/bixby/provision/dsl/ntp.rb,
lib/bixby/provision/dsl/scm.rb,
lib/bixby/provision/dsl/base.rb,
lib/bixby/provision/dsl/file.rb,
lib/bixby/provision/dsl/ruby.rb,
lib/bixby/provision/manifest.rb,
lib/bixby/provision/dsl/config.rb,
lib/bixby/provision/dsl/meteor.rb,
lib/bixby/provision/dsl/nodejs.rb,
lib/bixby/provision/dsl/system.rb,
lib/bixby/provision/dsl/bundler.rb,
lib/bixby/provision/dsl/scm/git.rb,
lib/bixby/provision/dsl/scm/svn.rb,
lib/bixby/provision/dsl/service.rb,
lib/bixby/provision/dsl/scm/base.rb,
lib/bixby/provision/dsl/variable.rb,
lib/bixby/provision/dsl/inventory.rb,
lib/bixby/provision/dsl/util/file.rb,
lib/bixby/provision/dsl/run_control.rb,
lib/bixby/provision/dsl/packager/apt.rb,
lib/bixby/provision/dsl/packager/npm.rb,
lib/bixby/provision/dsl/packager/yum.rb,
lib/bixby/provision/dsl/packager/base.rb,
lib/bixby/provision/dsl/services/base.rb,
lib/bixby/provision/dsl/services/init.rb,
lib/bixby/provision/manifest/dsl_proxy.rb,
lib/bixby/provision/dsl/packager/yum/epel.rb,
lib/bixby/provision/dsl/packager/yum/mongodb.rb

Defined Under Namespace

Modules: Packager, Services, Util Classes: App, Base, Bundler, Config, DirDSL, FileDSL, Inventory, Manifest, Meteor, NPM, NTP, NodeJS, Ruby, RunControl, SCM, Service, System, Variable

Class Method Summary collapse

Class Method Details

.register_dsl(obj, name = nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/bixby/provision.rb', line 8

def self.register_dsl(obj, name=nil)

  # create a simple name if none given
  # "Bixby::Provision::Config" > :config
  if name.nil? then
    name = obj.name.split(/::/).last.downcase
  end
  name = name.to_sym

  # return the dsl object via its name
  # always returns the same instance
  Manifest::DSLProxy.class_eval <<-EOF
    def #{name}
      return @#{name} if @#{name} # return already created instance

      @#{name}          = #{obj.name}.new
      @#{name}.manifest = self.manifest
      @#{name}.proxy    = self
      @#{name}
    end
  EOF

  if obj.const_defined? :EXPORTS then
    obj::EXPORTS.each do |e|

      Manifest::DSLProxy.class_eval do
        def_delegator name, e.to_sym
      end

    end
  end

  # add accessors for each DSL object
  Base.class_eval <<-EOF
    def #{name}
      self.proxy.send(:#{name})
    end
  EOF

end