thredded_create_app 0.2.1 → 0.2.2
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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/thredded_create_app/cli.rb +6 -3
- data/lib/thredded_create_app/tasks/add_thredded.rb +1 -0
- data/lib/thredded_create_app/tasks/docker.rb +5 -1
- data/lib/thredded_create_app/tasks/docker/Dockerfile.erb +11 -5
- data/lib/thredded_create_app/tasks/docker/Procfile.docker.dev +2 -0
- data/lib/thredded_create_app/tasks/docker/docker-compose.yml.erb +49 -22
- data/lib/thredded_create_app/tasks/docker/docker-dev-start-web.sh +19 -0
- data/lib/thredded_create_app/tasks/setup_app_skeleton.rb +10 -2
- data/lib/thredded_create_app/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26fbebb81a909743e9ce897066bfc23ec91e52b40f8c9fff72cdf219ad7a88a3
|
4
|
+
data.tar.gz: 2e37f8a9eb0573f40097c85d0e2c021e9d0ef01a0e8ee31d523f7849a93fb698
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85fc625da0f81bc155d991f88150e87964ef2af53fa77fbb4cbcef4f2e5f48f7c319c8c99d928ce2171fc83d19d4d84d19e939599f1f2ebe669c0b4a1d1071eb
|
7
|
+
data.tar.gz: 34dd959490c9b24e529cb75b2d90b8c58b0949d506602c0eee0f796d725b7c67d55f151ba9ca05387565720bd612a01bc5c6a67a313daf8c1c52ceb99487e688
|
data/README.md
CHANGED
@@ -107,7 +107,7 @@ a lot of JavaScript libraries do not support it.
|
|
107
107
|
|
108
108
|
A [Dockerfile] and [docker-compose.yml] is generated for development.
|
109
109
|
This is so that other engineers can spin up a development environment with
|
110
|
-
a single command.
|
110
|
+
a single command (`docker-compose up`).
|
111
111
|
|
112
112
|
A production configuration file for the [puma] Ruby web server is created.
|
113
113
|
A `Procfile` process description file is also created. This file can be used by
|
@@ -121,7 +121,7 @@ Finally, the tests are run, and the development web server is started at
|
|
121
121
|
<http://localhost:3000>. To start the server yourself afterwards with:
|
122
122
|
|
123
123
|
```bash
|
124
|
-
|
124
|
+
bin/rails s
|
125
125
|
```
|
126
126
|
|
127
127
|
[`async`]: https://developer.mozilla.org/en/docs/Web/HTML/Element/script
|
@@ -67,9 +67,12 @@ module ThreddedCreateApp
|
|
67
67
|
|
68
68
|
def start_app_server!(app_path)
|
69
69
|
log_info 'Changing directory and starting the app server'
|
70
|
-
|
71
|
-
|
72
|
-
|
70
|
+
Dir.chdir app_path do
|
71
|
+
Bundler.with_original_env do
|
72
|
+
ENV['BUNDLE_GEMFILE'] = 'Gemfile'
|
73
|
+
run 'bin/rails', 's', run_method: :exec
|
74
|
+
end
|
75
|
+
end
|
73
76
|
end
|
74
77
|
|
75
78
|
# rubocop:disable Metrics/AbcSize,Metrics/BlockLength,Metrics/MethodLength
|
@@ -70,6 +70,7 @@ module ThreddedCreateApp
|
|
70
70
|
def add_thredded_javascripts
|
71
71
|
if webpack_js?
|
72
72
|
run 'bundle exec rails webpacker:install:erb'
|
73
|
+
FileUtils.rm 'app/javascript/packs/hello_erb.js.erb'
|
73
74
|
copy 'add_thredded/thredded_imports.js.erb',
|
74
75
|
'app/javascript/thredded_imports.js.erb'
|
75
76
|
append_to_file 'app/javascript/packs/application.js', <<~JS
|
@@ -14,9 +14,13 @@ module ThreddedCreateApp
|
|
14
14
|
'Dockerfile'
|
15
15
|
copy_template 'docker/docker-compose.yml.erb',
|
16
16
|
'docker-compose.yml'
|
17
|
+
copy 'docker/Procfile.docker.dev',
|
18
|
+
'Procfile.docker.dev'
|
19
|
+
copy 'docker/docker-dev-start-web.sh',
|
20
|
+
'script/docker-dev-start-web.sh'
|
17
21
|
copy 'docker/wait-for-tcp',
|
18
22
|
'script/wait-for-tcp'
|
19
|
-
run 'chmod +x script/wait-for-tcp'
|
23
|
+
run 'chmod +x script/wait-for-tcp script/docker-dev-start-web.sh'
|
20
24
|
git_commit 'Add Docker compose for development'
|
21
25
|
end
|
22
26
|
end
|
@@ -1,22 +1,28 @@
|
|
1
1
|
# A Dockerfile for development.
|
2
2
|
|
3
|
-
FROM alpine:3.
|
3
|
+
FROM alpine:3.11
|
4
4
|
|
5
5
|
RUN apk add --no-cache \
|
6
6
|
# Runtime deps
|
7
|
-
ruby ruby-bundler ruby-bigdecimal ruby-io-console tzdata nodejs bash \
|
7
|
+
ruby ruby-bundler ruby-bigdecimal ruby-io-console ruby-json ruby-webrick tzdata nodejs yarn bash \
|
8
8
|
# Bundle install deps
|
9
9
|
build-base ruby-dev libc-dev linux-headers gmp-dev openssl-dev libxml2-dev \
|
10
10
|
libxslt-dev postgresql-dev
|
11
11
|
|
12
|
+
RUN gem install foreman
|
13
|
+
|
12
14
|
ENV BUNDLE_SILENCE_ROOT_WARNING=1
|
15
|
+
ENV BUNDLE_PATH=/bundle
|
16
|
+
ENV DOCKER=1
|
13
17
|
|
14
18
|
ENV APP_HOME /<%= app_name %>
|
15
19
|
WORKDIR $APP_HOME
|
16
20
|
RUN mkdir -p $APP_HOME
|
17
21
|
|
18
22
|
# Copy Gemfile and run bundle install first to allow for caching
|
19
|
-
|
20
|
-
RUN bundle
|
23
|
+
COPY Gemfile Gemfile.lock $APP_HOME/
|
24
|
+
RUN bundle --path=$BUNDLE_PATH -j $(nproc)
|
21
25
|
|
22
|
-
|
26
|
+
# Copy package.json and install dependencies (done here to allow for caching)
|
27
|
+
COPY package.json yarn.lock $APP_HOME/
|
28
|
+
RUN yarn
|
@@ -1,22 +1,49 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
-
|
21
|
-
|
22
|
-
-
|
1
|
+
version: "3.6"
|
2
|
+
networks:
|
3
|
+
frontend:
|
4
|
+
backend:
|
5
|
+
services:
|
6
|
+
db:
|
7
|
+
image: postgres:12-alpine
|
8
|
+
expose:
|
9
|
+
- "5432"
|
10
|
+
environment:
|
11
|
+
POSTGRES_USER: root
|
12
|
+
POSTGRES_PASSWORD: db-password
|
13
|
+
networks:
|
14
|
+
- backend
|
15
|
+
web:
|
16
|
+
build: .
|
17
|
+
# We want to avoid mapping Gemfile.lock, yarn.lock, etc but there is no way to exclude
|
18
|
+
# files using `volumes`.
|
19
|
+
volumes:
|
20
|
+
- ./.rspec:/<%= app_name %>/.rspec
|
21
|
+
- ./Procfile.docker.dev:/<%= app_name %>/Procfile.docker.dev
|
22
|
+
- ./Rakefile:/<%= app_name %>/Rakefile
|
23
|
+
- ./config.ru:/<%= app_name %>/config.ru
|
24
|
+
- ./app:/<%= app_name %>/app
|
25
|
+
- ./bin:/<%= app_name %>/bin
|
26
|
+
- ./config:/<%= app_name %>/config
|
27
|
+
- ./db:/<%= app_name %>/db
|
28
|
+
- ./lib:/<%= app_name %>/lib
|
29
|
+
- ./script:/<%= app_name %>/script
|
30
|
+
- ./vendor:/<%= app_name %>/vendor
|
31
|
+
- ./spec:/<%= app_name %>/spec
|
32
|
+
working_dir: /<%= app_name %>
|
33
|
+
environment:
|
34
|
+
DB: postgresql
|
35
|
+
DB_HOST: db
|
36
|
+
DB_PORT: 5432
|
37
|
+
DB_USERNAME: root
|
38
|
+
DB_PASSWORD: db-password
|
39
|
+
BUNDLE_GEMFILE: /<%= app_name %>/Gemfile
|
40
|
+
WEBPACKER_DEV_SERVER_HOST: 0.0.0.0
|
41
|
+
command: script/docker-dev-start-web.sh
|
42
|
+
networks:
|
43
|
+
- backend
|
44
|
+
- frontend
|
45
|
+
ports:
|
46
|
+
- "9292:9292"
|
47
|
+
- "3035:3035"
|
48
|
+
depends_on:
|
49
|
+
- db
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
set -xeuo pipefail
|
4
|
+
|
5
|
+
script/wait-for-tcp db 5432
|
6
|
+
|
7
|
+
if ! [[ -f .db-created ]]; then
|
8
|
+
bin/rails db:drop db:create
|
9
|
+
touch .db-created
|
10
|
+
fi
|
11
|
+
|
12
|
+
bin/rails db:migrate
|
13
|
+
|
14
|
+
if ! [[ -f .db-seeded ]]; then
|
15
|
+
bin/rails db:seed
|
16
|
+
touch .db-seeded
|
17
|
+
fi
|
18
|
+
|
19
|
+
foreman start -f Procfile.docker.dev
|
@@ -78,6 +78,12 @@ module ThreddedCreateApp
|
|
78
78
|
copy "setup_app_skeleton/javascript_webpack/app/#{file}.js",
|
79
79
|
"app/javascript/app/#{file}.js"
|
80
80
|
end
|
81
|
+
append_to_file 'config/initializers/content_security_policy.rb', <<~RUBY
|
82
|
+
Rails.application.config.content_security_policy do |policy|
|
83
|
+
# Allow connections to bin/webpack-dev-server in development
|
84
|
+
policy.connect_src :self, :https, 'http://localhost:3035', 'ws://localhost:3035' if Rails.env.development?
|
85
|
+
end
|
86
|
+
RUBY
|
81
87
|
git_commit 'Add app JavaScript'
|
82
88
|
end
|
83
89
|
|
@@ -217,7 +223,8 @@ module ThreddedCreateApp
|
|
217
223
|
|
218
224
|
def add_user_page
|
219
225
|
run_generator 'controller users show' \
|
220
|
-
' --no-assets --no-helper --skip-routes'
|
226
|
+
' --no-assets --no-helper --skip-routes' \
|
227
|
+
' --no-test-framework'
|
221
228
|
copy 'setup_app_skeleton/spec/controllers/users_controller_spec.rb',
|
222
229
|
'spec/controllers/users_controller_spec.rb'
|
223
230
|
copy 'setup_app_skeleton/users_show.html.erb',
|
@@ -237,7 +244,8 @@ module ThreddedCreateApp
|
|
237
244
|
|
238
245
|
def add_home_page
|
239
246
|
run_generator 'controller home show' \
|
240
|
-
' --no-assets --no-helper --skip-routes'
|
247
|
+
' --no-assets --no-helper --skip-routes' \
|
248
|
+
' --no-test-framework'
|
241
249
|
add_route <<~'RUBY', prepend: true
|
242
250
|
root to: 'home#show'
|
243
251
|
RUBY
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thredded_create_app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gleb Mazovetskiy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -143,7 +143,9 @@ files:
|
|
143
143
|
- lib/thredded_create_app/tasks/create_rails_app.rb
|
144
144
|
- lib/thredded_create_app/tasks/docker.rb
|
145
145
|
- lib/thredded_create_app/tasks/docker/Dockerfile.erb
|
146
|
+
- lib/thredded_create_app/tasks/docker/Procfile.docker.dev
|
146
147
|
- lib/thredded_create_app/tasks/docker/docker-compose.yml.erb
|
148
|
+
- lib/thredded_create_app/tasks/docker/docker-dev-start-web.sh
|
147
149
|
- lib/thredded_create_app/tasks/docker/wait-for-tcp
|
148
150
|
- lib/thredded_create_app/tasks/production_configs.rb
|
149
151
|
- lib/thredded_create_app/tasks/production_configs/Procfile
|