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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec9303aa617905a4fd69c91b11bc536eb21cc15fcc3fd33352042f5c9cfba2b5
4
- data.tar.gz: fdbc72c7b2f699ab230cbe8c948c49e35a40a2fc90d7a1ad2edac258831fcf11
3
+ metadata.gz: 26fbebb81a909743e9ce897066bfc23ec91e52b40f8c9fff72cdf219ad7a88a3
4
+ data.tar.gz: 2e37f8a9eb0573f40097c85d0e2c021e9d0ef01a0e8ee31d523f7849a93fb698
5
5
  SHA512:
6
- metadata.gz: b8d789c432d1d1be4b7e6bd9d4504ae86a18b240f3c1db60c10f8b548c8a1097c752554f59a1570fd036fd8a09fac24cf69fb0e95b6703f494742c1672b33296
7
- data.tar.gz: b55ef560baa372181b06ac28016edf68b8666579ec6d1215d5cd815f5a7880c4c6587a7770bd7efda4b95c45fbc2f0a592d912a3e5370ee803e4ff08bcd4926a
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
- bundle exec rails s
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
- ENV['BUNDLE_GEMFILE'] = 'Gemfile'
71
- run "cd #{Shellwords.escape(app_path)} && bundle exec rails s",
72
- run_method: :exec
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.4
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
- ADD Gemfile Gemfile.lock $APP_HOME/
20
- RUN bundle install
23
+ COPY Gemfile Gemfile.lock $APP_HOME/
24
+ RUN bundle --path=$BUNDLE_PATH -j $(nproc)
21
25
 
22
- ADD Rakefile config.ru app/ bin/ config/ db/ lib/ script/ spec/ $APP_HOME/
26
+ # Copy package.json and install dependencies (done here to allow for caching)
27
+ COPY package.json yarn.lock $APP_HOME/
28
+ RUN yarn
@@ -0,0 +1,2 @@
1
+ web: bin/rails server --port 9292 --binding 0.0.0.0
2
+ webpack-dev-server: bin/webpack-dev-server
@@ -1,22 +1,49 @@
1
- db:
2
- image: onjin/alpine-postgres:9.5
3
- ports:
4
- - "5433:5432"
5
- environment:
6
- POSTGRES_USER: root
7
- web:
8
- build: .
9
- volumes:
10
- - .:/<%= app_name %>
11
- working_dir: /<%= app_name %>
12
- environment:
13
- DB: postgresql
14
- DB_USERNAME: root
15
- DB_PASSWORD:
16
- command: >
17
- bash -c 'script/wait-for-tcp $<%= app_name.upcase %>_DB_1_PORT_5432_TCP_ADDR $<%= app_name.upcase %>_DB_1_PORT_5432_TCP_PORT &&
18
- rails s'
19
- ports:
20
- - "9292:9292"
21
- links:
22
- - db
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ThreddedCreateApp
4
- VERSION = '0.2.1'
4
+ VERSION = '0.2.2'
5
5
  end
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.1
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-01-05 00:00:00.000000000 Z
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