stack_car 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 80132883ba506f9cf4414a46f560a2040e8843596b7a94e3d6f9baab6ae3a4d4
4
- data.tar.gz: bb84c75a79f699e7bb04aa877eaed36f3acb9e8c8d9bf294d9f4fa7bbe579ddc
3
+ metadata.gz: e6cc442f70a939d0c26964b5b37fab7c115ce5de2c1c7ad2decf317854028b4b
4
+ data.tar.gz: a245e1232281276530a1b16be06a2baedf938eb39db836d39786f99cd52a2264
5
5
  SHA512:
6
- metadata.gz: 1e03c8620fcd08038774e75c2cfeefa75a2bae7d42708c0240c774e3584391695a87349c50bba6b0c7b444e46e66d73b2e96b1439bbf09f0104670b83e3fb831
7
- data.tar.gz: 3196614e6fd6ce06b7408aa292e4ae0b19ef57aa9df8643899fcf378ad840a2d4d469695010ca04948676b9a46b7b655947cbaa0bf686c59c27b3b385b73341a
6
+ metadata.gz: 7108eaf37d7a5f0ae241eb6365a93d731329c04cbe13571002894ae4c80192893512dc29a1a32f95dfd15d3309682290682a2efa381b93dcce894c1e551072ae
7
+ data.tar.gz: d23c829079977213a1877733c8f814041df4afb258269861311184e5044ded8b5dcda760b31c3ec4a9e6e5ea8f8a23d43f23ad65f385e329271db2b2d50f985b
data/README.md CHANGED
@@ -26,14 +26,14 @@ Commands are accesible via the "sc" short cut. Note: this will need to be in you
26
26
 
27
27
  ```ruby
28
28
  Commands:
29
- stack_car bundle_exec ARGS # wraps docker-compose exec web bundle exec unless --service is used to specify (sc be ARGS)
29
+ stack_car bundle_exec ARGS # wraps docker compose exec web bundle exec unless --service is used to specify (sc be ARGS)
30
30
  stack_car console ARGS # shortcut to start rails console
31
31
  stack_car dockerize DIR # Will copy the docker tempates in to your project, see options for supported dependencies
32
- stack_car exec ARGS # wraps docker-compose exec web unless --service is used to specify
32
+ stack_car exec ARGS # wraps docker compose exec web unless --service is used to specify
33
33
  stack_car help [COMMAND] # Describe available commands or one specific command
34
- stack_car stop # starts docker-compose with rebuild and orphan removal, defaults to all
35
- stack_car up # starts docker-compose with rebuild and orphan removal, defaults to web
36
- stack_car walk ARGS # wraps docker-compose run web unless --service is used to specify
34
+ stack_car stop # starts docker compose with rebuild and orphan removal, defaults to all
35
+ stack_car up # starts docker compose with rebuild and orphan removal, defaults to web
36
+ stack_car walk ARGS # wraps docker compose run web unless --service is used to specify
37
37
  ```
38
38
 
39
39
  ## Development
@@ -57,7 +57,10 @@ Developing stack_car often requires a rails application for you to run updated c
57
57
  - Commit your changes
58
58
 
59
59
  ### Releasing a new version
