class Minirails::Builder

Public Instance Methods

define(name = nil, opts = {}, &block) click to toggle source

DSL API

# File lib/minirails.rb, line 67
def define(name = nil, opts = {}, &block)
  type = opts[:type] || :rails
  klazz = {
    rails:  RailsApp,
    rack:   RackApp,
    blank:  App
  }[type]

  if opts[:initialize]
    parent = apps.find {|a| a.name == opts[:initialize] }
    apps << WrappedApp.new(klazz.new(name, block), parent)
  else
    apps << klazz.new(name, block)
  end
end
spawn() click to toggle source
# File lib/minirails.rb, line 90
def spawn
  boot

  require "foreman/engine/cli"

  engine = Foreman::Engine::CLI.new
  apps.each.with_index do |app, index|
    engine.register(
      app.name || "web-#{index}",
      "#{File.expand_path($0)} #{File.expand_path(specfile)} #{index}",
      cwd: Dir.pwd
    )
  end

  engine.start
end
start(num) click to toggle source

internals

# File lib/minirails.rb, line 84
def start(num)
  boot
  apps[num].init
  apps[num].call
end

Protected Instance Methods

apps() click to toggle source
# File lib/minirails.rb, line 109
def apps
  @apps ||= []
end
boot() click to toggle source
# File lib/minirails.rb, line 113
def boot
  load specfile
end