ruby_yacht 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +7 -5
- data/doc/TODO.md +1 -5
- data/doc/configuration.md +51 -0
- data/doc/plugins.md +4 -0
- data/lib/ruby_yacht/dsl/configuration.rb +26 -1
- data/lib/ruby_yacht/dsl/dsl.rb +35 -3
- data/lib/ruby_yacht/dsl/hook.rb +4 -0
- data/lib/ruby_yacht/dsl/project.rb +11 -0
- data/lib/ruby_yacht/images/app/Dockerfile.erb +2 -1
- data/lib/ruby_yacht/images/app/checkout.bash +1 -1
- data/lib/ruby_yacht/images/app-dependencies/Dockerfile.erb +7 -1
- data/lib/ruby_yacht/images/database/Dockerfile.erb +3 -1
- data/lib/ruby_yacht/images/database/checkout.bash +3 -4
- data/lib/ruby_yacht/images/web/Dockerfile.erb +2 -0
- data/lib/ruby_yacht/plugins/nginx.rb +5 -0
- data/lib/ruby_yacht/plugins/rails/scripts/load_seeds.rb +10 -1
- data/lib/ruby_yacht/plugins/rails/scripts/prepare_rails_for_launch.rb +1 -1
- data/lib/ruby_yacht/plugins/rails/scripts/update_rails_config.rb +6 -4
- data/lib/ruby_yacht/plugins/rails.rb +30 -17
- data/lib/ruby_yacht/plugins.rb +1 -1
- data/lib/ruby_yacht/runner/build_images.rb +5 -7
- data/lib/ruby_yacht/runner/run_containers.rb +1 -2
- data/ruby_yacht.gemspec +2 -2
- data/spec/docker/run.bash +4 -0
- data/spec/dsl/configuration_spec.rb +29 -0
- data/spec/dsl/dsl_spec.rb +56 -0
- data/spec/dsl/hook_spec.rb +28 -5
- data/spec/dsl/project_spec.rb +46 -0
- data/spec/dsl/server_type_spec.rb +3 -0
- data/spec/fixtures/app-dependencies-dockerfile-generic +3 -1
- data/spec/fixtures/app-dependencies-dockerfile-generic-with-library-install +3 -1
- data/spec/fixtures/app-dependencies-dockerfile-rails +4 -3
- data/spec/fixtures/app-dependencies-dockerfile-rails-production +35 -0
- data/spec/fixtures/app-dependencies-dockerfile-with-https-repository +25 -0
- data/spec/fixtures/app-dependencies-dockerfile-with-no-repository +2 -0
- data/spec/fixtures/database-dockerfile +1 -1
- data/spec/fixtures/database-dockerfile-mysql +1 -1
- data/spec/fixtures/database-dockerfile-rails +2 -6
- data/spec/fixtures/database-dockerfile-rails-mysql +38 -0
- data/spec/fixtures/database-dockerfile-rails-with-no-repository +1 -3
- data/spec/fixtures/database-dockerfile-with-seed-hooks +1 -1
- data/spec/fixtures/local_config.yml +8 -0
- data/spec/fixtures/mars-dockerfile +0 -1
- data/spec/fixtures/mars-dockerfile-rails +0 -1
- data/spec/fixtures/mars-dockerfile-rails-with-no-repository +0 -1
- data/spec/fixtures/mars-dockerfile-with-after-checkout-hooks +0 -1
- data/spec/fixtures/mars-dockerfile-with-before-startup-hooks +0 -1
- data/spec/fixtures/mars-dockerfile-with-custom-file-copy +0 -1
- data/spec/fixtures/mars-dockerfile-with-local-database +0 -1
- data/spec/fixtures/mars-dockerfile-with-no-repository +0 -1
- data/spec/fixtures/mars-dockerfile-with-remote-database +0 -1
- data/spec/fixtures/mars-startup-rails +1 -1
- data/spec/fixtures/mars-startup-rails-with-no-repository +1 -1
- data/spec/fixtures/web-dockerfile-nginx +3 -0
- data/spec/integration/01_normal_config_spec.rb +352 -0
- data/spec/integration/{create_new_project_spec.rb → 02_creating_new_project_spec.rb} +2 -2
- data/spec/integration/03_no_repository_spec.rb +56 -0
- data/spec/integration/04_no_database_spec.rb +58 -0
- data/spec/integration/05_https_repository_spec.rb +52 -0
- data/spec/integration/06_production_environment_spec.rb +72 -0
- data/spec/integration/07_local_checkout_spec.rb +52 -0
- data/spec/integration/08_multiple_projects_spec.rb +46 -0
- data/spec/integration/09_titular_app_spec.rb +53 -0
- data/spec/integration/10_misc_scenarios_spec.rb +97 -0
- data/spec/integration/run.rb +18 -2
- data/spec/plugins/rails_spec.rb +73 -16
- data/spec/runner/build_images_spec.rb +17 -1
- data/spec/runner/run_containers_spec.rb +3 -3
- data/spec/support/integration_helpers.rb +18 -4
- metadata +30 -20
- data/spec/integration/build_images_spec.rb +0 -210
- data/spec/integration/build_spec.rb +0 -23
- data/spec/integration/checkout_spec.rb +0 -94
- data/spec/integration/implode_spec.rb +0 -20
- data/spec/integration/run_containers_spec.rb +0 -279
- data/spec/integration/services_spec.rb +0 -99
- data/spec/integration/shell_spec.rb +0 -31
- data/spec/integration/update_hosts_spec.rb +0 -35
@@ -17,11 +17,13 @@ common_config = {
|
|
17
17
|
'port' => ENV['DATABASE_PORT']
|
18
18
|
}
|
19
19
|
|
20
|
+
rails_env = ENV['RAILS_ENV'] || 'development'
|
21
|
+
|
20
22
|
database_config = {
|
21
|
-
|
23
|
+
rails_env => common_config
|
22
24
|
}
|
23
25
|
|
24
|
-
if
|
26
|
+
if rails_env == 'development'
|
25
27
|
database_config['test'] = common_config.dup
|
26
28
|
database_config['test']['database'] += '_test'
|
27
29
|
end
|
@@ -31,12 +33,12 @@ File.open('/var/code/config/database.yml', 'w') do |file|
|
|
31
33
|
end
|
32
34
|
|
33
35
|
secret_key_config = {
|
34
|
-
|
36
|
+
rails_env => {
|
35
37
|
'secret_key_base' => ENV['SECRET_KEY_BASE']
|
36
38
|
}
|
37
39
|
}
|
38
40
|
|
39
|
-
if
|
41
|
+
if rails_env == 'development'
|
40
42
|
secret_key_config['test'] = secret_key_config['development'].dup
|
41
43
|
end
|
42
44
|
|
@@ -5,6 +5,7 @@ module RubyYacht::Plugins
|
|
5
5
|
def self.load
|
6
6
|
load_server_type
|
7
7
|
load_hooks
|
8
|
+
load_environment_variables
|
8
9
|
end
|
9
10
|
|
10
11
|
# This method loads the configuration for the Rails server type.
|
@@ -24,26 +25,16 @@ module RubyYacht::Plugins
|
|
24
25
|
def self.load_hooks
|
25
26
|
RubyYacht.configure do
|
26
27
|
add_hooks(app_server_type: :rails, container_type: :app, script_folder: File.join(File.dirname(__FILE__), 'rails', 'scripts')) do
|
27
|
-
during :initialize_app_environment do
|
28
|
-
set_environment_variable 'RAILS_ENV' do
|
29
|
-
@project.rails_environment
|
30
|
-
end
|
31
|
-
set_environment_variable 'SECRET_KEY_BASE' do
|
32
|
-
@project.rails_secret_key_base
|
33
|
-
end
|
34
|
-
set_environment_variable 'EXCLUDED_GEM_GROUPS' do
|
35
|
-
groups = @project.rails_excluded_gem_groups.join(' ')
|
36
|
-
groups = '""' if groups == ''
|
37
|
-
groups
|
38
|
-
end
|
39
|
-
end
|
40
28
|
during(:install_libraries) { run_script :ruby, 'install_gems.rb' }
|
41
29
|
|
42
30
|
after(:build_checkout) { command 'bundle install --clean' }
|
43
31
|
|
44
|
-
|
45
|
-
|
46
|
-
|
32
|
+
if RubyYacht.configuration.find_server_type(:mysql)
|
33
|
+
during :load_database_seeds do
|
34
|
+
container_type :database
|
35
|
+
database_server_type :mysql
|
36
|
+
run_script :ruby, 'load_seeds.rb'
|
37
|
+
end
|
47
38
|
end
|
48
39
|
|
49
40
|
during :build_new_app do
|
@@ -53,7 +44,29 @@ module RubyYacht::Plugins
|
|
53
44
|
before(:startup) { run_script :ruby, 'update_rails_config.rb' }
|
54
45
|
before(:startup) { run_script :ruby, 'prepare_rails_for_launch.rb' }
|
55
46
|
|
56
|
-
during(:startup) { command 'rails s -b 0.0.0.0 -p $APP_PORT
|
47
|
+
during(:startup) { command 'rails s -b 0.0.0.0 -p $APP_PORT' }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# This method loads the hooks for setting environment variables for the
|
53
|
+
# Rails apps.
|
54
|
+
def self.load_environment_variables
|
55
|
+
RubyYacht.configure do
|
56
|
+
add_hooks app_server_type: :rails, container_type: :app do
|
57
|
+
during :initialize_app_environment do
|
58
|
+
set_environment_variable 'RAILS_ENV' do
|
59
|
+
@project.rails_environment == 'development' ? nil : @project.rails_environment
|
60
|
+
end
|
61
|
+
set_environment_variable 'SECRET_KEY_BASE' do
|
62
|
+
@project.rails_secret_key_base
|
63
|
+
end
|
64
|
+
set_environment_variable 'EXCLUDED_GEM_GROUPS' do
|
65
|
+
groups = @project.rails_excluded_gem_groups.join(' ')
|
66
|
+
groups = '""' if groups == ''
|
67
|
+
groups
|
68
|
+
end
|
69
|
+
end
|
57
70
|
end
|
58
71
|
end
|
59
72
|
end
|
data/lib/ruby_yacht/plugins.rb
CHANGED
@@ -15,12 +15,10 @@ module RubyYacht::Runner
|
|
15
15
|
def run
|
16
16
|
FileUtils.mkdir_p 'tmp'
|
17
17
|
|
18
|
-
default_system_prefix = projects.first.system_prefix
|
19
|
-
docker "network create #{default_system_prefix} 2> /dev/null"
|
20
|
-
|
21
18
|
projects.each do |project|
|
22
19
|
log "Building images for #{project.name}"
|
23
20
|
|
21
|
+
docker "network create #{project.system_prefix} 2> /dev/null"
|
24
22
|
id_path = File.join(ENV['HOME'], '.ssh', 'id_rsa')
|
25
23
|
tmp_id_path = File.join('tmp', 'id_rsa')
|
26
24
|
FileUtils.cp(id_path, tmp_id_path) if File.exist?(id_path)
|
@@ -133,10 +131,10 @@ module RubyYacht::Runner
|
|
133
131
|
|
134
132
|
@hook_events =
|
135
133
|
case folder_name
|
136
|
-
when 'app' then [:startup, :build_checkout, :build_new_app]
|
137
|
-
when 'app-dependencies' then [:initialize_app_environment, :install_libraries]
|
138
|
-
when 'database' then [:create_databases, :install_libraries, :load_database_seeds]
|
139
|
-
when 'web' then [:install_libraries, :add_project_landing, :add_app_config]
|
134
|
+
when 'app' then [:startup, :build_checkout, :build_new_app, :cleanup]
|
135
|
+
when 'app-dependencies' then [:initialize_app_environment, :install_libraries, :cleanup]
|
136
|
+
when 'database' then [:create_databases, :install_libraries, :load_database_seeds, :cleanup]
|
137
|
+
when 'web' then [:install_libraries, :add_project_landing, :add_app_config, :cleanup]
|
140
138
|
else []
|
141
139
|
end
|
142
140
|
|
@@ -11,10 +11,9 @@ module RubyYacht::Runner
|
|
11
11
|
|
12
12
|
# This method runs the logic of the command.
|
13
13
|
def run
|
14
|
-
@network = projects.first.system_prefix
|
15
|
-
|
16
14
|
projects.each do |project|
|
17
15
|
@project = project
|
16
|
+
@network = project.system_prefix
|
18
17
|
|
19
18
|
project.databases.select(&:local?).each do |database|
|
20
19
|
run_container database
|
data/ruby_yacht.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = 'ruby_yacht'
|
3
|
-
spec.version = '0.
|
4
|
-
spec.date = '2016-05-
|
3
|
+
spec.version = '0.7.0'
|
4
|
+
spec.date = '2016-05-20'
|
5
5
|
spec.description = "A DSL for building docker containers for a family of Rails apps"
|
6
6
|
spec.summary = "A DSL for building docker containers for a family of Rails apps"
|
7
7
|
spec.authors = ["John Brownlee"]
|
data/spec/docker/run.bash
CHANGED
@@ -31,6 +31,10 @@ else
|
|
31
31
|
EXISTING_CONTAINER=""
|
32
32
|
fi
|
33
33
|
|
34
|
+
if [[ -n $VERBOSE_DOCKER && $VERBOSE_DOCKER -eq 1 ]]; then
|
35
|
+
EXTRA_FLAGS="$EXTRA_FLAGS -e VERBOSE_DOCKER=1"
|
36
|
+
fi
|
37
|
+
|
34
38
|
if [ -z "$EXISTING_CONTAINER" ]; then
|
35
39
|
docker run -it $EXTRA_FLAGS --privileged --name=ruby-yacht-tests -v $PWD:/var/code/ruby-yacht ruby-yacht-tests /var/docker/startup.bash $*
|
36
40
|
RESULT=$?
|
@@ -339,6 +339,24 @@ describe RubyYacht::Configuration do
|
|
339
339
|
expect(configuration.server_types[0].server_attributes.count).to eq 1
|
340
340
|
end
|
341
341
|
|
342
|
+
it 'can add local config' do
|
343
|
+
configuration = RubyYacht::Configuration::DSL.new.run(Proc.new do
|
344
|
+
add_local_config File.join(File.dirname(__FILE__), '..', 'fixtures', 'local_config.yml')
|
345
|
+
end)
|
346
|
+
|
347
|
+
expect(configuration.local_config).to eq(
|
348
|
+
system_prefix: 'jupiter',
|
349
|
+
check_out_locally: true,
|
350
|
+
rails_environment: 'production',
|
351
|
+
database: {
|
352
|
+
host: 'localhost',
|
353
|
+
name: 'jupiter_testing',
|
354
|
+
username: 'jupiter',
|
355
|
+
password: 'jupiterpass'
|
356
|
+
}
|
357
|
+
)
|
358
|
+
end
|
359
|
+
|
342
360
|
it "can add `during` hooks" do
|
343
361
|
configuration = RubyYacht::Configuration::DSL.new.run(Proc.new do
|
344
362
|
add_hooks container_type: :app, app_server_type: :configuration_test, script_folder: './scripts' do
|
@@ -408,6 +426,17 @@ describe RubyYacht::Configuration do
|
|
408
426
|
expect(configuration.server_types[2].name).to eq :second_configuration_test
|
409
427
|
end
|
410
428
|
|
429
|
+
it "adds to the local config" do
|
430
|
+
RubyYacht.configuration.local_config = {system_prefix: 'apollo', rails_secret_key_base: 'ABC1234'}
|
431
|
+
RubyYacht.configure do
|
432
|
+
add_local_config File.join(File.dirname(__FILE__), '..', 'fixtures', 'local_config.yml')
|
433
|
+
end
|
434
|
+
|
435
|
+
configuration = RubyYacht.configuration
|
436
|
+
expect(configuration.local_config[:system_prefix]).to eq 'jupiter'
|
437
|
+
expect(configuration.local_config[:rails_secret_key_base]).to eq 'ABC1234'
|
438
|
+
end
|
439
|
+
|
411
440
|
context "with a server type that is already registered" do
|
412
441
|
before do
|
413
442
|
type = RubyYacht::ServerType.new
|
data/spec/dsl/dsl_spec.rb
CHANGED
@@ -298,6 +298,62 @@ describe RubyYacht::DSL::Base do
|
|
298
298
|
end
|
299
299
|
end
|
300
300
|
|
301
|
+
describe 'copy_local_config' do
|
302
|
+
before do
|
303
|
+
DSLTestHelpers::DSL.add_attribute :name
|
304
|
+
DSLTestHelpers::DSL.add_attribute :height
|
305
|
+
DSLTestHelpers::DSL.add_attribute :gender
|
306
|
+
DSLTestHelpers::DSL.add_boolean :vegan
|
307
|
+
|
308
|
+
@dsl = DSLTestHelpers::DSL.new
|
309
|
+
RubyYacht.configuration.local_config = {name: 'John', height: 120, vegan: false, last_name: 'Smith'}
|
310
|
+
end
|
311
|
+
|
312
|
+
context 'with a valid attribute' do
|
313
|
+
it 'copies the value from the local config' do
|
314
|
+
@dsl.copy_local_config(:name)
|
315
|
+
expect(@dsl.instance_eval { @name }).to eq 'John'
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
319
|
+
context 'with a path to the dictionary' do
|
320
|
+
it 'copies the value from the local config' do
|
321
|
+
RubyYacht.configuration.local_config = {people: {john: {height: 150}}}
|
322
|
+
@dsl.copy_local_config :height, from: 'people.john'
|
323
|
+
expect(@dsl.instance_eval { @height }).to eq 150
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
context 'with a false boolean attribute' do
|
328
|
+
it 'leaves the value false' do
|
329
|
+
@dsl.copy_local_config :vegan
|
330
|
+
expect(@dsl.instance_eval { @vegan }).to be_falsey
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
context 'with a true boolean attribute' do
|
335
|
+
it 'sets the value to true' do
|
336
|
+
RubyYacht.configuration.local_config[:vegan] = true
|
337
|
+
@dsl.copy_local_config :vegan
|
338
|
+
expect(@dsl.instance_eval { @vegan }).to be_truthy
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
context 'with an attribute that is not defined on the DSL' do
|
343
|
+
it 'raises an exception' do
|
344
|
+
expect { @dsl.copy_local_config :last_name }.to raise_exception 'Undefined field in DSLTestHelpers::DSL: last_name'
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
context 'with an attribute with no value in the config file' do
|
349
|
+
it 'leaves the value nil' do
|
350
|
+
@dsl.copy_local_config :gender
|
351
|
+
expect(@dsl.instance_eval { @gender }).to be_nil
|
352
|
+
end
|
353
|
+
end
|
354
|
+
end
|
355
|
+
|
356
|
+
|
301
357
|
describe "check_required_attributes" do
|
302
358
|
before do
|
303
359
|
DSLTestHelpers::DSL.add_attribute :name
|
data/spec/dsl/hook_spec.rb
CHANGED
@@ -335,14 +335,37 @@ describe RubyYacht::Hook do
|
|
335
335
|
end
|
336
336
|
|
337
337
|
describe "environment variable behavior" do
|
338
|
-
|
338
|
+
context 'with a normal value' do
|
339
|
+
let(:behavior) { RubyYacht::Hook::EnvironmentVariableBehavior.new('SECRET_KEY_BASE', Proc.new { 'abc'}) }
|
339
340
|
|
340
|
-
|
341
|
-
|
341
|
+
it 'sets the environment variable as its docker command' do
|
342
|
+
expect(behavior.dockerfile_command).to eq 'ENV SECRET_KEY_BASE abc'
|
343
|
+
end
|
344
|
+
|
345
|
+
it 'sets the environment variable as its shell command' do
|
346
|
+
expect(behavior.shell_command).to eq 'export SECRET_KEY_BASE="abc"'
|
347
|
+
end
|
342
348
|
end
|
343
349
|
|
344
|
-
|
345
|
-
|
350
|
+
context 'with a blank value' do
|
351
|
+
let(:behavior) { RubyYacht::Hook::EnvironmentVariableBehavior.new('SECRET_KEY_BASE', Proc.new { '' }) }
|
352
|
+
|
353
|
+
it 'sets the environment variable as its docker command' do
|
354
|
+
expect(behavior.dockerfile_command).to eq 'ENV SECRET_KEY_BASE '
|
355
|
+
end
|
356
|
+
|
357
|
+
it 'sets the environment variable as its shell command' do
|
358
|
+
expect(behavior.shell_command).to eq 'export SECRET_KEY_BASE=""'
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
context 'with a nil value' do
|
363
|
+
let(:behavior) { RubyYacht::Hook::EnvironmentVariableBehavior.new('SECRET_KEY_BASE', Proc.new { nil }) }
|
364
|
+
|
365
|
+
it 'has a nil command' do
|
366
|
+
expect(behavior.dockerfile_command).to be_nil
|
367
|
+
expect(behavior.shell_command).to be_nil
|
368
|
+
end
|
346
369
|
end
|
347
370
|
end
|
348
371
|
end
|
data/spec/dsl/project_spec.rb
CHANGED
@@ -26,6 +26,7 @@ describe RubyYacht::Project do
|
|
26
26
|
@builder = Proc.new do
|
27
27
|
system_prefix :a
|
28
28
|
repository "github.com"
|
29
|
+
repository_protocol :https
|
29
30
|
|
30
31
|
app :generic, :app1 do
|
31
32
|
repository_name 'brownleej/test1'
|
@@ -57,6 +58,7 @@ describe RubyYacht::Project do
|
|
57
58
|
expect(project.name).to eq :test_project
|
58
59
|
expect(project.system_prefix).to eq :a
|
59
60
|
expect(project.repository).to eq "github.com"
|
61
|
+
expect(project.repository_protocol).to eq :https
|
60
62
|
expect(project.primary_app).to eq :app1
|
61
63
|
|
62
64
|
expect(project.apps.map(&:name)).to eq [:app1, :app2]
|
@@ -68,6 +70,9 @@ describe RubyYacht::Project do
|
|
68
70
|
|
69
71
|
it "requires the system prefix" do
|
70
72
|
@builder = Proc.new do
|
73
|
+
repository 'github.com'
|
74
|
+
repository_protocol :https
|
75
|
+
|
71
76
|
app :generic, :app1 do
|
72
77
|
repository_name 'brownleej/test1'
|
73
78
|
end
|
@@ -101,6 +106,7 @@ describe RubyYacht::Project do
|
|
101
106
|
it "requires the repository" do
|
102
107
|
@builder = Proc.new do
|
103
108
|
system_prefix :a
|
109
|
+
repository_protocol :https
|
104
110
|
|
105
111
|
app :generic, :app1 do
|
106
112
|
repository_name 'brownleej/test1'
|
@@ -132,10 +138,46 @@ describe RubyYacht::Project do
|
|
132
138
|
expect { project }.to raise_exception "Missing required attribute repository for RubyYacht::Project::DSL"
|
133
139
|
end
|
134
140
|
|
141
|
+
it 'defaults the repository protocol to ssh' do
|
142
|
+
@builder = Proc.new do
|
143
|
+
system_prefix :a
|
144
|
+
repository 'github.com'
|
145
|
+
|
146
|
+
app :generic, :app1 do
|
147
|
+
repository_name 'brownleej/test1'
|
148
|
+
end
|
149
|
+
|
150
|
+
app :generic, :app2 do
|
151
|
+
repository_name 'brownleej/test2'
|
152
|
+
end
|
153
|
+
|
154
|
+
database :sqlite, :project1 do
|
155
|
+
host "localhost"
|
156
|
+
username "test"
|
157
|
+
password "test"
|
158
|
+
port 1234
|
159
|
+
container_label :sqlite
|
160
|
+
end
|
161
|
+
|
162
|
+
web_server :apache, :web do
|
163
|
+
domain 'test.com'
|
164
|
+
end
|
165
|
+
|
166
|
+
dns_server do
|
167
|
+
server '8.10.1.1'
|
168
|
+
end
|
169
|
+
|
170
|
+
primary_app :app1
|
171
|
+
end
|
172
|
+
|
173
|
+
expect(project.repository_protocol).to eq :ssh
|
174
|
+
end
|
175
|
+
|
135
176
|
it "does not require any apps" do
|
136
177
|
@builder = Proc.new do
|
137
178
|
system_prefix :a
|
138
179
|
repository "github.com"
|
180
|
+
repository_protocol :https
|
139
181
|
|
140
182
|
database :sqlite, :project1 do
|
141
183
|
host "localhost"
|
@@ -163,6 +205,7 @@ describe RubyYacht::Project do
|
|
163
205
|
@builder = Proc.new do
|
164
206
|
system_prefix :a
|
165
207
|
repository "github.com"
|
208
|
+
repository_protocol :https
|
166
209
|
|
167
210
|
app :generic, :app1 do
|
168
211
|
repository_name 'brownleej/test1'
|
@@ -194,6 +237,7 @@ describe RubyYacht::Project do
|
|
194
237
|
@builder = Proc.new do
|
195
238
|
system_prefix :a
|
196
239
|
repository "github.com"
|
240
|
+
repository_protocol :https
|
197
241
|
|
198
242
|
app :generic, :app1 do
|
199
243
|
repository_name 'brownleej/test1'
|
@@ -221,6 +265,7 @@ describe RubyYacht::Project do
|
|
221
265
|
@builder = Proc.new do
|
222
266
|
system_prefix :a
|
223
267
|
repository "github.com"
|
268
|
+
repository_protocol :https
|
224
269
|
|
225
270
|
app :generic, :app1 do
|
226
271
|
repository_name 'brownleej/test1'
|
@@ -252,6 +297,7 @@ describe RubyYacht::Project do
|
|
252
297
|
@builder = Proc.new do
|
253
298
|
system_prefix :a
|
254
299
|
repository "github.com"
|
300
|
+
repository_protocol :https
|
255
301
|
|
256
302
|
app :generic, :app1 do
|
257
303
|
repository_name 'brownleej/test1'
|
@@ -82,6 +82,7 @@ describe RubyYacht::ServerType do
|
|
82
82
|
end
|
83
83
|
|
84
84
|
project = RubyYacht.configuration.projects.last
|
85
|
+
expect(RubyYacht::Project::DSL.new(:test).singleton_class.all_attributes).to include :app_type_test_foo
|
85
86
|
expect(project.app_type_test_environment).to eq 'staging'
|
86
87
|
expect(project.app_type_test_foo).to eq 'test value'
|
87
88
|
end
|
@@ -99,6 +100,8 @@ describe RubyYacht::ServerType do
|
|
99
100
|
end
|
100
101
|
end
|
101
102
|
end
|
103
|
+
|
104
|
+
expect(RubyYacht::App::DSL.new(:app_type_test, :test1).singleton_class.all_attributes).to include :app_type_test_bar
|
102
105
|
|
103
106
|
project = RubyYacht.configuration.projects.last
|
104
107
|
app = project.apps.last
|