diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index 1019b2eba53..e6b2bde9789 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -33,4 +33,4 @@ jobs: env: DANGER_GITHUB_BEARER_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - bundle exec danger --verbose + bin/danger --verbose diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index bce14277fa1..a049a654973 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -29,9 +29,9 @@ jobs: sleep 15 # let the DB warm up a little - name: Prepare Database run: | - docker compose run --rm web bundle exec rails db:migrate - docker compose run --rm web bundle exec i18n export - docker compose run --rm web bundle exec rails assets:precompile + docker compose run --rm web bin/rails db:migrate + docker compose run --rm web bin/i18n export + docker compose run --rm web bin/rails assets:precompile docker compose run --rm web osmosis --rx docker/null-island.osm.xml --wd host=db database=openstreetmap user=openstreetmap password=openstreetmap validateSchemaVersion=no - name: Test Basic Website run: | @@ -40,5 +40,5 @@ jobs: curl -siL http://127.0.0.1:3000/api/0.6/node/1 | grep 'Null Island' - name: Test Complete Suite run: | - docker compose run --rm web bundle exec rails db:test:prepare - docker compose run --rm web bundle exec rails test:all + docker compose run --rm web bin/rails db:test:prepare + docker compose run --rm web bin/rails test:all diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 326f3ea3caf..2ba7735daf1 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -24,7 +24,7 @@ jobs: rubygems: 3.4.10 bundler-cache: true - name: Run rubocop - run: bundle exec rubocop --format fuubar + run: bin/rubocop --format fuubar erblint: name: ERB Lint runs-on: ubuntu-latest @@ -39,7 +39,7 @@ jobs: rubygems: 3.4.10 bundler-cache: true - name: Run erblint - run: bundle exec erb_lint . + run: bin/erb_lint . herb: name: Herb runs-on: ubuntu-latest @@ -54,17 +54,17 @@ jobs: rubygems: 3.4.10 bundler-cache: true - name: Run herb parser - run: bundle exec herb analyze app/ --no-log-file --non-interactive + run: bin/herb analyze app/ --no-log-file --non-interactive - name: Cache node modules uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: cache: yarn - name: Install node modules - run: bundle exec bin/yarn install + run: bin/yarn install - name: Create dummy database configuration run: cp config/example.database.yml config/database.yml - name: Run herb linter - run: bundle exec bin/yarn run herb-lint + run: bin/yarn run herb-lint eslint: name: ESLint runs-on: ubuntu-latest @@ -83,11 +83,11 @@ jobs: with: cache: yarn - name: Install node modules - run: bundle exec bin/yarn install + run: bin/yarn install - name: Create dummy database configuration run: cp config/example.database.yml config/database.yml - name: Run eslint - run: bundle exec rails eslint + run: bin/rails eslint brakeman: name: Brakeman runs-on: ubuntu-latest @@ -102,7 +102,7 @@ jobs: rubygems: 3.4.10 bundler-cache: true - name: Run brakeman - run: bundle exec brakeman -q + run: bin/brakeman -q annotate_models: env: RAILS_ENV: test @@ -127,15 +127,15 @@ jobs: with: cache: yarn - name: Install node modules - run: bundle exec bin/yarn install + run: bin/yarn install - name: Setup database run: | sudo systemctl start postgresql sudo -u postgres createuser -s $(id -un) createdb openstreetmap - bundle exec rails db:schema:load + bin/rails db:schema:load - name: Run Annotate Models - run: bundle exec annotaterb models + run: bin/annotaterb models - name: Fail if model annotations are out of date run: git diff --exit-code database_consistency: @@ -162,12 +162,12 @@ jobs: with: cache: yarn - name: Install node modules - run: bundle exec bin/yarn install + run: bin/yarn install - name: Setup database run: | sudo systemctl start postgresql sudo -u postgres createuser -s $(id -un) createdb openstreetmap - bundle exec rails db:schema:load + bin/rails db:schema:load - name: Run Database Consistency - run: bundle exec database_consistency + run: bin/database_consistency diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7f0365f3185..07b795d985f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -47,29 +47,29 @@ jobs: cp config/example.storage.yml config/storage.yml touch config/settings.local.yml - name: Install node modules - run: bundle exec bin/yarn install + run: bin/yarn install - name: Populate database run: | sed -f script/normalise-structure db/structure.sql > db/structure.expected rm -f db/structure.sql - bundle exec rails db:migrate + bin/rails db:migrate sed -f script/normalise-structure db/structure.sql > db/structure.actual diff -uw db/structure.expected db/structure.actual - name: Export javascript strings - run: bundle exec i18n export + run: bin/i18n export - name: Compile assets - run: bundle exec rails assets:precompile + run: bin/rails assets:precompile timeout-minutes: 10 - name: Create tmp/pids directory run: mkdir -p tmp/pids - name: Enable virtual display run: Xvfb :99 -screen 0 1024x768x24 & - name: Run tests - run: bundle exec rails test:all + run: bin/rails test:all env: DISPLAY: ":99" - name: Run javascript tests - run: bundle exec teaspoon + run: bin/teaspoon env: DISPLAY: ":99" - name: Upload screenshots diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 999f7141d5a..a1b599f95a6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -96,27 +96,27 @@ Here's the typical contribution workflow: We use [Rubocop](https://github.com/rubocop-hq/rubocop) (for ruby files), [ESLint](https://eslint.org/) (for javascript files), and [ERB Lint](https://github.com/Shopify/erb-lint) (for erb templates) to help maintain consistency in our code. You can run these utilities during development to check that your code matches our guidelines: ```bash -bundle exec rubocop -bundle exec rails eslint -bundle exec erb_lint . +bin/rubocop +bin/rails eslint +bin/erb_lint . ``` You can automatically fix many linting issues with: ```bash -bundle exec rubocop -a -bundle exec rails eslint:fix -bundle exec erb_lint . --autocorrect +bin/rubocop -a +bin/rails eslint:fix +bin/erb_lint . --autocorrect ``` > [!NOTE] -> Use `bundle exec rails eslint:fix` instead of the standard `eslint --fix` option, which is silently ignored in this Rails project. +> Use `bin/rails eslint:fix` instead of the standard `eslint --fix` option, which is silently ignored in this Rails project. > [!TIP] > You can also install hooks to have git run checks automatically when you commit using [overcommit](https://github.com/sds/overcommit) with: > > ```bash -> bundle exec overcommit --install +> bin/overcommit --install > ``` ### Testing @@ -135,13 +135,13 @@ When contributing, you should: You can run the existing test suite with: ```bash -bundle exec rails test:all +bin/rails test:all ``` You can run javascript tests with: ```bash -RAILS_ENV=test bundle exec teaspoon +RAILS_ENV=test bin/teaspoon ``` You can view test coverage statistics by browsing the `coverage` directory. @@ -160,7 +160,7 @@ The tests are automatically run on Pull Requests and other commits via github ac We also perform static analysis of our code. You can run the analysis yourself with: ```bash -bundle exec brakeman -q +bin/brakeman -q ``` ### Comments diff --git a/Dockerfile b/Dockerfile index b3f5171421a..4c1cd7ac0d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -52,7 +52,7 @@ RUN bundle install # Install NodeJS packages using yarn COPY package.json yarn.lock /app/ COPY bin/yarn /app/bin/ -RUN bundle exec bin/yarn install +RUN bin/yarn install # Copy and set entrypoint COPY docker/entrypoint.sh /entrypoint.sh diff --git a/bin/annotaterb b/bin/annotaterb new file mode 100755 index 00000000000..e6adc886e06 --- /dev/null +++ b/bin/annotaterb @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'annotaterb' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("annotaterb", "annotaterb") diff --git a/bin/bundle b/bin/bundle deleted file mode 100755 index 5015ba6f8b4..00000000000 --- a/bin/bundle +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) -load Gem.bin_path("bundler", "bundle") diff --git a/bin/danger b/bin/danger new file mode 100755 index 00000000000..4fac47ffa4e --- /dev/null +++ b/bin/danger @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'danger' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("danger", "danger") diff --git a/bin/database_consistency b/bin/database_consistency new file mode 100755 index 00000000000..d6e103d0192 --- /dev/null +++ b/bin/database_consistency @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'database_consistency' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("database_consistency", "database_consistency") diff --git a/bin/erb_lint b/bin/erb_lint new file mode 100755 index 00000000000..d044fe10f29 --- /dev/null +++ b/bin/erb_lint @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'erb_lint' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("erb_lint", "erb_lint") diff --git a/bin/erblint b/bin/erblint new file mode 100755 index 00000000000..63d662cffa9 --- /dev/null +++ b/bin/erblint @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'erblint' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("erb_lint", "erblint") diff --git a/bin/herb b/bin/herb new file mode 100755 index 00000000000..e02b5b5a996 --- /dev/null +++ b/bin/herb @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'herb' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("herb", "herb") diff --git a/bin/i18n b/bin/i18n new file mode 100755 index 00000000000..20c34fe0cbd --- /dev/null +++ b/bin/i18n @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'i18n' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("i18n-js", "i18n") diff --git a/bin/overcommit b/bin/overcommit new file mode 100755 index 00000000000..1d7641526e9 --- /dev/null +++ b/bin/overcommit @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'overcommit' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("overcommit", "overcommit") diff --git a/bin/teaspoon b/bin/teaspoon new file mode 100755 index 00000000000..ec7890d8ee8 --- /dev/null +++ b/bin/teaspoon @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'teaspoon' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("teaspoon", "teaspoon") diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb index a2df9167f42..a8a851bc113 100644 --- a/config/initializers/doorkeeper.rb +++ b/config/initializers/doorkeeper.rb @@ -56,7 +56,7 @@ # By default this option is disabled. # # Make sure you properly setup you database and have all the required columns (run - # `bundle exec rails generate doorkeeper:enable_polymorphic_resource_owner` and execute Rails + # `bin/rails generate doorkeeper:enable_polymorphic_resource_owner` and execute Rails # migrations). # # If this option enabled, Doorkeeper will store not only Resource Owner primary key diff --git a/config/locales/README b/config/locales/README index ac2146830a8..49d3af9be01 100644 --- a/config/locales/README +++ b/config/locales/README @@ -5,7 +5,7 @@ Do NOT edit any translations in here, please use translatewiki.net instead. The only file in this directory that should be edited by hand is en.yml, when localisation strings change or new translations are introduced. All other languages _need_ to be edited using translatewiki.net. Please make sure that you -run the tests using *bundle exec rails test:all* to make sure that there are no +run the tests using *bin/rails test:all* to make sure that there are no errors, as there is at least one test that makes sure that all translations are valid (we'll makes sure that they won't cause the site to not work). diff --git a/doc/CONFIGURE.md b/doc/CONFIGURE.md index 9709793c241..ecf1a219e2d 100644 --- a/doc/CONFIGURE.md +++ b/doc/CONFIGURE.md @@ -53,7 +53,7 @@ osmosis --read-pbf greater-london-latest.osm.pbf \ Many features of the website require a user. The following script can get you started: ```bash -$ bundle exec rails dev:populate +$ bin/rails dev:populate ``` This will create two users: `admin` (with administrator privileges) and `mapper` (with normal privileges). For either of them, the password is `password` (feel free to change it). @@ -64,7 +64,7 @@ Alternatively, you can create users manually using the web interface at [http:// 1. **Enter the Rails console:** ```bash - $ bundle exec rails console + $ bin/rails console ``` 2. **Find the user:** @@ -115,7 +115,7 @@ Otherwise, you need to register these applications with *one* of the users you c > You can register both applications automatically by running the following rake task: > > ```bash -> bundle exec rails oauth:register_apps["My New User Name"] +> bin/rails oauth:register_apps["My New User Name"] > ``` > > This task registers the applications with the "My New User Name" user as the owner and saves their keys to `config/settings.local.yml`. When logged in, the owner should be able to see the apps on the OAuth 2 applications page. @@ -212,12 +212,12 @@ We use [ActionMailer Previews](https://guides.rubyonrails.org/action_mailer_basi > > - **Update Node.js modules:** If Node.js modules have been updated, run: > ```bash -> bundle exec bin/yarn install +> bin/yarn install > ``` > > - **Run database migrations:** The OSM database schema is changed periodically. To keep up with improvements: > ```bash -> bundle exec rails db:migrate +> bin/rails db:migrate > ``` ## Production Deployment @@ -241,8 +241,8 @@ If you want to deploy `openstreetmap-website` for production use, you'll need to - **Generate i18n files and precompile assets:** ```bash - RAILS_ENV=production bundle exec i18n export - bundle exec rails assets:precompile + RAILS_ENV=production bin/i18n export + bin/rails assets:precompile ``` ### File Permissions diff --git a/doc/DEVCONTAINER.md b/doc/DEVCONTAINER.md index e0b383d805d..ba734f283d7 100644 --- a/doc/DEVCONTAINER.md +++ b/doc/DEVCONTAINER.md @@ -104,11 +104,11 @@ If everything went well, you are done! For example, now you can open a shell in ![VS Code: command to open a terminal](./assets/vscode-create-terminal.png) -From this terminal, you can run the test suite with `bundle exec rails test:all`: +From this terminal, you can run the test suite with `bin/rails test:all`: ![Running the test suite in the terminal](./assets/vscode-rails-test-all.png) -Hopefully it should be all green? 🤞 You can also start a development server with `bundle exec rails s`: +Hopefully it should be all green? 🤞 You can also start a development server with `bin/rails s`: ![Running the dev server in the terminal](./assets/vscode-rails-server.png) diff --git a/doc/DOCKER.md b/doc/DOCKER.md index 60819afa49c..660ce4caa39 100644 --- a/doc/DOCKER.md +++ b/doc/DOCKER.md @@ -99,7 +99,7 @@ This will open a shell where you can enter commands. These commands will run wit To create all databases and set up all databases, run: ```bash -bundle exec rails db:create +bin/rails db:create ``` ## Validate Your Installation @@ -111,7 +111,7 @@ Hopefully that's it? Let's check that things are working properly. Run the test suite: ```bash -bundle exec rails test:all +bin/rails test:all ``` This test will take a few minutes, reporting tests run, assertions, and any errors. If you receive no errors, then your installation was successful. On occasion some tests may fail randomly and will pass if run again. We are working towards avoiding this, but it can still happen. @@ -124,7 +124,7 @@ This test will take a few minutes, reporting tests run, assertions, and any erro Rails comes with a built-in webserver, so that you can test on your own machine without needing a server. Run: ```bash -bundle exec rails server +bin/rails server ``` You can now view the site in your favourite web browser at [http://localhost:3000/](http://localhost:3000/) diff --git a/doc/INSTALL.md b/doc/INSTALL.md index f3c2c93eea4..792b2cd0f4a 100644 --- a/doc/INSTALL.md +++ b/doc/INSTALL.md @@ -37,5 +37,5 @@ If you want to deploy `openstreetmap-website` for production use, you'll need to > [!TIP] > The included version of the map call is quite slow and eats a lot of memory. You should consider using [CGIMap](https://github.com/zerebubuth/openstreetmap-cgimap) instead. -* Make sure you generate the i18n files and precompile the production assets: `RAILS_ENV=production bundle exec i18n export; bundle exec rails assets:precompile` +* Make sure you generate the i18n files and precompile the production assets: `RAILS_ENV=production bin/i18n export; bin/rails assets:precompile` * Make sure the web server user as well as the rails user can read, write and create directories in `tmp/`. diff --git a/doc/MANUAL_INSTALL.md b/doc/MANUAL_INSTALL.md index a58fe186d9f..2a638eb5473 100644 --- a/doc/MANUAL_INSTALL.md +++ b/doc/MANUAL_INSTALL.md @@ -138,7 +138,7 @@ bundle install We use [Yarn](https://yarnpkg.com/) to manage the Node.js modules required for the project. ```bash -bundle exec bin/yarn install +bin/yarn install ``` ## Step 4: Prepare Configuration Files @@ -186,7 +186,7 @@ exit To create the three databases - for development, testing and production - run: ```bash -bundle exec rails db:create +bin/rails db:create ``` ### Database structure @@ -194,7 +194,7 @@ bundle exec rails db:create To create all the tables, indexes and constraints, run: ```bash -bundle exec rails db:migrate +bin/rails db:migrate ``` ## Validate Your Installation @@ -204,7 +204,7 @@ bundle exec rails db:migrate To ensure that everything is set up properly, you should now run: ```bash -bundle exec rails test:all +bin/rails test:all ``` This test will take a few minutes, reporting tests run, assertions, and any errors. If you receive no errors, then your installation is successful. @@ -217,7 +217,7 @@ This test will take a few minutes, reporting tests run, assertions, and any erro Rails comes with a built-in webserver, so that you can test on your own machine without needing a server. Run ```bash -bundle exec rails server +bin/rails server ``` You can now view the site in your favourite web-browser at [http://localhost:3000/](http://localhost:3000/) diff --git a/docker-compose.yml b/docker-compose.yml index f8b3364cde3..c940d6a6140 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,7 @@ services: - "3000:3000" stdin_open: true tty: true - command: bundle exec rails s -p 3000 -b '0.0.0.0' + command: bin/rails s -p 3000 -b '0.0.0.0' depends_on: db: condition: service_healthy