engineyard-local 0.2.1 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -0
- data/Gemfile.lock +73 -1
- data/README.md +40 -38
- data/config/dna.json +92 -66
- data/config/locales/en.yml +94 -9
- data/config/patches/chef-ey-1.1.336.patch +55 -0
- data/config/settings.yml +6 -1
- data/engineyard-local.gemspec +5 -4
- data/install/osx/README.md +42 -4
- data/install/osx/engineyard-local/engineyard-local.pkgproj +35 -6
- data/install/osx/images/dmg_background.png +0 -0
- data/install/osx/images/dmg_icon.icns +0 -0
- data/lib/engineyard-local.rb +64 -0
- data/lib/engineyard-local/command.rb +23 -0
- data/lib/engineyard-local/command/base.rb +78 -1
- data/lib/engineyard-local/command/group.rb +70 -6
- data/lib/engineyard-local/command/help.rb +36 -0
- data/lib/engineyard-local/command/helpers.rb +12 -0
- data/lib/engineyard-local/command/start.rb +26 -0
- data/lib/engineyard-local/command/status.rb +33 -0
- data/lib/engineyard-local/command/stop.rb +26 -0
- data/lib/engineyard-local/command/terminate.rb +26 -0
- data/lib/engineyard-local/command/up.rb +24 -15
- data/lib/engineyard-local/command/update.rb +42 -0
- data/lib/engineyard-local/middleware.rb +1 -0
- data/lib/engineyard-local/middleware/bundle.rb +1 -0
- data/lib/engineyard-local/middleware/chef.rb +52 -2
- data/lib/engineyard-local/middleware/cookbooks.rb +111 -0
- data/lib/engineyard-local/middleware/dna.rb +6 -4
- data/lib/engineyard-local/middleware/exec.rb +2 -1
- data/lib/engineyard-local/middleware/helpers/executable.rb +14 -2
- data/lib/engineyard-local/middleware/network.rb +3 -3
- data/lib/engineyard-local/middleware/rails.rb +1 -0
- data/lib/engineyard-local/middleware/rails/assets.rb +35 -0
- data/lib/engineyard-local/middleware/rails/command.rb +1 -1
- data/lib/engineyard-local/middleware/rails/db.rb +0 -1
- data/lib/engineyard-local/middleware/rails/new.rb +1 -1
- data/lib/engineyard-local/version.rb +1 -1
- data/test/engineyard-local/command/up_test.rb +1 -0
- data/test/integration/commands_test.rb +30 -0
- data/test/test_helper.rb +8 -2
- metadata +81 -70
- data/install/osx/images/eylocal_installer.png +0 -0
- data/test/integration/up_test.rb +0 -28
@@ -1,6 +1,7 @@
|
|
1
1
|
module Engineyard
|
2
2
|
module Local
|
3
3
|
module Command
|
4
|
+
|
4
5
|
def self.all
|
5
6
|
Engineyard::Local.locales[:commands].keys.map { |cmd| cmd.to_s }
|
6
7
|
end
|
@@ -53,6 +54,14 @@ module Engineyard
|
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
57
|
+
module Vagrant
|
58
|
+
class CLI
|
59
|
+
def help
|
60
|
+
Engineyard::Local::Command.dispatch(['help'])
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
56
65
|
require "thor"
|
57
66
|
# TODO autoload
|
58
67
|
require "engineyard-local/command/helpers"
|
@@ -63,3 +72,17 @@ require "engineyard-local/command/exec"
|
|
63
72
|
require "engineyard-local/command/list"
|
64
73
|
require "engineyard-local/command/rails"
|
65
74
|
require "engineyard-local/command/up"
|
75
|
+
require "engineyard-local/command/status"
|
76
|
+
require "engineyard-local/command/help"
|
77
|
+
require "engineyard-local/command/update"
|
78
|
+
require "engineyard-local/command/start"
|
79
|
+
require "engineyard-local/command/stop"
|
80
|
+
require "engineyard-local/command/terminate"
|
81
|
+
|
82
|
+
module Engineyard
|
83
|
+
module Local
|
84
|
+
module Command
|
85
|
+
COMMANDS_WITH_NO_COOKBOOK_CHECK = [Engineyard::Local::Command::Terminate, Engineyard::Local::Command::Status, Engineyard::Local::Command::Update, Vagrant::Command::Suspend, Vagrant::Command::Halt]
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -1,13 +1,90 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Command
|
3
|
+
class Base
|
4
|
+
include Engineyard::Local::Command::Helpers
|
5
|
+
|
6
|
+
def cookbook_status(scope = :partial, get_installed_version = true)
|
7
|
+
installed_cookbook_version = []
|
8
|
+
la_brea_data = []
|
9
|
+
cb_status = ''
|
10
|
+
|
11
|
+
begin
|
12
|
+
run( Vagrant::Action::Builder.new do
|
13
|
+
use( Engineyard::Local::Middleware::Cookbooks,:get_installed_version, installed_cookbook_version ) if get_installed_version
|
14
|
+
use( Engineyard::Local::Middleware::Cookbooks,:get_la_brea_data, la_brea_data )
|
15
|
+
end )
|
16
|
+
rescue Exception
|
17
|
+
cookbooks_status = "ERROR: Failure while determining cookbook status."
|
18
|
+
end
|
19
|
+
|
20
|
+
installed_cookbook_version = installed_cookbook_version.first
|
21
|
+
la_brea_data = la_brea_data.first || {}
|
22
|
+
|
23
|
+
if ( installed_cookbook_version == la_brea_data[:cookbooks_version] ) && ( scope == :full )
|
24
|
+
cb_status << I18n.t("vagrant.commands.status.cookbooks_current",
|
25
|
+
:version => installed_cookbook_version)
|
26
|
+
elsif ( installed_cookbook_version != la_brea_data[:cookbooks_version] )
|
27
|
+
cb_status << I18n.t("vagrant.commands.status.cookbooks_outdated",
|
28
|
+
:version => installed_cookbook_version,
|
29
|
+
:new_version => la_brea_data[:cookbooks_version],
|
30
|
+
:changelog => Nokogiri::HTML(la_brea_data[:changelog]).text)
|
31
|
+
end
|
32
|
+
|
33
|
+
cb_status
|
34
|
+
end
|
35
|
+
|
36
|
+
def initialize(argv, env)
|
37
|
+
@argv = argv
|
38
|
+
@env = env
|
39
|
+
@logger = Log4r::Logger.new("vagrant::command::#{self.class.to_s.downcase}")
|
40
|
+
@cookbook_status_already_checked ||= :not_checked
|
41
|
+
|
42
|
+
begin
|
43
|
+
with_target_vms() do |vm|
|
44
|
+
if vm.created? && vm.state == :running
|
45
|
+
@env.ui.info(cookbook_status, :prefix => false) unless Engineyard::Local.cookbook_version_verified?
|
46
|
+
Engineyard::Local.cookbook_version_verified
|
47
|
+
else
|
48
|
+
cookbook_status(:partial, false)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
rescue Errors::NoEnvironmentError
|
52
|
+
# Ignore this error. It will happen any time an ey-local/vagrant command is invoked
|
53
|
+
# in a directory that is not yet setup with a Vagrant environment.
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
1
61
|
module Engineyard
|
2
62
|
module Local
|
3
63
|
module Command
|
4
64
|
class Base < Vagrant::Command::Base
|
5
|
-
include Command::Helpers
|
6
65
|
|
7
66
|
attr_reader :env, :options
|
8
67
|
|
9
68
|
def initialize(env, options)
|
10
69
|
@env, @options = env, options
|
70
|
+
@cookbook_status_already_checked ||= :not_checked
|
71
|
+
|
72
|
+
unless Command::COMMANDS_WITH_NO_COOKBOOK_CHECK.include? self.class
|
73
|
+
begin
|
74
|
+
with_target_vms() do |vm|
|
75
|
+
if vm.created? && vm.state == :running
|
76
|
+
@env.ui.info(cookbook_status, :prefix => false) unless Engineyard::Local.cookbook_version_verified?
|
77
|
+
Engineyard::Local.cookbook_version_verified
|
78
|
+
else
|
79
|
+
cookbook_status(:partial, false)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
rescue Vagrant::Errors::NoEnvironmentError
|
83
|
+
# Ignore this error. It will happen any time an ey-local/vagrant command is invoked
|
84
|
+
# in a directory that is not yet setup with a Vagrant environment.
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
11
88
|
end
|
12
89
|
end
|
13
90
|
end
|
@@ -1,8 +1,21 @@
|
|
1
|
+
require 'engineyard-local/command'
|
2
|
+
|
1
3
|
module Engineyard
|
2
4
|
module Local
|
3
5
|
module Command
|
4
6
|
# TODO move to purely vagrant command based setup
|
5
7
|
class Group < Thor
|
8
|
+
|
9
|
+
def self.printable_tasks(all = true, subcommand = false)
|
10
|
+
(all ? all_tasks : tasks).map do |_, task|
|
11
|
+
next if task.hidden?
|
12
|
+
item = []
|
13
|
+
item << banner(task, false, subcommand)
|
14
|
+
item << (task.description ? "# #{task.description.gsub(/ +/m,' ')}" : "")
|
15
|
+
item
|
16
|
+
end.compact
|
17
|
+
end
|
18
|
+
|
6
19
|
# TODO this class level env crap will go away once
|
7
20
|
# these commands are moved out of thor to Vagrant commands
|
8
21
|
def self.env=(env)
|
@@ -13,6 +26,25 @@ module Engineyard
|
|
13
26
|
def env
|
14
27
|
@@env
|
15
28
|
end
|
29
|
+
|
30
|
+
def externally_register_vm(e)
|
31
|
+
eylocal_up_path = File.join(e.home_path,'eylocal-up')
|
32
|
+
lines = FileTest.exists?(eylocal_up_path) &&
|
33
|
+
FileTest.file?(eylocal_up_path) &&
|
34
|
+
FileTest.readable?(eylocal_up_path) ? File.read(eylocal_up_path).split : []
|
35
|
+
lines << e.cwd
|
36
|
+
File.open(eylocal_up_path, 'w+') {|fh| fh.write lines.join("\n")}
|
37
|
+
end
|
38
|
+
|
39
|
+
def externally_unregister_vm(e)
|
40
|
+
eylocal_up_path = File.join(e.home_path,'eylocal-up')
|
41
|
+
lines = FileTest.exists?(eylocal_up_path) &&
|
42
|
+
FileTest.file?(eylocal_up_path) &&
|
43
|
+
FileTest.readable?(eylocal_up_path) ? File.read(eylocal_up_path).split : []
|
44
|
+
lines.reject! {|l| l =~ /#{e.cwd}/}
|
45
|
+
File.open(eylocal_up_path, 'w+') {|fh| fh.write lines.join("\n")}
|
46
|
+
end
|
47
|
+
|
16
48
|
end
|
17
49
|
|
18
50
|
# NOTE this is generally a bad idea as it might break between Vagrant versions
|
@@ -32,6 +64,14 @@ module Engineyard
|
|
32
64
|
# register the command group eylocal
|
33
65
|
# register(*command_info[:eylocal])
|
34
66
|
|
67
|
+
map "-h" => :help
|
68
|
+
default_task :help
|
69
|
+
|
70
|
+
desc(*command_info[:help])
|
71
|
+
def help(*args)
|
72
|
+
Command::Help.new(env, options).exec(self, *args)
|
73
|
+
end
|
74
|
+
|
35
75
|
# make sure rails is installed, run rails commands in the guest project share
|
36
76
|
method_option "version", :type => :string, :default => nil
|
37
77
|
desc(*command_info[:rails])
|
@@ -45,12 +85,20 @@ module Engineyard
|
|
45
85
|
end
|
46
86
|
|
47
87
|
# streamlining of Vagrant up
|
48
|
-
|
49
|
-
method_option "no-
|
50
|
-
method_option "
|
88
|
+
|
89
|
+
method_option "no-chef", :type => :boolean, :default => nil
|
90
|
+
method_option "no-dna", :type => :boolean, :default => nil
|
91
|
+
method_option "no-bundle", :type => :boolean, :default => nil
|
92
|
+
method_option "no-db-setup", :type => :boolean, :default => nil
|
93
|
+
method_option "silent", :type => :boolean, :default => nil
|
51
94
|
desc(*command_info[:up])
|
52
95
|
def up(*args)
|
53
|
-
Command::Up.new(env, options).exec(*args)
|
96
|
+
Command::Up.new(env, options).exec(*args) && externally_register_vm(env)
|
97
|
+
end
|
98
|
+
|
99
|
+
desc(*command_info[:down])
|
100
|
+
def down(*args)
|
101
|
+
Command::VagrantAction.new(env, options).exec(:halt) && externally_unregister_vm(env)
|
54
102
|
end
|
55
103
|
|
56
104
|
method_option "environment", :type => :string, :default => "development"
|
@@ -73,13 +121,29 @@ module Engineyard
|
|
73
121
|
|
74
122
|
desc(*command_info[:start])
|
75
123
|
def start
|
76
|
-
Command::
|
124
|
+
Command::Start.new(env, options).exec()
|
77
125
|
end
|
78
126
|
|
79
127
|
desc(*command_info[:stop])
|
80
128
|
def stop
|
81
|
-
Command::
|
129
|
+
Command::Stop.new(env, options).exec()
|
130
|
+
end
|
131
|
+
|
132
|
+
desc(*command_info[:status])
|
133
|
+
def status(*args)
|
134
|
+
Command::Status.new(env, options).exec(env)
|
82
135
|
end
|
136
|
+
|
137
|
+
desc(*command_info[:update])
|
138
|
+
def update(*args)
|
139
|
+
Command::Update.new(env, options).exec()
|
140
|
+
end
|
141
|
+
|
142
|
+
desc(*command_info[:terminate])
|
143
|
+
def terminate(*args)
|
144
|
+
Command::Terminate.new(env, options).exec()
|
145
|
+
end
|
146
|
+
|
83
147
|
end
|
84
148
|
end
|
85
149
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Engineyard
|
2
|
+
module Local
|
3
|
+
module Command
|
4
|
+
class Help < Base
|
5
|
+
|
6
|
+
def exec(thor, *args)
|
7
|
+
list = Engineyard::Local::Command::Group.printable_tasks
|
8
|
+
Thor::Util.thor_classes_in(thor.class).each do |klass|
|
9
|
+
list += klass.printable_tasks(false)
|
10
|
+
end
|
11
|
+
|
12
|
+
truncate_output = true
|
13
|
+
|
14
|
+
if !args.empty?
|
15
|
+
list = list.select { |i| args.any? { |a| i.first =~ /^[\w\-]+\s+#{a}\b/ } }
|
16
|
+
truncate_output = false
|
17
|
+
list.sort!{ |a,b| a[0] <=> b[0] }.each do |h|
|
18
|
+
thor.shell.say(h[0], nil, true)
|
19
|
+
insert_linebreaks(h[1]).each do |line|
|
20
|
+
thor.shell.say("#{' ' * 4}#{line}", nil, true)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
else
|
24
|
+
list.sort!{ |a,b| a[0] <=> b[0] }
|
25
|
+
|
26
|
+
thor.shell.say "Commands:"
|
27
|
+
thor.shell.print_table(list, :indent => 2, :truncate => truncate_output)
|
28
|
+
thor.shell.say
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -2,6 +2,18 @@ module Engineyard
|
|
2
2
|
module Local
|
3
3
|
module Command
|
4
4
|
module Helpers
|
5
|
+
|
6
|
+
# Stupid, simple formatter for text. Returns an array of lines.
|
7
|
+
def insert_linebreaks(txt, maxlength = 76, ensure_linebreaks = true)
|
8
|
+
"#{txt} ".scan(/.{0,#{maxlength}}\s+/).collect do |line|
|
9
|
+
if ensure_linebreaks
|
10
|
+
line =~ /\n$/ ? line : line + "\n"
|
11
|
+
else
|
12
|
+
line
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
5
17
|
def run(middleware, opts={}, &block)
|
6
18
|
with_target_vms do |vm|
|
7
19
|
opts = merge_run_options(vm, opts)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Engineyard
|
2
|
+
module Local
|
3
|
+
module Command
|
4
|
+
class Start < Base
|
5
|
+
|
6
|
+
# Wrap Vagrant's :resume so that it checks to see if the instance is suspended first, and gives helpful output if it is not.
|
7
|
+
def exec(*args)
|
8
|
+
with_target_vms do |vm|
|
9
|
+
if vm.created?
|
10
|
+
if ( vm.state == :saved )
|
11
|
+
vm.resume
|
12
|
+
elsif ( vm.state == :running )
|
13
|
+
env.ui.info( insert_linebreaks( I18n.t( "eylocal.start.running" ) ) )
|
14
|
+
else
|
15
|
+
env.ui.info( insert_linebreaks( I18n.t( "eylocal.start.not_startable" , :state => vm.state ) ) )
|
16
|
+
end
|
17
|
+
else
|
18
|
+
env.ui.info( I18n.t( "eylocal.start.not_created" ) )
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
module Engineyard
|
5
|
+
module Local
|
6
|
+
module Command
|
7
|
+
class Status < Base
|
8
|
+
|
9
|
+
def exec(*args)
|
10
|
+
state = nil
|
11
|
+
results = []
|
12
|
+
|
13
|
+
cb_status = nil
|
14
|
+
|
15
|
+
with_target_vms do |vm|
|
16
|
+
cb_status = cookbook_status(:full) if vm.state == :running
|
17
|
+
|
18
|
+
state = vm.state.to_s if !state
|
19
|
+
results << "#{vm.name.to_s.ljust(25)}#{vm.state.to_s.gsub("_", " ")}"
|
20
|
+
end
|
21
|
+
|
22
|
+
state = results.length == 1 ? state : "listing"
|
23
|
+
|
24
|
+
@env.ui.info(I18n.t("vagrant.commands.status.output",
|
25
|
+
:states => results.join("\n"),
|
26
|
+
:message => I18n.t("vagrant.commands.status.#{state}"),
|
27
|
+
:alerts => insert_linebreaks( cb_status ).join ),
|
28
|
+
:prefix => false)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Engineyard
|
2
|
+
module Local
|
3
|
+
module Command
|
4
|
+
class Stop < Base
|
5
|
+
|
6
|
+
# Wrap Vagrant's :resume so that it checks to see if the instance is suspended first, and gives helpful output if it is not.
|
7
|
+
def exec(*args)
|
8
|
+
with_target_vms do |vm|
|
9
|
+
if vm.created?
|
10
|
+
if ( vm.state == :running )
|
11
|
+
vm.suspend
|
12
|
+
elsif ( vm.state == :saved )
|
13
|
+
env.ui.info( insert_linebreaks( I18n.t( "eylocal.stop.saved" ) ) )
|
14
|
+
else
|
15
|
+
env.ui.info( insert_linebreaks( I18n.t( "eylocal.stop.not_stoppable" , :state => vm.state ) ) )
|
16
|
+
end
|
17
|
+
else
|
18
|
+
env.ui.info( I18n.t( "eylocal.stop.not_created" ) )
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Engineyard
|
2
|
+
module Local
|
3
|
+
module Command
|
4
|
+
class Terminate < Base
|
5
|
+
|
6
|
+
# Wrap Vagrant's :destroy
|
7
|
+
def exec(*args)
|
8
|
+
with_target_vms do |vm|
|
9
|
+
if vm.created?
|
10
|
+
env.ui.info( I18n.t( "eylocal.terminate.destroying" ) )
|
11
|
+
vm.destroy
|
12
|
+
File.unlink(cached_data_path) if FileTest.exist? cached_data_path
|
13
|
+
else
|
14
|
+
env.ui.info( I18n.t( "eylocal.terminate.not_created" ) )
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def cached_data_path
|
20
|
+
"#{@env.root_path}/.ey_local_data"
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -2,6 +2,19 @@ module Engineyard
|
|
2
2
|
module Local
|
3
3
|
module Command
|
4
4
|
class Up < Base
|
5
|
+
|
6
|
+
# install the application bundle and create/migrate the database
|
7
|
+
# TODO check for the database.yml and fail gracefully
|
8
|
+
def self.setup_stack(options)
|
9
|
+
Vagrant::Action::Builder.new do
|
10
|
+
use Middleware::DNA unless options["no-dna"]
|
11
|
+
use Middleware::Chef unless options["no-chef"]
|
12
|
+
use Middleware::Bundle unless options["no-bundle"]
|
13
|
+
use Middleware::Rails::DB unless options["no-db-setup"]
|
14
|
+
use Middleware::Rails::Assets
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
5
18
|
def box_defaults
|
6
19
|
Local.config[:box_defaults]
|
7
20
|
end
|
@@ -31,17 +44,20 @@ module Engineyard
|
|
31
44
|
env.boxes.reload!
|
32
45
|
|
33
46
|
env.ui.info(I18n.t("eylocal.up.root_path", :root_path => env.root_path))
|
34
|
-
if
|
35
|
-
env.ui.info(I18n.t("eylocal.up.root_path_instructions",
|
47
|
+
if !pwd_matches_root_path
|
48
|
+
env.ui.info(I18n.t("eylocal.up.root_path_instructions",
|
49
|
+
:root_path => env.root_path, :pwd => Dir.pwd))
|
36
50
|
end
|
37
51
|
|
38
52
|
# don't build a box if its already built
|
39
53
|
with_target_vms do |vm|
|
40
54
|
if vm.created?
|
41
55
|
env.ui.info I18n.t("vagrant.commands.up.vm_created")
|
56
|
+
if ! ( vm.state == 'running' )
|
57
|
+
vm.start
|
58
|
+
end
|
42
59
|
else
|
43
60
|
up = Vagrant.actions.get(:up)
|
44
|
-
|
45
61
|
# insert the tag before the box is in a state where it can't be saved eg running
|
46
62
|
up.insert_before(Vagrant::Action::VM::CheckGuestAdditions, Middleware::Tag)
|
47
63
|
up.insert_before(Vagrant::Action::VM::CheckGuestAdditions, Middleware::Network, @options)
|
@@ -52,11 +68,15 @@ module Engineyard
|
|
52
68
|
end
|
53
69
|
|
54
70
|
# finish the box setup
|
55
|
-
run setup_stack(options)
|
71
|
+
run self.class.setup_stack(options)
|
56
72
|
end
|
57
73
|
|
58
74
|
private
|
59
75
|
|
76
|
+
def pwd_matches_root_path
|
77
|
+
File.expand_path(env.root_path) == File.expand_path(Dir.pwd)
|
78
|
+
end
|
79
|
+
|
60
80
|
# prefer the the base box included with the installer if it exists
|
61
81
|
# otherwise use the default downloadable box
|
62
82
|
def box_uri
|
@@ -70,17 +90,6 @@ module Engineyard
|
|
70
90
|
box_defaults[:uri]
|
71
91
|
end
|
72
92
|
end
|
73
|
-
|
74
|
-
# install the application bundle and create/migrate the database
|
75
|
-
# TODO check for the database.yml and fail gracefully
|
76
|
-
def setup_stack(options)
|
77
|
-
Vagrant::Action::Builder.new do
|
78
|
-
use Middleware::DNA unless options["no-dna"]
|
79
|
-
use Middleware::Chef unless options["no-chef"]
|
80
|
-
use Middleware::Bundle unless options["no-bundle"]
|
81
|
-
use Middleware::Rails::DB unless options["no-db-setup"]
|
82
|
-
end
|
83
|
-
end
|
84
93
|
end
|
85
94
|
end
|
86
95
|
end
|