60
- - Update the version number in `version.rb`
60
+ **NOTE:** You will need an account for [rubygems.org](https://rubygems.org) and be made an owner of the [stack_car gem](https://rubygems.org/gems/stack_car) in order to release a new version.
61
+
62
+ - Update the version number in `version.rb`. Please follow [Semantic Versioning](https://semver.org/) guidelines.
63
+ - Commit `version.rb` and create an MR. Once the MR is approved and merged, checkout the `main` branch and do a `git pull`.
61
64
  - Run `bundle exec rake release`
62
65
  - This will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
63
66
 
@@ -67,6 +70,19 @@ Dockerizing your application with stack_car can be thought of in 2 steps:
67
70
  - **Generate the file templates**
68
71
  - **Customize provided templates to the requirements of the application**
69
72
 
73
+ **Set MERGE tool**
74
+ When using stack_car to dockerize an app, it might be necessary to merge templates as opposed to completely overwriting them. To set a tool run:
75
+ ```bash
76
+ export THOR_MERGE=<editor>
77
+ ```
78
+ Alternatively, set it in your shell's `rc` file (`~/.bashrc`, `~/.zshrc`, etc.)
79
+
80
+ With `THOR_MERGE` set, you can enter `m` at the command prompt when there is a conflict between app and `sc` template files.
81
+
82
+ *Note*: For best experience, set `THOR_MERGE` to **GUI text editor** (ie. `code` or `atom`).
83
+
84
+ Initiating a merge pulls 2 versions of the file to the editor. One is what is proposed by stack_car, the other is the original. **Add what you need from the template version to the original file and save the changes**.
85
+
70
86
  ### Generate templates (`sc dockerize`)
71
87
  You can generate requisite files for running your application for local development in Docker with the **dockerize** command.
72
88
 
data/lib/stack_car/cli.rb CHANGED
@@ -18,17 +18,17 @@ module StackCar
18
18
  method_option :service, default: 'web', type: :string, aliases: '-s'
19
19
  method_option :build, default: false, type: :boolean, aliases: '-b'
20
20
  method_option :logs, default: true, type: :boolean
21
- desc "up", "starts docker-compose with rebuild and orphan removal, defaults to web"
21
+ desc "up", "starts docker compose with rebuild and orphan removal, defaults to web"
22
22
  def up
23
23
  setup
24
24
  ensure_development_env
25
25
  args = ['--remove-orphans']
26
26
  args << '--build' if options[:build]
27
27
  if options[:build]
28
- run("#{dotenv} docker-compose pull #{options[:service]}")
28
+ run("#{dotenv} docker compose pull #{options[:service]}")
29
29
  end
30
30
 
31
- run_with_exit("#{dotenv} docker-compose up #{args.join(' ')} #{options[:service]}")
31
+ run_with_exit("#{dotenv} docker compose up #{args.join(' ')} #{options[:service]}")
32
32
  end
33
33
 
34
34
  method_option :service, default: '', type: :string, aliases: '-s'
@@ -36,7 +36,7 @@ module StackCar
36
36
  def stop
37
37
  setup
38
38
  ensure_development_env
39
- run("#{dotenv} docker-compose stop #{options[:service]}")
39
+ run("#{dotenv} docker compose stop #{options[:service]}")
40
40
  run_with_exit("rm -rf tmp/pids/*")
41
41
  end
42
42
 
@@ -53,7 +53,7 @@ module StackCar
53
53
  ensure_development_env
54
54
 
55
55
  if options[:help]
56
- run('docker-compose down --help')
56
+ run('docker compose down --help')
57
57
  say 'Additional stack_car options:'
58
58
  say ' -a, --all Removes all containers, networks, volumes, and'
59
59
  say ' images created by `up`.'
@@ -85,7 +85,7 @@ module StackCar
85
85
  args << '--timeout' if options[:timeout]
86
86
  end
87
87
 
88
- run("#{dotenv} docker-compose down #{args.join(' ')}")
88
+ run("#{dotenv} docker compose down #{args.join(' ')}")
89
89
  run_with_exit('rm -rf tmp/pids/*')
90
90
  end
91
91
 
@@ -94,65 +94,65 @@ module StackCar
94
94
  def build
95
95
  setup
96
96
  ensure_development_env
97
- run_with_exit("#{dotenv} docker-compose build #{options[:service]}")
97
+ run_with_exit("#{dotenv} docker compose build #{options[:service]}")
98
98
  end
99
99
 
100
100
  method_option :service, default: 'web', type: :string, aliases: '-s'
101
- desc "push ARGS", "wraps docker-compose push web unless --service is used to specify"
101
+ desc "push ARGS", "wraps docker compose push web unless --service is used to specify"
102
102
  def push(*args)
103
103
  setup
104
- run_with_exit("#{dotenv} docker-compose push #{options[:service]} #{args.join(' ')}")
104
+ run_with_exit("#{dotenv} docker compose push #{options[:service]} #{args.join(' ')}")
105
105
  end
106
106
 
107
107
  method_option :service, default: 'web', type: :string, aliases: '-s'
108
- desc "pull ARGS", "wraps docker-compose pull web unless --service is used to specify"
108
+ desc "pull ARGS", "wraps docker compose pull web unless --service is used to specify"
109
109
  def pull(*args)
110
110
  setup
111
- run_with_exit("#{dotenv} docker-compose pull #{options[:service]} #{args.join(' ')}")
111
+ run_with_exit("#{dotenv} docker compose pull #{options[:service]} #{args.join(' ')}")
112
112
  end
113
113
 
114
114
  method_option :service, default: '', type: :string, aliases: '-s'
115
- desc "ps ARGS", "wraps docker-compose pull web unless --service is used to specify"
115
+ desc "ps ARGS", "wraps docker compose pull web unless --service is used to specify"
116
116
  def ps(*args)
117
117
  setup
118
- run_with_exit("#{dotenv} docker-compose ps #{options[:service]} #{args.join(' ')}")
118
+ run_with_exit("#{dotenv} docker compose ps #{options[:service]} #{args.join(' ')}")
119
119
  end
120
120
  map status: :ps
121
121
 
122
122
  method_option :service, default: 'web', type: :string, aliases: '-s'
123
- desc "bundle ARGS", "wraps docker-compose run web unless --service is used to specify"
123
+ desc "bundle ARGS", "wraps docker compose run web unless --service is used to specify"
124
124
  def bundle(*args)
125
125
  setup
126
- run_with_exit("#{dotenv} docker-compose exec #{options[:service]} bundle")
126
+ run_with_exit("#{dotenv} docker compose exec #{options[:service]} bundle")
127
127
  end
128
128
 
129
129
  method_option :service, default: 'web', type: :string, aliases: '-s'
130
- desc "walk ARGS", "wraps docker-compose run web unless --service is used to specify"
130
+ desc "walk ARGS", "wraps docker compose run web unless --service is used to specify"
131
131
  def walk(*args)
132
132
  setup
133
- run_with_exit("#{dotenv} docker-compose run #{options[:service]} #{args.join(' ')}")
133
+ run_with_exit("#{dotenv} docker compose run #{options[:service]} #{args.join(' ')}")
134
134
  end
135
135
 
136
136
  method_option :service, default: 'web', type: :string, aliases: '-s'
137
- desc "exec ARGS", "wraps docker-compose exec web unless --service is used to specify"
137
+ desc "exec ARGS", "wraps docker compose exec web unless --service is used to specify"
138
138
  def exec(*args)
139
139
  setup
140
- run_with_exit("#{dotenv} docker-compose exec #{options[:service]} #{args.join(' ')}")
140
+ run_with_exit("#{dotenv} docker compose exec #{options[:service]} #{args.join(' ')}")
141
141
  end
142
142
  map ex: :exec
143
143
 
144
144
  method_option :service, default: 'web', type: :string, aliases: '-s'
145
- desc 'sh ARGS', "launch a shell using docker-compose exec, sets tty properly"
145
+ desc 'sh ARGS', "launch a shell using docker compose exec, sets tty properly"
146
146
  def sh(*args)
147
147
  setup
148
- run_with_exit("#{dotenv} docker-compose exec -e COLUMNS=\"\`tput cols\`\" -e LINES=\"\`tput lines\`\" #{options[:service]} bash #{args.join(' ')}")
148
+ run_with_exit("#{dotenv} docker compose exec -e COLUMNS=\"\`tput cols\`\" -e LINES=\"\`tput lines\`\" #{options[:service]} bash #{args.join(' ')}")
149
149
  end
150
150
 
151
151
  method_option :service, default: 'web', type: :string, aliases: '-s'
152
- desc "bundle_exec ARGS", "wraps docker-compose exec web bundle exec unless --service is used to specify"
152
+ desc "bundle_exec ARGS", "wraps docker compose exec web bundle exec unless --service is used to specify"
153
153
  def bundle_exec(*args)
154
154
  setup
155
- run_with_exit("#{dotenv} docker-compose exec #{options[:service]} bundle exec #{args.join(' ')}")
155
+ run_with_exit("#{dotenv} docker compose exec #{options[:service]} bundle exec #{args.join(' ')}")
156
156
  end
157
157
  map be: :bundle_exec
158
158
 
@@ -160,7 +160,7 @@ module StackCar
160
160
  desc "console ARGS", "shortcut to start rails console"
161
161
  def console(*args)
162
162
  setup
163
- run_with_exit("#{dotenv} docker-compose exec #{options[:service]} bundle exec rails console #{args.join(' ')}")
163
+ run_with_exit("#{dotenv} docker compose exec #{options[:service]} bundle exec rails console #{args.join(' ')}")
164
164
  end
165
165
  map rc: :console
166
166
 
@@ -239,7 +239,8 @@ module StackCar
239
239
  setup
240
240
  # Commandline overrides config files
241
241
  # options = file_config.merge(options)
242
- @project_name = File.basename(File.expand_path(dir))
242
+ # Sets project name to parent directory name if working with stack_car dir
243
+ @project_name = @sc_dir ? File.basename(File.expand_path('..')) : File.basename(File.expand_path(dir))
243
244
  apt_packages << "libpq-dev postgresql-client" if options[:postgres]
244
245
  apt_packages << "mysql-client" if options[:mysql]
245
246
  apt_packages << "imagemagick" if options[:imagemagick]
@@ -276,6 +277,11 @@ module StackCar
276
277
  template("development.rb.erb", "config/environments/development.rb")
277
278
  template("production.rb.erb", "config/environments/production.rb")
278
279
 
280
+ if options[:solr]
281
+ template("solrcloud-upload-configset.sh", "bin/solrcloud-upload-configset.sh")
282
+ template("solrcloud-assign-configset.sh", "bin/solrcloud-assign-configset.sh")
283
+ end
284
+
279
285
  if File.exists?('README.md')
280
286
  prepend_to_file "README.md" do
281
287
  File.read("#{self.class.source_root}/README.md")
@@ -431,11 +437,11 @@ module StackCar
431
437
  end
432
438
 
433
439
  def find_container_by_service(service_name)
434
- container_id = `docker-compose ps -aq #{service_name}`.strip
440
+ container_id = `docker compose ps -aq #{service_name}`.strip
435
441
 
436
442
  if container_id.empty?
437
443
  say "Unable to locate a container for the service '#{service_name}'"
438
- say "Try running `docker-compose ps #{service_name}` to make sure the container exists"
444
+ say "Try running `docker compose ps #{service_name}` to make sure the container exists"
439
445
  exit(1)
440
446
  end
441
447
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module StackCar
2
- VERSION = "0.14.0"
4
+ VERSION = '0.15.0'
3
5
  end
data/templates/.env.erb CHANGED
@@ -41,3 +41,12 @@ ES_URL=http://elasticsearch:9200
41
41
  SITE_URI=https://CHANGEME.com
42
42
  DEPLOY_HOOK=CHANGEME
43
43
  <% end -%>
44
+ <% if options[:solr] -%>
45
+ SOLR_URL=http://admin:admin@solr:8983/solr/<%= @project_name %>-development
46
+ SOLR_ADMIN_PASSWORD=admin
47
+ SOLR_ADMIN_USER=admin
48
+ SOLR_COLLECTION_NAME=<%= @project_name %>-development
49
+ SOLR_CONFIGSET_NAME=<%= @project_name %>
50
+ SOLR_HOST=solr
51
+ SOLR_PORT=8983
52
+ <% end -%>
@@ -0,0 +1,8 @@
1
+ # Gitlab Original Documentation:
2
+ - https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html#only-allow-merge-requests-to-be-merged-if-the-pipeline-succeeds
3
+
4
+ # Notch8 Playbook Artcile with image:
5
+ - http://playbook-staging.notch8.com/en/gitlab-only-merge-if-pipeline-succeeds
6
+
7
+ # How to Video:
8
+ - https://share.getcloudapp.com/yAuykArv
data/templates/README.md CHANGED
@@ -36,8 +36,11 @@ We recommend committing .env to your repo with good defaults. .env.development,
36
36
 
37
37
  6) Load and seed the database
38
38
  ``` bash
39
- sc be rake db:migrate db: seed
39
+ sc be rake db:migrate db:seed
40
40
  ```
41
+
42
+ 7) Visit the running instance in the browser at `project-name.test`
43
+
41
44
  ### Troubleshooting Docker Development Setup
