thredded_create_app 0.2.1 → 0.2.2

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: 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