Skip to content

Commit 99d9d37

Browse files
committed
Replace foreman with concurrently
`foreman` doesn't properly forward the echo of input to commands. This means that when using the `debugger` or `binding.pry` statements in Rails, we can't see anything that's being typed into the REPL. This makes debugging difficult. `concurrently` is a JS library that can be used as an alternative to foreman. More context: ddollar/foreman#703
1 parent b9246c9 commit 99d9d37

File tree

5 files changed

+93
-18
lines changed

5 files changed

+93
-18
lines changed

Procfile.dev

-4
This file was deleted.

README.md

+6-5
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,15 @@ determine postgres's installation directory and setting up logging accordingly.
148148

149149
### Development server
150150

151-
This application comes with a `Procfile.dev` for use with `foreman` in
152-
development environments. Use the script `bin/dev` to run it:
151+
This application comes with a `concurrently` script for development
152+
environments. Use script `bin/dev` to run it:
153153

154154
```bash
155155
$ bin/dev
156-
13:07:31 web.1 | started with pid 73965
157-
13:07:31 css.1 | started with pid 73966
158-
13:07:31 js.1 | started with pid 73967
156+
[web] rails server
157+
[css] yarn build:css --watch
158+
[js] yarn build --watch
159+
[sw] yarn build:serviceworker --watch
159160
...
160161
```
161162

bin/dev

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
#!/usr/bin/env sh
22

3-
if ! gem list foreman -i --silent; then
4-
echo "Installing foreman..."
5-
gem install foreman
6-
fi
7-
8-
exec foreman start -f Procfile.dev "$@"
3+
yarn concurrently \
4+
--kill-others \
5+
--handle-input \
6+
--names "web,css,js,sw" \
7+
--prefix-colors "red.bold,blue.bold,yellow.bold,yellow.bold" \
8+
"rails s" \
9+
"yarn build:css --watch" \
10+
"yarn build --watch" \
11+
"yarn build:serviceworker --watch"

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"@playwright/test": "^1.40.1",
2323
"@prettier/plugin-ruby": "^4.0.4",
2424
"@types/jest": "^29.5.11",
25+
"concurrently": "^8.2.2",
2526
"esbuild-jest": "^0.5.0",
2627
"fake-indexeddb": "^4.0.2",
2728
"jest": "^29.7.0",

yarn.lock

+77-3
Original file line numberDiff line numberDiff line change
@@ -990,6 +990,13 @@
990990
dependencies:
991991
regenerator-runtime "^0.13.11"
992992

993+
"@babel/runtime@^7.21.0":
994+
version "7.23.6"
995+
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d"
996+
integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==
997+
dependencies:
998+
regenerator-runtime "^0.14.0"
999+
9931000
"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3":
9941001
version "7.20.7"
9951002
resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz"
@@ -2121,7 +2128,7 @@ chalk@^2.0.0, chalk@^2.4.2:
21212128
escape-string-regexp "^1.0.5"
21222129
supports-color "^5.3.0"
21232130

2124-
chalk@^4.0.0, chalk@^4.0.2:
2131+
chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.2:
21252132
version "4.1.2"
21262133
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
21272134
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -2252,6 +2259,21 @@ concat-map@0.0.1:
22522259
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
22532260
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
22542261

2262+
concurrently@^8.2.2:
2263+
version "8.2.2"
2264+
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784"
2265+
integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==
2266+
dependencies:
2267+
chalk "^4.1.2"
2268+
date-fns "^2.30.0"
2269+
lodash "^4.17.21"
2270+
rxjs "^7.8.1"
2271+
shell-quote "^1.8.1"
2272+
spawn-command "0.0.2"
2273+
supports-color "^8.1.1"
2274+
tree-kill "^1.2.2"
2275+
yargs "^17.7.2"
2276+
22552277
convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
22562278
version "1.9.0"
22572279
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
@@ -2345,6 +2367,13 @@ data-urls@^3.0.2:
23452367
whatwg-mimetype "^3.0.0"
23462368
whatwg-url "^11.0.0"
23472369

2370+
date-fns@^2.30.0:
2371+
version "2.30.0"
2372+
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
2373+
integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
2374+
dependencies:
2375+
"@babel/runtime" "^7.21.0"
2376+
23482377
debug@4, debug@^4.1.0, debug@^4.1.1:
23492378
version "4.3.4"
23502379
resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
@@ -4053,7 +4082,7 @@ lodash.sortby@^4.7.0:
40534082
resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz"
40544083
integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==
40554084

4056-
lodash@^4.17.20, lodash@^4.7.0:
4085+
lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
40574086
version "4.17.21"
40584087
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
40594088
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -4579,6 +4608,11 @@ regenerator-runtime@^0.13.11:
45794608
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz"
45804609
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
45814610

4611+
regenerator-runtime@^0.14.0:
4612+
version "0.14.1"
4613+
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
4614+
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
4615+
45824616
regenerator-transform@^0.15.1:
45834617
version "0.15.1"
45844618
resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz"
@@ -4715,6 +4749,13 @@ rsvp@^4.8.4:
47154749
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
47164750
integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
47174751

4752+
rxjs@^7.8.1:
4753+
version "7.8.1"
4754+
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
4755+
integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
4756+
dependencies:
4757+
tslib "^2.1.0"
4758+
47184759
safe-buffer@^5.1.0:
47194760
version "5.2.1"
47204761
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
@@ -4830,6 +4871,11 @@ shebang-regex@^3.0.0:
48304871
resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
48314872
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
48324873

4874+
shell-quote@^1.8.1:
4875+
version "1.8.1"
4876+
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
4877+
integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
4878+
48334879
side-channel@^1.0.4:
48344880
version "1.0.4"
48354881
resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz"
@@ -4943,6 +4989,11 @@ sourcemap-codec@^1.4.8:
49434989
resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
49444990
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
49454991

4992+
spawn-command@0.0.2:
4993+
version "0.0.2"
4994+
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e"
4995+
integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==
4996+
49464997
split-string@^3.0.1, split-string@^3.0.2:
49474998
version "3.1.0"
49484999
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
@@ -5082,7 +5133,7 @@ supports-color@^7.0.0, supports-color@^7.1.0:
50825133
dependencies:
50835134
has-flag "^4.0.0"
50845135

5085-
supports-color@^8.0.0:
5136+
supports-color@^8.0.0, supports-color@^8.1.1:
50865137
version "8.1.1"
50875138
resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
50885139
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
@@ -5211,6 +5262,16 @@ tr46@~0.0.3:
52115262
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
52125263
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
52135264

5265+
tree-kill@^1.2.2:
5266+
version "1.2.2"
5267+
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
5268+
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
5269+
5270+
tslib@^2.1.0:
5271+
version "2.6.2"
5272+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
5273+
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
5274+
52145275
type-check@~0.3.2:
52155276
version "0.3.2"
52165277
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -5738,6 +5799,19 @@ yargs@^17.3.1:
57385799
y18n "^5.0.5"
57395800
yargs-parser "^21.1.1"
57405801

5802+
yargs@^17.7.2:
5803+
version "17.7.2"
5804+
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
5805+
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
5806+
dependencies:
5807+
cliui "^8.0.1"
5808+
escalade "^3.1.1"
5809+
get-caller-file "^2.0.5"
5810+
require-directory "^2.1.1"
5811+
string-width "^4.2.3"
5812+
y18n "^5.0.5"
5813+
yargs-parser "^21.1.1"
5814+
57415815
yocto-queue@^0.1.0:
57425816
version "0.1.0"
57435817
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"

0 commit comments

Comments
 (0)