42
45
  Confirm or configure settings. Sub your information for the examples.
43
46
  ``` bash
@@ -29,7 +29,7 @@
29
29
  - debug: var=authout
30
30
 
31
31
  - name: Restart service
32
- command: "cd {{ compose_dir }} && docker-compose -f {{ project_name }}.yml pull web && docker-compose -f {{ project_name }}.yml up -d web"
32
+ command: "cd {{ compose_dir }} && docker compose -f {{ project_name }}.yml pull web && docker compose -f {{ project_name }}.yml up -d web"
33
33
  environment:
34
34
  TAG: "{{ tag }}"
35
35
  register: output
@@ -62,4 +62,4 @@
62
62
  body_format: json
63
63
  status_code: 200
64
64
 
65
- <% end %>
65
+ <% end %>
@@ -51,7 +51,7 @@ services:
51
51
  - docker-entrypoint.sh
52
52
  - solr-precreate
53
53
  - mycore
54
- # docker-compose exec --user=solr solr bin/solr create_core -c CORENAME
54
+ # docker compose exec --user=solr solr bin/solr create_core -c CORENAME
55
55
  <% end -%>
56
56
  <% if options[:redis] -%>
57
57
  redis:
@@ -129,8 +129,8 @@ services:
129
129
  ports:
130
130
  - "${WEB_PORT}"
131
131
  environment:
132
- - VIRTUAL_HOST=<%= @project_name %>.docker
133
- - VIRTUAL_PORT=80
132
+ - VIRTUAL_HOST=.<%= @project_name %>.test
133
+ - VIRTUAL_PORT=3000
134
134
  depends_on:
135
135
  <%= compose_depends %>
136
136
 
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env sh
2
+ COUNTER=0;
3
+
4
+ if [ "$SOLR_ADMIN_USER" ]; then
5
+ solr_user_settings="--user $SOLR_ADMIN_USER:$SOLR_ADMIN_PASSWORD"
6
+ fi
7
+
8
+ solr_config_name="${SOLR_CONFIGSET_NAME:-solrconfig}"
9
+ solr_collection_name="${SOLR_COLLECTION_NAME:-hyrax}"
10
+
11
+ # Solr Cloud Collection API URLs
12
+ solr_collection_list_url="$SOLR_HOST:$SOLR_PORT/solr/admin/collections?action=LIST"
13
+ solr_collection_modify_url="$SOLR_HOST:$SOLR_PORT/solr/admin/collections?action=MODIFYCOLLECTION&collection=${solr_collection_name}&collection.configName=${solr_config_name}"
14
+
15
+ while [ $COUNTER -lt 30 ]; do
16
+ if nc -z "${SOLR_HOST}" "${SOLR_PORT}"; then
17
+ if curl --silent $solr_user_settings "$solr_collection_list_url" | grep -q "$solr_collection_name"; then
18
+ echo "-- Collection ${solr_collection_name} exists; setting ${solr_config_name} ConfigSet ..."
19
+ echo $solr_collection_modify_url
20
+ curl $solr_user_settings "$solr_collection_modify_url"
21
+ exit
22
+ else
23
+ echo "-- Collection ${solr_collection_name} does not exist; creating and setting ${solr_config_name} ConfigSet ..."
24
+ solr_collection_create_url="$SOLR_HOST:$SOLR_PORT/solr/admin/collections?action=CREATE&name=${solr_collection_name}&collection.configName=${solr_config_name}&numShards=1"
25
+ curl $solr_user_settings "$solr_collection_create_url"
26
+ exit
27
+ fi
28
+ fi
29
+ echo "-- Looking for Solr (${SOLR_HOST}:${SOLR_PORT})..."
30
+ COUNTER=$(( COUNTER+1 ));
31
+ sleep 5s
32
+ done
33
+
34
+ echo "--- ERROR: failed to create/update Solr collection after 5 minutes";
35
+ exit 1
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env sh
2
+
3
+ COUNTER=0;
4
+ # /app/samvera/hyrax-webapp/solr/conf
5
+ CONFDIR="${1}"
6
+
7
+ if [ "$SOLR_ADMIN_USER" ]; then
8
+ solr_user_settings="--user $SOLR_ADMIN_USER:$SOLR_ADMIN_PASSWORD"
9
+ fi
10
+
11
+ solr_config_name="${SOLR_CONFIGSET_NAME:-solrconfig}"
12
+
13
+ # Solr Cloud ConfigSet API URLs
14
+ solr_config_list_url="http://$SOLR_HOST:$SOLR_PORT/api/cluster/configs?omitHeader=true"
15
+ solr_config_upload_url="http://$SOLR_HOST:$SOLR_PORT/solr/admin/configs?action=UPLOAD&name=${solr_config_name}"
16
+
17
+ while [ $COUNTER -lt 30 ]; do
18
+ echo "-- Looking for Solr (${SOLR_HOST}:${SOLR_PORT})..."
19
+ if nc -z "${SOLR_HOST}" "${SOLR_PORT}"; then
20
+ # shellcheck disable=SC2143,SC2086
21
+ if curl --silent --user 'fake:fake' "$solr_config_list_url" | grep -q '401'; then
22
+ # the solr pods come up and report available before they are ready to accept trusted configs
23
+ # only try to upload the config if auth is on.
24
+ if curl --silent $solr_user_settings "$solr_config_list_url" | grep -q "$solr_config_name"; then
25
+ echo "-- ConfigSet already exists; skipping creation ...";
26
+ else
27
+ echo "-- ConfigSet for ${CONFDIR} does not exist; creating ..."
28
+ (cd "$CONFDIR" && zip -r - *) | curl -X POST $solr_user_settings --header "Content-Type:application/octet-stream" --data-binary @- "$solr_config_upload_url"
29
+ fi
30
+ exit
31
+ else
32
+ echo "-- Solr at $solr_config_list_url is accepting unauthorized connections; we can't upload a trusted ConfigSet."
33
+ echo "-- It's possible SolrCloud is bootstrapping its configuration, so this process will retry."
34
+ echo "-- see: https://solr.apache.org/guide/8_6/configsets-api.html#configsets-upload"
35
+ fi
36
+ fi
37
+ COUNTER=$(( COUNTER+1 ));
38
+ sleep 5s
39
+ done
40
+
41
+ echo "--- ERROR: failed to create Solr ConfigSet after 5 minutes";
42
+ exit 1
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stack_car
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Kaufman
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-10 00:00:00.000000000 Z
11
+ date: 2022-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -150,7 +150,7 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.19'
153
- description:
153
+ description:
154
154
  email:
155
155
  - rob@notch8.com
156
156
  executables:
@@ -186,6 +186,7 @@ files:
186
186
  - templates/.gitlab/issue_templates/Bug.md
187
187
  - templates/.gitlab/issue_templates/Feature.md
188
188
  - templates/.gitlab/issue_templates/Question.md
189
+ - templates/.gitlab/issue_templates/enable_pipeline_check_before_merge.md
189
190
  - templates/.gitlab/merge_request_templates/Bug.md
190
191
  - templates/.gitlab/merge_request_templates/Feature.md
191
192
  - templates/.sops.yaml.erb
@@ -243,12 +244,14 @@ files:
243
244
  - templates/ops/roles/docker.ubuntu/vars/main.yml
244
245
  - templates/production.rb.erb
245
246
  - templates/provision.yml.erb
247
+ - templates/solrcloud-assign-configset.sh
248
+ - templates/solrcloud-upload-configset.sh
246
249
  - templates/webapp.conf.erb
247
250
  - templates/worker.sh.erb
248
251
  homepage: https://gitlab.com/notch8/stack_car
249
252
  licenses: []
250
253
  metadata: {}
251
- post_install_message:
254
+ post_install_message:
252
255
  rdoc_options: []
253
256
  require_paths:
254
257
  - lib
@@ -263,8 +266,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
263
266
  - !ruby/object:Gem::Version
264
267
  version: '0'
265
268
  requirements: []
266
- rubygems_version: 3.0.6
267
- signing_key:
269
+ rubygems_version: 3.1.4
270
+ signing_key:
268
271
  specification_version: 4
269
272
  summary: A tool to make rails + docker easy
270
273
  test_files: []