roro 0.3.7 → 0.3.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Guardfile +1 -1
- data/lib/roro.rb +1 -0
- data/lib/roro/cli.rb +69 -3
- data/lib/roro/cli/cli.rb +99 -0
- data/lib/roro/cli/configuration.rb +1 -0
- data/lib/roro/cli/expose.rb +8 -7
- data/lib/roro/cli/generate/config.rb +5 -5
- data/lib/roro/cli/generate/generate_keys.rb +9 -25
- data/lib/roro/cli/greenfield.rb +10 -21
- data/lib/roro/cli/obfuscate.rb +10 -10
- data/lib/roro/cli/rollon.rb +1 -1
- data/lib/roro/cli/rollon/stories.rb +3 -3
- data/lib/roro/cli/{templates/ruby_gem/docker/env_files/.keep → rollon/stories/database.rb} +0 -0
- data/lib/roro/cli/rollon/stories/rails.rb +1 -0
- data/lib/roro/cli/rollon/{database → stories/rails/database}/database.rb +0 -0
- data/lib/roro/cli/rollon/{database → stories/rails/database}/with_mysql.rb +0 -0
- data/lib/roro/cli/rollon/{database → stories/rails/database}/with_postgres.rb +0 -0
- data/lib/roro/cli/rollon/stories/ruby_gem.rb +77 -0
- data/lib/roro/cli/rollon/stories/ruby_gem/with_ci_cd.rb +60 -0
- data/lib/roro/cli/rollon/stories/stories.rb +7 -0
- data/lib/roro/cli/ruby_gem.rb +60 -47
- data/lib/roro/cli/templates/base/Dockerfile.tt +53 -15
- data/lib/roro/cli/templates/greenfield/Dockerfile.tt +1 -1
- data/lib/roro/cli/templates/ruby_gem/{config.yml → .circleci/config.yml} +0 -0
- data/lib/roro/cli/templates/ruby_gem/docker-compose.yml +3 -3
- data/lib/roro/cli/templates/ruby_gem/roro/containers/gem/Dockerfile.tt +9 -0
- data/lib/roro/cli/templates/ruby_gem/{docker/keys → roro/env_files}/.keep +0 -0
- data/{tmp/.gitkeep → lib/roro/cli/templates/ruby_gem/roro/keys/.keep} +0 -0
- data/lib/roro/version.rb +1 -1
- data/roro.gemspec +2 -2
- data/vendor/cache/gem-release-2.1.1.gem +0 -0
- metadata +34 -19
- data/lib/roro/cli/templates/quickstart/Dockerfile.tt +0 -20
- data/lib/roro/cli/templates/quickstart/database.yml +0 -85
- data/lib/roro/cli/templates/quickstart/docker-compose.yml +0 -17
- data/lib/roro/cli/templates/quickstart/entrypoint.sh +0 -8
- data/lib/roro/cli/templates/ruby_gem/.gitignore +0 -8
- data/lib/roro/cli/templates/ruby_gem/docker/containers/app/Dockerfile.tt +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d2920a993245b49f9ac51cf665584007cd9cf1b93e5910a18201b914d62e9b1
|
4
|
+
data.tar.gz: 44fe546dafd609adb0162cc2296f8562afa7f5cd6cb23bb7b607f1aaf2b08bc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be706b2f7677d2e0b1967b645190197be96ed89cdab015bba2de649dd300d395b17acc395feb4687d2a3d7c9805d51c788fa10af3d1163d37d51ef67753d272a
|
7
|
+
data.tar.gz: 052aca113a452bf5cf9ee7c01f18e0d4c33e46cdfea5a2d97e768c0652c22d952e4d905770a985d150279c9c8efb7fa7b8a6fed2b2b165bcfa11c194a458468b
|
data/Guardfile
CHANGED
@@ -11,7 +11,7 @@ guard :minitest, options do
|
|
11
11
|
|
12
12
|
watch(%r{^test/(.*)\/?test_(.*)\.rb$})
|
13
13
|
watch(%r{^test/(.*)\/?(.*)_test\.rb$})
|
14
|
-
watch(%r{^lib/roro/
|
14
|
+
watch(%r{^lib/roro/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
|
15
15
|
watch(%r{^test/thor_helper\.rb$}) { 'test' }
|
16
16
|
watch(%r{^test/fixtures/files/(.*/)?([^/]+)\.yml$}) { 'test' }
|
17
17
|
end
|
data/lib/roro.rb
CHANGED
data/lib/roro/cli.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
|
-
require 'thor'
|
2
1
|
require 'roro/cli/base/base'
|
3
|
-
require 'roro/cli/rollon'
|
4
2
|
require 'roro/cli/greenfield'
|
5
3
|
require 'roro/cli/obfuscate'
|
6
4
|
require 'roro/cli/expose'
|
7
|
-
require 'roro/cli/ruby_gem'
|
8
5
|
require 'roro/cli/generate/config/rails'
|
9
6
|
require 'roro/cli/generate/config'
|
10
7
|
require 'roro/cli/generate/generate_keys'
|
11
8
|
require 'roro/cli/configuration'
|
12
9
|
|
10
|
+
require 'roro/cli/rollon'
|
13
11
|
module Roro
|
14
12
|
|
15
13
|
class CLI < Thor
|
@@ -19,5 +17,73 @@ module Roro
|
|
19
17
|
def self.source_root
|
20
18
|
File.dirname(__FILE__) + '/cli/templates'
|
21
19
|
end
|
20
|
+
|
21
|
+
|
22
|
+
desc "rollon::rails", "Generates files for and makes changes to your app
|
23
|
+
so it can run using Docker containers."
|
24
|
+
method_option :interactive, desc: "Set up your environment variables as
|
25
|
+
you go."
|
26
|
+
map "rollon::rails" => "rollon_rails"
|
27
|
+
|
28
|
+
def rollon_rails
|
29
|
+
rollon
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
desc "greenfield::rails", "Greenfield a new, dockerized rails app with
|
34
|
+
either MySQL or PostgreSQL in a separate container."
|
35
|
+
|
36
|
+
method_option :env_vars, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "key1:value1 key2:value2"
|
37
|
+
method_option :interactive, desc: "Set up your environment variables as you go."
|
38
|
+
method_option :force, desc: "force over-write of existing files"
|
39
|
+
|
40
|
+
map "greenfield::rails" => "greenfield_rails"
|
41
|
+
|
42
|
+
def greenfield_rails(*args)
|
43
|
+
greenfield(*args)
|
44
|
+
end
|
45
|
+
desc "generate::exposed", "Generate private .env files from
|
46
|
+
encrypted .env.enc files inside the roro directory."
|
47
|
+
map "generate::exposed" => "generate_exposed"
|
48
|
+
|
49
|
+
def generate_exposed(*args)
|
50
|
+
expose(*args)
|
51
|
+
end
|
52
|
+
|
53
|
+
desc "generate::key", "Generate a key inside roro/keys. Takes the name of
|
54
|
+
an environment as an argument to private .env files from
|
55
|
+
encrypted .env.enc files inside the roro directory.
|
56
|
+
Expose encrypted files"
|
57
|
+
|
58
|
+
map "generate::key" => "generate_key"
|
59
|
+
method_option :environment, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
|
60
|
+
|
61
|
+
def generate_key(*args)
|
62
|
+
generate_key_or_keys(*args)
|
63
|
+
end
|
64
|
+
|
65
|
+
desc "generate::keys", "Generate keys for each environment inside roro/keys.
|
66
|
+
If you have .env files like 'roro/containers/app/[staging_env].env' and
|
67
|
+
'roro/[circle_ci_env].env' it will generate '/roro/keys/[staging_env].key'
|
68
|
+
and '/roro/keys/[circle_ci_env].key'."
|
69
|
+
map "generate::keys" => "generate_keys"
|
70
|
+
|
71
|
+
def generate_keys(*args)
|
72
|
+
generate_key(*args)
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "generate::config", "Generate a config file at .roro_config.yml"
|
76
|
+
map "generate::config" => "generate_config"
|
77
|
+
|
78
|
+
def generate_config
|
79
|
+
create_file ".roro_config.yml", @config.app.to_yaml
|
80
|
+
end
|
81
|
+
|
82
|
+
desc "generate::obfuscated", "obfuscates any files matching the pattern ./roro/**/*.env"
|
83
|
+
map "generate::obfuscated" => "generate_obfuscated"
|
84
|
+
|
85
|
+
def generate_obfuscated(*args)
|
86
|
+
obfuscate(*args)
|
87
|
+
end
|
22
88
|
end
|
23
89
|
end
|
data/lib/roro/cli/cli.rb
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'roro/cli/base/base'
|
3
|
+
require 'roro/cli/rollon/stories'
|
4
|
+
require 'roro/cli/rollon'
|
5
|
+
require 'roro/cli/greenfield'
|
6
|
+
require 'roro/cli/obfuscate'
|
7
|
+
require 'roro/cli/expose'
|
8
|
+
require 'roro/cli/ruby_gem'
|
9
|
+
require 'roro/cli/generate/config/rails'
|
10
|
+
require 'roro/cli/generate/config'
|
11
|
+
require 'roro/cli/generate/generate_keys'
|
12
|
+
require 'roro/cli/configuration'
|
13
|
+
|
14
|
+
module Roro
|
15
|
+
|
16
|
+
class CLI < Thor
|
17
|
+
|
18
|
+
include Thor::Actions
|
19
|
+
|
20
|
+
def self.source_root
|
21
|
+
File.dirname(__FILE__) + '/cli/templates'
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "rollon::ruby_gem", "Generate files for containerized gem testing, CircleCI, and releasing to RubyGems."
|
25
|
+
method_option :rubies, type: :array, banner: "2.5.3 2.4.2"
|
26
|
+
map "rollon::ruby_gem" => "rollon_ruby_gem"
|
27
|
+
|
28
|
+
def rollon_ruby_gem(*args)
|
29
|
+
ruby_gem(*args)
|
30
|
+
end
|
31
|
+
|
32
|
+
desc "rollon::rails", "Generates files for and makes changes to your app
|
33
|
+
so it can run using Docker containers."
|
34
|
+
method_option :interactive, desc: "Set up your environment variables as
|
35
|
+
you go."
|
36
|
+
map "rollon::rails" => "rollon_rails"
|
37
|
+
|
38
|
+
def rollon_rails
|
39
|
+
rollon
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
desc "greenfield::rails", "Greenfield a new, dockerized rails app with
|
44
|
+
either MySQL or PostgreSQL in a separate container."
|
45
|
+
|
46
|
+
method_option :env_vars, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "key1:value1 key2:value2"
|
47
|
+
method_option :interactive, desc: "Set up your environment variables as you go."
|
48
|
+
method_option :force, desc: "force over-write of existing files"
|
49
|
+
|
50
|
+
map "greenfield::rails" => "greenfield_rails"
|
51
|
+
|
52
|
+
def greenfield_rails(*args)
|
53
|
+
greenfield(*args)
|
54
|
+
end
|
55
|
+
desc "generate::exposed", "Generate private .env files from
|
56
|
+
encrypted .env.enc files inside the roro directory."
|
57
|
+
map "generate::exposed" => "generate_exposed"
|
58
|
+
|
59
|
+
def generate_exposed(*args)
|
60
|
+
expose(*args)
|
61
|
+
end
|
62
|
+
|
63
|
+
desc "generate::key", "Generate a key inside roro/keys. Takes the name of
|
64
|
+
an environment as an argument to private .env files from
|
65
|
+
encrypted .env.enc files inside the roro directory.
|
66
|
+
Expose encrypted files"
|
67
|
+
|
68
|
+
map "generate::key" => "generate_key"
|
69
|
+
method_option :environment, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
|
70
|
+
|
71
|
+
def generate_key(*args)
|
72
|
+
generate_key_or_keys(*args)
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "generate::keys", "Generate keys for each environment inside roro/keys.
|
76
|
+
If you have .env files like 'roro/containers/app/[staging_env].env' and
|
77
|
+
'roro/[circle_ci_env].env' it will generate '/roro/keys/[staging_env].key'
|
78
|
+
and '/roro/keys/[circle_ci_env].key'."
|
79
|
+
map "generate::keys" => "generate_keys"
|
80
|
+
|
81
|
+
def generate_keys(*args)
|
82
|
+
generate_key(*args)
|
83
|
+
end
|
84
|
+
|
85
|
+
desc "generate::config", "Generate a config file at .roro_config.yml"
|
86
|
+
map "generate::config" => "generate_config"
|
87
|
+
|
88
|
+
def generate_config
|
89
|
+
create_file ".roro_config.yml", @config.app.to_yaml
|
90
|
+
end
|
91
|
+
|
92
|
+
desc "generate::obfuscated", "obfuscates any files matching the pattern ./roro/**/*.env"
|
93
|
+
map "generate::obfuscated" => "generate_obfuscated"
|
94
|
+
|
95
|
+
def generate_obfuscated(*args)
|
96
|
+
obfuscate(*args)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
data/lib/roro/cli/expose.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
module Roro
|
2
2
|
class CLI < Thor
|
3
|
+
|
4
|
+
no_commands do
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
HandsomeFencer::Crypto.expose(environment, 'roro')
|
6
|
+
def expose(*args)
|
7
|
+
environments = args.first ? [args.first] : gather_environments
|
8
|
+
environments.each do |environment|
|
9
|
+
HandsomeFencer::Crypto.expose(environment, 'roro')
|
10
|
+
end
|
10
11
|
end
|
11
12
|
end
|
12
13
|
end
|
13
|
-
end
|
14
|
+
end
|
@@ -2,12 +2,12 @@ module Roro
|
|
2
2
|
class CLI < Thor
|
3
3
|
include Thor::Actions
|
4
4
|
|
5
|
-
desc "generate::config::roro", "
|
6
|
-
map "generate::config::roro" => "generate_roro_config"
|
5
|
+
# desc "generate::config::roro", "Generate a config file at .roro_config.yml"
|
6
|
+
# map "generate::config::roro" => "generate_roro_config"
|
7
7
|
|
8
8
|
|
9
|
-
def generate_roro_config
|
10
|
-
|
11
|
-
end
|
9
|
+
# def generate_roro_config
|
10
|
+
# create_file ".roro_config.yml", @config.app.to_yaml
|
11
|
+
# end
|
12
12
|
end
|
13
13
|
end
|
@@ -1,33 +1,17 @@
|
|
1
|
-
require 'openssl'
|
2
|
-
require 'base64'
|
3
|
-
require 'handsome_fencer/crypto'
|
4
|
-
|
5
1
|
module Roro
|
6
2
|
|
7
3
|
class CLI < Thor
|
4
|
+
|
5
|
+
no_commands do
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
desc "generate_key", "Generate a key for each environment"
|
19
|
-
method_option :environment, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
|
20
|
-
|
21
|
-
def generate_key(*args)
|
22
|
-
environments = args.first ? [args.first] : gather_environments
|
23
|
-
environments.each do |environment|
|
24
|
-
|
25
|
-
confirm_files_decrypted?(environment)
|
26
|
-
create_file "roro/keys/#{environment}.key", encoded_key
|
7
|
+
def generate_key_or_keys(*args)
|
8
|
+
environments = args.first ? [args.first] : gather_environments
|
9
|
+
environments.each do |environment|
|
10
|
+
|
11
|
+
confirm_files_decrypted?(environment)
|
12
|
+
create_file "roro/keys/#{environment}.key", encoded_key
|
13
|
+
end
|
27
14
|
end
|
28
|
-
end
|
29
|
-
|
30
|
-
no_commands do
|
31
15
|
|
32
16
|
def encoded_key
|
33
17
|
@cipher = OpenSSL::Cipher.new 'AES-128-CBC'
|
data/lib/roro/cli/greenfield.rb
CHANGED
@@ -1,28 +1,17 @@
|
|
1
|
-
require 'os'
|
2
|
-
|
3
1
|
module Roro
|
4
2
|
|
5
3
|
class CLI < Thor
|
6
|
-
|
7
|
-
include Thor::Actions
|
8
|
-
|
9
|
-
desc "greenfield", "Greenfield a brand new rails app using Docker's instructions"
|
10
|
-
|
11
|
-
method_option :env_vars, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "key1:value1 key2:value2"
|
12
|
-
method_option :interactive, desc: "Set up your environment variables as you go."
|
13
|
-
method_option :force, desc: "force over-write of existing files"
|
14
|
-
|
15
|
-
|
16
|
-
def greenfield
|
17
|
-
confirm_directory_empty
|
18
|
-
confirm_dependencies
|
19
|
-
remove_roro_artifacts
|
20
|
-
configure_for_greenfielding
|
21
|
-
copy_greenfield_files
|
22
|
-
run_greenfield_commands
|
23
|
-
end
|
24
|
-
|
4
|
+
|
25
5
|
no_commands do
|
6
|
+
|
7
|
+
def greenfield
|
8
|
+
confirm_directory_empty
|
9
|
+
confirm_dependencies
|
10
|
+
remove_roro_artifacts
|
11
|
+
configure_for_greenfielding
|
12
|
+
copy_greenfield_files
|
13
|
+
run_greenfield_commands
|
14
|
+
end
|
26
15
|
|
27
16
|
def configure_for_greenfielding
|
28
17
|
@config ||= Roro::Configuration.new(options)
|
data/lib/roro/cli/obfuscate.rb
CHANGED
@@ -3,16 +3,16 @@ require 'handsome_fencer/crypto'
|
|
3
3
|
module Roro
|
4
4
|
|
5
5
|
class CLI < Thor
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
6
|
+
|
7
|
+
no_commands do
|
8
|
+
include Thor::Actions
|
9
|
+
include HandsomeFencer::Crypto
|
10
|
+
|
11
|
+
def obfuscate(*args)
|
12
|
+
environments = args.first ? [args.first] : gather_environments
|
13
|
+
environments.each do |environment|
|
14
|
+
HandsomeFencer::Crypto.obfuscate(environment, 'roro')
|
15
|
+
end
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/roro/cli/rollon.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'roro/cli/rollon/stories/ruby_gem'
|
2
|
+
require 'roro/cli/rollon/stories/rails'
|
3
|
+
require 'roro/cli/rollon/stories/database'
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
# require 'roro/cli/rollon/stories/ruby_gem/with_ci_cd.rb'
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'roro/cli/rollon/stories/ruby_gem/with_ci_cd.rb'
|
2
|
+
# class RubyGem
|
3
|
+
# attr_reader :getsome
|
4
|
+
|
5
|
+
# def initialize
|
6
|
+
# @getsome = 'getsome'
|
7
|
+
# end
|
8
|
+
# end
|
9
|
+
|
10
|
+
# include Stories::RubyGem
|
11
|
+
# module Rollon
|
12
|
+
# module Story
|
13
|
+
|
14
|
+
# end
|
15
|
+
# end
|
16
|
+
# class Rollon::Story::RubyGem < Roro::CLI
|
17
|
+
# attr_reader :getsome
|
18
|
+
# def initialize
|
19
|
+
# @getsome = 'getsome'
|
20
|
+
# end
|
21
|
+
# end
|
22
|
+
|
23
|
+
# # module Roro
|
24
|
+
|
25
|
+
# # class CLI < Thor
|
26
|
+
|
27
|
+
|
28
|
+
# # no_commands do
|
29
|
+
|
30
|
+
# # def ruby_gem(*args)
|
31
|
+
|
32
|
+
|
33
|
+
# # end
|
34
|
+
# # def copy_ruby_gem_files
|
35
|
+
# # copy_file 'ruby_gem/config.yml', '.circleci/config.yml'
|
36
|
+
# # end
|
37
|
+
# # end
|
38
|
+
|
39
|
+
# # def ruby_gem
|
40
|
+
# # rubies = options["rubies"] || ["2.5.3", "2.6.0"]
|
41
|
+
# # copy_file 'ruby_gem/docker-compose.yml', 'docker-compose.yml'
|
42
|
+
# # copy_file 'ruby_gem/config.yml', '.circleci/config.yml'
|
43
|
+
# # copy_file 'ruby_gem/setup-gem-credentials.sh', '.circleci/setup-gem-credentials.sh'
|
44
|
+
# # directory 'ruby_gem/docker', 'docker', { ruby_version: "2.5"}
|
45
|
+
|
46
|
+
# # rubies.each do |ruby|
|
47
|
+
# # rubydash = ruby.gsub('.', '-')
|
48
|
+
# # rubyunderscore = ruby.gsub('.', '_')
|
49
|
+
# # doc_loc = "docker/containers/#{rubyunderscore}/Dockerfile"
|
50
|
+
# # content = <<-EOM
|
51
|
+
|
52
|
+
# # app-#{rubydash}:
|
53
|
+
# # build:
|
54
|
+
# # context: .
|
55
|
+
# # dockerfile: #{doc_loc}
|
56
|
+
# # command: rake test
|
57
|
+
# # EOM
|
58
|
+
# # append_to_file 'docker-compose.yml', content
|
59
|
+
# # template 'ruby_gem/docker/containers/app/Dockerfile.tt', doc_loc, {ruby_version: ruby}
|
60
|
+
# # # append_to_file 'docker-compose.yml', "\n app-#{ruby}:\n build:\n\s\s\s\s\s\scontext:"
|
61
|
+
# # end
|
62
|
+
|
63
|
+
# # # end
|
64
|
+
# # # <<EOF
|
65
|
+
# # # This is the first way of creating
|
66
|
+
# # # here document ie. multiple line string.
|
67
|
+
# # # EOF
|
68
|
+
# # # %w[app web].each do |container|
|
69
|
+
# # # options = {
|
70
|
+
# # # email: @env_hash['DOCKERHUB_EMAIL'],
|
71
|
+
# # # app_name: @env_hash['APP_NAME'] }
|
72
|
+
# # #
|
73
|
+
# # # template("docker/containers/#{container}/Dockerfile.tt", "docker/containers/#{container}/Dockerfile", options)
|
74
|
+
# # # end
|
75
|
+
# # end
|
76
|
+
# # end
|
77
|
+
# # end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Roro
|
2
|
+
class CLI < Thor
|
3
|
+
|
4
|
+
desc "rollon::ruby_gem::with_ci_cd", "Generate files for containerized gem testing, CircleCI, and releasing to RubyGems."
|
5
|
+
method_option :rubies, type: :array, banner: "2.5.3 2.4.2"
|
6
|
+
map "rollon::ruby_gem::with_ci_cd" => "rollon_ruby_gem_with_ci_cd"
|
7
|
+
|
8
|
+
def rollon_ruby_gem_with_ci_cd(*args)
|
9
|
+
ruby_gem_with_ci_cd(*args)
|
10
|
+
end
|
11
|
+
|
12
|
+
no_commands do
|
13
|
+
def ruby_gem_with_ci_cd(*args)
|
14
|
+
configure_for_rollon
|
15
|
+
directory 'ruby_gem', './', @config.app
|
16
|
+
gitignore_sensitive_files
|
17
|
+
append_to_file ".gitignore", "Gemfile.lock\n"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
# # def ruby_gem
|
23
|
+
# # rubies = options["rubies"] || ["2.5.3", "2.6.0"]
|
24
|
+
# # copy_file 'ruby_gem/docker-compose.yml', 'docker-compose.yml'
|
25
|
+
# # copy_file 'ruby_gem/config.yml', '.circleci/config.yml'
|
26
|
+
# # copy_file 'ruby_gem/setup-gem-credentials.sh', '.circleci/setup-gem-credentials.sh'
|
27
|
+
# # directory 'ruby_gem/docker', 'docker', { ruby_version: "2.5"}
|
28
|
+
|
29
|
+
# # rubies.each do |ruby|
|
30
|
+
# # rubydash = ruby.gsub('.', '-')
|
31
|
+
# # rubyunderscore = ruby.gsub('.', '_')
|
32
|
+
# # doc_loc = "docker/containers/#{rubyunderscore}/Dockerfile"
|
33
|
+
# # content = <<-EOM
|
34
|
+
|
35
|
+
# # app-#{rubydash}:
|
36
|
+
# # build:
|
37
|
+
# # context: .
|
38
|
+
# # dockerfile: #{doc_loc}
|
39
|
+
# # command: rake test
|
40
|
+
# # EOM
|
41
|
+
# # append_to_file 'docker-compose.yml', content
|
42
|
+
# # template 'ruby_gem/docker/containers/app/Dockerfile.tt', doc_loc, {ruby_version: ruby}
|
43
|
+
# # # append_to_file 'docker-compose.yml', "\n app-#{ruby}:\n build:\n\s\s\s\s\s\scontext:"
|
44
|
+
# # end
|
45
|
+
|
46
|
+
# # # end
|
47
|
+
# # # <<EOF
|
48
|
+
# # # This is the first way of creating
|
49
|
+
# # # here document ie. multiple line string.
|
50
|
+
# # # EOF
|
51
|
+
# # # %w[app web].each do |container|
|
52
|
+
# # # options = {
|
53
|
+
# # # email: @env_hash['DOCKERHUB_EMAIL'],
|
54
|
+
# # # app_name: @env_hash['APP_NAME'] }
|
55
|
+
# # #
|
56
|
+
# # # template("docker/containers/#{container}/Dockerfile.tt", "docker/containers/#{container}/Dockerfile", options)
|
57
|
+
# # # end
|
58
|
+
# # end
|
59
|
+
# # end
|
60
|
+
# # end
|
data/lib/roro/cli/ruby_gem.rb
CHANGED
@@ -1,54 +1,67 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
1
|
+
# module Rollon
|
2
|
+
# module Story
|
3
|
+
|
4
|
+
# end
|
5
|
+
# end
|
6
|
+
# class Rollon::Story::RubyGem < Roro::CLI
|
7
|
+
# attr_reader :getsome
|
8
|
+
# def initialize
|
9
|
+
# @getsome = 'getsome'
|
10
|
+
# end
|
11
|
+
# end
|
4
12
|
|
5
|
-
|
13
|
+
# # module Roro
|
6
14
|
|
7
|
-
|
8
|
-
method_option :rubies, type: :array, banner: "2.5.3 2.4.2"
|
15
|
+
# # class CLI < Thor
|
9
16
|
|
10
|
-
no_commands do
|
11
|
-
def copy_ruby_gem_files
|
12
|
-
copy_file 'ruby_gem/config.yml', '.circleci/config.yml'
|
13
|
-
end
|
14
|
-
end
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
# # no_commands do
|
19
|
+
|
20
|
+
# # def ruby_gem(*args)
|
21
|
+
|
22
|
+
|
23
|
+
# # end
|
24
|
+
# # def copy_ruby_gem_files
|
25
|
+
# # copy_file 'ruby_gem/config.yml', '.circleci/config.yml'
|
26
|
+
# # end
|
27
|
+
# # end
|
28
|
+
|
29
|
+
# # def ruby_gem
|
30
|
+
# # rubies = options["rubies"] || ["2.5.3", "2.6.0"]
|
31
|
+
# # copy_file 'ruby_gem/docker-compose.yml', 'docker-compose.yml'
|
32
|
+
# # copy_file 'ruby_gem/config.yml', '.circleci/config.yml'
|
33
|
+
# # copy_file 'ruby_gem/setup-gem-credentials.sh', '.circleci/setup-gem-credentials.sh'
|
34
|
+
# # directory 'ruby_gem/docker', 'docker', { ruby_version: "2.5"}
|
22
35
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
36
|
+
# # rubies.each do |ruby|
|
37
|
+
# # rubydash = ruby.gsub('.', '-')
|
38
|
+
# # rubyunderscore = ruby.gsub('.', '_')
|
39
|
+
# # doc_loc = "docker/containers/#{rubyunderscore}/Dockerfile"
|
40
|
+
# # content = <<-EOM
|
28
41
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
42
|
+
# # app-#{rubydash}:
|
43
|
+
# # build:
|
44
|
+
# # context: .
|
45
|
+
# # dockerfile: #{doc_loc}
|
46
|
+
# # command: rake test
|
47
|
+
# # EOM
|
48
|
+
# # append_to_file 'docker-compose.yml', content
|
49
|
+
# # template 'ruby_gem/docker/containers/app/Dockerfile.tt', doc_loc, {ruby_version: ruby}
|
50
|
+
# # # append_to_file 'docker-compose.yml', "\n app-#{ruby}:\n build:\n\s\s\s\s\s\scontext:"
|
51
|
+
# # end
|
39
52
|
|
40
|
-
|
41
|
-
# <<EOF
|
42
|
-
# This is the first way of creating
|
43
|
-
# here document ie. multiple line string.
|
44
|
-
# EOF
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
53
|
+
# # # end
|
54
|
+
# # # <<EOF
|
55
|
+
# # # This is the first way of creating
|
56
|
+
# # # here document ie. multiple line string.
|
57
|
+
# # # EOF
|
58
|
+
# # # %w[app web].each do |container|
|
59
|
+
# # # options = {
|
60
|
+
# # # email: @env_hash['DOCKERHUB_EMAIL'],
|
61
|
+
# # # app_name: @env_hash['APP_NAME'] }
|
62
|
+
# # #
|
63
|
+
# # # template("docker/containers/#{container}/Dockerfile.tt", "docker/containers/#{container}/Dockerfile", options)
|
64
|
+
# # # end
|
65
|
+
# # end
|
66
|
+
# # end
|
67
|
+
# # end
|
@@ -1,44 +1,82 @@
|
|
1
|
+
## The FROM instruction below builds our first layer using an official image:
|
1
2
|
FROM ruby:<%= config['ruby_version'] %>
|
3
|
+
|
2
4
|
LABEL maintainer="<%= config['dockerhub_email'] %>"
|
3
5
|
|
6
|
+
## This is a rails app so, we will want to add node and yarn. In order for our
|
7
|
+
## container to trust yarn as a source, we first need to add yarn's public key.
|
8
|
+
## One good way to accomplish this is with apt-key, but apt-key is designed to
|
9
|
+
## send output to the terminal and not to stdout, and thus apt-key will send a
|
10
|
+
## warning message during the build context. One way to deal with the warning
|
11
|
+
## is to set an environment variable telling apt-get to be quiet. To do this,
|
12
|
+
## you'd first write an ENV instruction setting the environment variable, then
|
13
|
+
## write the RUN instruction adding the key to the container, and then you'd
|
14
|
+
## have to write another ENV instruction unsetting the variable. This would be
|
15
|
+
## ugly and inconvenient. Another way to deal with the warning is to just ignore
|
16
|
+
## it. There's no shame in that but ignoring it in the build context might
|
17
|
+
## condition us to ignore it in other contexts. But what if there was a way to
|
18
|
+
## deal with it that allowed you to set that variable just for the build
|
19
|
+
## context? Fortunately there is, using the ARG instruction. Variables set with
|
20
|
+
## ARG instructions stay in the build context while those set with ENV
|
21
|
+
## instructions follow into the container.
|
22
|
+
|
23
|
+
## Use an ARG instruction to set a variable disabling the apt-key warning:
|
24
|
+
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1
|
4
25
|
|
5
|
-
##
|
26
|
+
## Add yarn's public key using apt-key:
|
6
27
|
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
28
|
+
|
29
|
+
## Add yarn to our sources:
|
7
30
|
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
|
8
31
|
|
9
|
-
|
32
|
+
|
33
|
+
## Build a layer updating the image while adding node and yarn from the source
|
34
|
+
## above:
|
10
35
|
RUN apt-get update -qq && apt-get install -y build-essential git nodejs yarn
|
11
36
|
|
12
|
-
##
|
13
|
-
|
14
|
-
|
37
|
+
## We have two directories we'd like to follow from the build context into
|
38
|
+
## our containers. APP_HOME is where we'll do most of our work and BUNDLE_PATH
|
39
|
+
## is where we want bundler to store our gems.
|
15
40
|
|
16
|
-
##
|
41
|
+
## Set APP_HOME and BUNDLE_PATH as using ENV instructions:
|
42
|
+
ENV APP_HOME /usr/src/app/
|
17
43
|
ENV BUNDLE_PATH /gems
|
18
|
-
|
44
|
+
|
45
|
+
## Create both as directories to make sure they exist:
|
46
|
+
RUN mkdir ${APP_HOME}
|
47
|
+
RUN mkdir ${BUNDLE_PATH}
|
19
48
|
|
20
49
|
## Tell Docker to create volumes for our workspace and gems
|
21
50
|
## so other containers can access them.
|
22
51
|
VOLUME ${APP_HOME}
|
23
|
-
VOLUME
|
52
|
+
VOLUME ${BUNDLE_PATH}
|
53
|
+
|
54
|
+
## If we copy our entire app using a single COPY instruction, Docker will build
|
55
|
+
## it all as a single new layer. When Docker notices a change to a file, it then
|
56
|
+
## has to rebuild the entire layer. This can slow development. One way to speed
|
57
|
+
## it back up is to break a single big COPY layer into several smaller ones,
|
58
|
+
## with slow-building layers that don't change often underneath smaller,
|
59
|
+
## lighter, qucker oens that might change a lot.
|
24
60
|
|
25
|
-
##
|
26
|
-
## and then bundle so changing other parts of the app don't trigger
|
27
|
-
## a full gem install.
|
61
|
+
## Build your big, slow gem layer by first copying your Gemfile && Gemfile.lock:
|
28
62
|
COPY Gemfile* ./
|
29
63
|
|
64
|
+
## Set your work directory:
|
30
65
|
WORKDIR ${APP_HOME}
|
31
66
|
|
67
|
+
## build the bundle layer, which now only runs if your Gemfile changes:
|
32
68
|
RUN bundle
|
33
69
|
|
70
|
+
## Now build a layer layer with everything in your app that's likely to change
|
71
|
+
## frequently. If you make a change to any of these files, only this layer has
|
72
|
+
## to rebuild. smaller, lighter layer
|
73
|
+
COPY . ${APP_HOME}
|
74
|
+
|
75
|
+
|
34
76
|
COPY roro/docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
|
35
77
|
RUN chmod +x /usr/bin/docker-entrypoint.sh
|
36
78
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
37
79
|
|
38
|
-
COPY . /usr/src/app/
|
39
|
-
|
40
|
-
# RUN chmod +x /usr/src/app/roro/docker-entrypoint.sh
|
41
|
-
# ENTRYPOINT ["/usr/src/app/roro/docker-entrypoint.sh"]
|
42
80
|
|
43
81
|
|
44
82
|
|
@@ -24,11 +24,11 @@ VOLUME /gems
|
|
24
24
|
RUN echo "source 'https://rubygems.org'\ngem 'rails'" > Gemfile
|
25
25
|
|
26
26
|
## Bundle to install rails:
|
27
|
-
RUN bundle install
|
28
27
|
|
29
28
|
## Switch to the the work directory from container root:
|
30
29
|
WORKDIR ${APP_HOME}
|
31
30
|
|
31
|
+
RUN bundle install
|
32
32
|
## Use Rails to generate a new app. We'll configure it later.
|
33
33
|
RUN bundle exec rails new . --skip-webpack-install --skip-bundle
|
34
34
|
|
File without changes
|
File without changes
|
File without changes
|
data/lib/roro/version.rb
CHANGED
data/roro.gemspec
CHANGED
@@ -37,8 +37,8 @@ Gem::Specification.new do |spec|
|
|
37
37
|
# spec.bindir = "exe"
|
38
38
|
# spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
39
39
|
spec.require_paths = ["lib"]
|
40
|
-
|
41
|
-
spec.add_dependency "thor"
|
40
|
+
spec.add_dependency "gem-release", "~> 2.1"
|
41
|
+
spec.add_dependency "thor", "~> 1.0"
|
42
42
|
spec.add_dependency "os", "1.0.0"
|
43
43
|
spec.add_dependency "sshkit", "1.18.2"
|
44
44
|
spec.add_dependency "handsome_fencer-crypto", "0.1.6"
|
Binary file
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- schadenfred
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: gem-release
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: thor
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
|
-
- - "
|
31
|
+
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
33
|
+
version: '1.0'
|
20
34
|
type: :runtime
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
|
-
- - "
|
38
|
+
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
40
|
+
version: '1.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: os
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,6 +181,7 @@ files:
|
|
167
181
|
- lib/roro/cli/base/insert_gems.rb
|
168
182
|
- lib/roro/cli/base/insertions.rb
|
169
183
|
- lib/roro/cli/base/utilities.rb
|
184
|
+
- lib/roro/cli/cli.rb
|
170
185
|
- lib/roro/cli/configuration.rb
|
171
186
|
- lib/roro/cli/expose.rb
|
172
187
|
- lib/roro/cli/generate/config.rb
|
@@ -176,10 +191,15 @@ files:
|
|
176
191
|
- lib/roro/cli/greenfield.rb
|
177
192
|
- lib/roro/cli/obfuscate.rb
|
178
193
|
- lib/roro/cli/rollon.rb
|
179
|
-
- lib/roro/cli/rollon/database/database.rb
|
180
|
-
- lib/roro/cli/rollon/database/with_mysql.rb
|
181
|
-
- lib/roro/cli/rollon/database/with_postgres.rb
|
182
194
|
- lib/roro/cli/rollon/stories.rb
|
195
|
+
- lib/roro/cli/rollon/stories/database.rb
|
196
|
+
- lib/roro/cli/rollon/stories/rails.rb
|
197
|
+
- lib/roro/cli/rollon/stories/rails/database/database.rb
|
198
|
+
- lib/roro/cli/rollon/stories/rails/database/with_mysql.rb
|
199
|
+
- lib/roro/cli/rollon/stories/rails/database/with_postgres.rb
|
200
|
+
- lib/roro/cli/rollon/stories/ruby_gem.rb
|
201
|
+
- lib/roro/cli/rollon/stories/ruby_gem/with_ci_cd.rb
|
202
|
+
- lib/roro/cli/rollon/stories/stories.rb
|
183
203
|
- lib/roro/cli/roro_configurator.yml
|
184
204
|
- lib/roro/cli/ruby_gem.rb
|
185
205
|
- lib/roro/cli/templates/base/.dockerignore
|
@@ -211,10 +231,6 @@ files:
|
|
211
231
|
- lib/roro/cli/templates/jumpstart/docker-compose.yml
|
212
232
|
- lib/roro/cli/templates/jumpstart/docker-entrypoint.sh
|
213
233
|
- lib/roro/cli/templates/livereload/hosts.example
|
214
|
-
- lib/roro/cli/templates/quickstart/Dockerfile.tt
|
215
|
-
- lib/roro/cli/templates/quickstart/database.yml
|
216
|
-
- lib/roro/cli/templates/quickstart/docker-compose.yml
|
217
|
-
- lib/roro/cli/templates/quickstart/entrypoint.sh
|
218
234
|
- lib/roro/cli/templates/roro/.keep
|
219
235
|
- lib/roro/cli/templates/roro/docker-compose.yml.tt
|
220
236
|
- lib/roro/cli/templates/roro/roro/.keep
|
@@ -222,12 +238,11 @@ files:
|
|
222
238
|
- lib/roro/cli/templates/roro/roro/containers/app/.keep
|
223
239
|
- lib/roro/cli/templates/roro/roro/containers/frontend/.keep
|
224
240
|
- lib/roro/cli/templates/roro/roro/docker-entrypoint.sh.tt
|
225
|
-
- lib/roro/cli/templates/ruby_gem/.
|
226
|
-
- lib/roro/cli/templates/ruby_gem/config.yml
|
241
|
+
- lib/roro/cli/templates/ruby_gem/.circleci/config.yml
|
227
242
|
- lib/roro/cli/templates/ruby_gem/docker-compose.yml
|
228
|
-
- lib/roro/cli/templates/ruby_gem/
|
229
|
-
- lib/roro/cli/templates/ruby_gem/
|
230
|
-
- lib/roro/cli/templates/ruby_gem/
|
243
|
+
- lib/roro/cli/templates/ruby_gem/roro/containers/gem/Dockerfile.tt
|
244
|
+
- lib/roro/cli/templates/ruby_gem/roro/env_files/.keep
|
245
|
+
- lib/roro/cli/templates/ruby_gem/roro/keys/.keep
|
231
246
|
- lib/roro/cli/templates/ruby_gem/setup-gem-credentials.sh
|
232
247
|
- lib/roro/cli/templates/stories/.keep
|
233
248
|
- lib/roro/cli/templates/stories/with_mysql/_service.yml
|
@@ -237,7 +252,6 @@ files:
|
|
237
252
|
- lib/tasks/deploy.rake
|
238
253
|
- roro.gemspec
|
239
254
|
- sandbox/.keep
|
240
|
-
- tmp/.gitkeep
|
241
255
|
- vendor/bundle/.keep
|
242
256
|
- vendor/cache/actionpack-6.0.3.2.gem
|
243
257
|
- vendor/cache/actionview-6.0.3.2.gem
|
@@ -253,6 +267,7 @@ files:
|
|
253
267
|
- vendor/cache/eventmachine-1.2.7.gem
|
254
268
|
- vendor/cache/ffi-1.13.1.gem
|
255
269
|
- vendor/cache/formatador-0.2.5.gem
|
270
|
+
- vendor/cache/gem-release-2.1.1.gem
|
256
271
|
- vendor/cache/given_core-3.8.0.gem
|
257
272
|
- vendor/cache/guard-2.16.2.gem
|
258
273
|
- vendor/cache/guard-compat-1.2.1.gem
|
@@ -1,20 +0,0 @@
|
|
1
|
-
FROM ruby:<%= config[:ruby_version] %>
|
2
|
-
|
3
|
-
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
|
4
|
-
RUN mkdir /myapp
|
5
|
-
WORKDIR /myapp
|
6
|
-
COPY Gemfile /myapp/Gemfile
|
7
|
-
COPY Gemfile.lock /myapp/Gemfile.lock
|
8
|
-
|
9
|
-
RUN gem install bundler
|
10
|
-
RUN bundle install
|
11
|
-
COPY . /myapp
|
12
|
-
|
13
|
-
# Add a script to be executed every time the container starts.
|
14
|
-
COPY entrypoint.sh /usr/bin/
|
15
|
-
RUN chmod +x /usr/bin/entrypoint.sh
|
16
|
-
ENTRYPOINT ["entrypoint.sh"]
|
17
|
-
EXPOSE 3000
|
18
|
-
|
19
|
-
# Start the main process.
|
20
|
-
CMD ["rails", "server", "-b", "0.0.0.0"]
|
@@ -1,85 +0,0 @@
|
|
1
|
-
# PostgreSQL. Versions 9.3 and up are supported.
|
2
|
-
#
|
3
|
-
# Install the pg driver:
|
4
|
-
# gem install pg
|
5
|
-
# On macOS with Homebrew:
|
6
|
-
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
|
7
|
-
# On macOS with MacPorts:
|
8
|
-
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
|
9
|
-
# On Windows:
|
10
|
-
# gem install pg
|
11
|
-
# Choose the win32 build.
|
12
|
-
# Install PostgreSQL and put its /bin directory on your path.
|
13
|
-
#
|
14
|
-
# Configure Using Gemfile
|
15
|
-
# gem 'pg'
|
16
|
-
#
|
17
|
-
default: &default
|
18
|
-
adapter: postgresql
|
19
|
-
encoding: unicode
|
20
|
-
# For details on connection pooling, see Rails configuration guide
|
21
|
-
# https://guides.rubyonrails.org/configuring.html#database-pooling
|
22
|
-
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
23
|
-
|
24
|
-
development:
|
25
|
-
<<: *default
|
26
|
-
database: sandbox_development
|
27
|
-
|
28
|
-
# The specified database role being used to connect to postgres.
|
29
|
-
# To create additional roles in postgres see `$ createuser --help`.
|
30
|
-
# When left blank, postgres will use the default role. This is
|
31
|
-
# the same name as the operating system user that initialized the database.
|
32
|
-
#username: sandbox
|
33
|
-
|
34
|
-
# The password associated with the postgres role (username).
|
35
|
-
#password:
|
36
|
-
|
37
|
-
# Connect on a TCP socket. Omitted by default since the client uses a
|
38
|
-
# domain socket that doesn't need configuration. Windows does not have
|
39
|
-
# domain sockets, so uncomment these lines.
|
40
|
-
#host: localhost
|
41
|
-
|
42
|
-
# The TCP port the server listens on. Defaults to 5432.
|
43
|
-
# If your server runs on a different port number, change accordingly.
|
44
|
-
#port: 5432
|
45
|
-
|
46
|
-
# Schema search path. The server defaults to $user,public
|
47
|
-
#schema_search_path: myapp,sharedapp,public
|
48
|
-
|
49
|
-
# Minimum log levels, in increasing order:
|
50
|
-
# debug5, debug4, debug3, debug2, debug1,
|
51
|
-
# log, notice, warning, error, fatal, and panic
|
52
|
-
# Defaults to warning.
|
53
|
-
#min_messages: notice
|
54
|
-
|
55
|
-
# Warning: The database defined as "test" will be erased and
|
56
|
-
# re-generated from your development database when you run "rake".
|
57
|
-
# Do not set this db to the same as development or production.
|
58
|
-
test:
|
59
|
-
<<: *default
|
60
|
-
database: sandbox_test
|
61
|
-
|
62
|
-
# As with config/credentials.yml, you never want to store sensitive information,
|
63
|
-
# like your database password, in your source code. If your source code is
|
64
|
-
# ever seen by anyone, they now have access to your database.
|
65
|
-
#
|
66
|
-
# Instead, provide the password as a unix environment variable when you boot
|
67
|
-
# the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
|
68
|
-
# for a full rundown on how to provide these environment variables in a
|
69
|
-
# production deployment.
|
70
|
-
#
|
71
|
-
# On Heroku and other platform providers, you may have a full connection URL
|
72
|
-
# available as an environment variable. For example:
|
73
|
-
#
|
74
|
-
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
|
75
|
-
#
|
76
|
-
# You can use this database configuration with:
|
77
|
-
#
|
78
|
-
# production:
|
79
|
-
# url: <%= ENV['DATABASE_URL'] %>
|
80
|
-
#
|
81
|
-
production:
|
82
|
-
<<: *default
|
83
|
-
database: sandbox_production
|
84
|
-
username: sandbox
|
85
|
-
password: <%= ENV['SANDBOX_DATABASE_PASSWORD'] %>
|
@@ -1,17 +0,0 @@
|
|
1
|
-
version: '3'
|
2
|
-
services:
|
3
|
-
db:
|
4
|
-
image: postgres
|
5
|
-
volumes:
|
6
|
-
- ./tmp/db:/var/lib/postgresql/data
|
7
|
-
environment:
|
8
|
-
POSTGRES_PASSWORD: password
|
9
|
-
web:
|
10
|
-
build: .
|
11
|
-
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
|
12
|
-
volumes:
|
13
|
-
- .:/myapp
|
14
|
-
ports:
|
15
|
-
- "3000:3000"
|
16
|
-
depends_on:
|
17
|
-
- db
|
@@ -1,10 +0,0 @@
|
|
1
|
-
FROM ruby:<%= config[:ruby_version] %>-alpine
|
2
|
-
|
3
|
-
RUN apk add --no-cache --update build-base linux-headers \
|
4
|
-
postgresql-dev nodejs tzdata libxml2-dev libxslt-dev git
|
5
|
-
|
6
|
-
WORKDIR /usr/src/app
|
7
|
-
COPY . /usr/src/app/
|
8
|
-
RUN rake install
|
9
|
-
RUN gem install bundler
|
10
|
-
RUN bundle
|