From c11b8515787cd08125aca539d133d9cf6c5a1591 Mon Sep 17 00:00:00 2001 From: erbridge Date: Wed, 14 Sep 2022 20:19:42 +0200 Subject: [PATCH] Use bin scripts for setup and updates This saves bunch of reading, copying, pasting, debugging on first setup or when returning after a while. --- README.md | 42 ++++++++++++++++++++---------------------- bin/setup | 21 +++++++++++++-------- bin/update | 4 +++- bin/yarn | 2 +- 4 files changed, 37 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index ec67ff9dc..5c75eab0a 100644 --- a/README.md +++ b/README.md @@ -62,47 +62,45 @@ POSTGRES_USER=postgres PGPASSWORD=foobar ``` -### Set up the local placecal repository, set up the database, and run it +### Clone this Git repository -``` +```sh git clone https://github.com/geeksforsocialchange/PlaceCal.git -bundle && yarn -bundle exec rails db:setup db:migrate seed:migrate -bundle exec rails import:all_events -./bin/dev +cd PlaceCal ``` -- Start the server with `./bin/dev` instead of `bundle exec rails server` due to migration to jsbundling -- Make sure you use `lvh.me:3000` instead of `localhost` or you **will** have authentication problems. -- Admin interface is `admin.lvh.me:3000` (You will need to make a new admin user -- see below) -- Access code docs through your local filesystem, and update with `bundle exec rails yard` +### Run the setup script -To set up your own server, take a look at `INSTALL.md`. +```sh +bin/setup +``` -### Creating an admin user +Amongst other things, this will create an admin user for you: -To create an admin user, open the console (`bin/rails c`) and run the following: +- Username: `admin@placecal.org` +- Password: `password` -``` -User.create!(email: 'info@placecal.org', password: 'password', password_confirmation: 'password', role: :root) -``` +### Run the thing -(Note: You should replace 'info@placecal.org' and 'password' with more appropriate values) +- Start the server with `bin/dev` +- Make sure you use `lvh.me:3000` instead of `localhost:3000` or you **will** have authentication problems +- The admin interface is at `admin.lvh.me:3000` +- Access code docs through your local filesystem and update them with `bin/rails yard` ## Testing PlaceCal tests are written in minitest. Before running the tests please ensure your dev environment has all of the migrations run, and ensure you have loaded the schema into the test database by running: ```sh -rails db:test:prepare +bin/rails db:test:prepare ``` The following commands are used for running tests: ```sh -rails test # To run all of the unit tests -rails test:system # To run all of the system tests (Invokes a headless browser) -rails test:all # To run both the unit tests and the system tests at once +bin/rails test # To run all of the unit tests +bin/rails test:system # To run all of the system tests (Invokes a headless browser) +bin/rails test:all # To run both the unit tests and the system tests at once ``` Please note that when running unit tests, system tests are **not** run, this is because they can take a while to run and are quite resource intensive. To perform more advanced usage like executing only a specific test or test file, see the documentation [here](https://guides.rubyonrails.org/testing.html) @@ -116,7 +114,7 @@ We use [Prettier](https://prettier.io/) to format everything it's able to parse. If you do want to run it manually, you can: ```sh -yarn run format +bin/yarn run format ``` Note that we use tabs over spaces because [tabs are more accessible to people using braille displays](https://twitter.com/Rich_Harris/status/1541761871585464323). diff --git a/bin/setup b/bin/setup index 5853b5ea8..0cc3e3170 100755 --- a/bin/setup +++ b/bin/setup @@ -15,18 +15,23 @@ FileUtils.chdir APP_ROOT do puts '== Installing dependencies ==' system! 'gem install bundler --conservative' - system('bundle check') || system!('bundle install') + system('bin/bundle check') || system!('bin/bundle install') + system! 'bin/yarn install' - # Install JavaScript dependencies - # system('bin/yarn') - - # puts "\n== Copying sample files ==" - # unless File.exist?('config/database.yml') - # FileUtils.cp 'config/database.yml.sample', 'config/database.yml' - # end + puts "\n== Copying sample files ==" + unless File.exist?('.env') + FileUtils.cp '.env.example', '.env' + end puts "\n== Preparing database ==" system! 'bin/rails db:prepare' + system! 'bin/rails seed:migrate' + + puts "\n== Importing events ==" + system! 'bin/rails import:all_events' + + puts "\n== Creating admin user ==" + system! 'bin/rails runner \'User.where(email: "admin@placecal.org").exists? || User.create!(email: "admin@placecal.org", password: "password", password_confirmation: "password", role: :root)\'' puts "\n== Removing old logs and tempfiles ==" system! 'bin/rails log:clear tmp:clear' diff --git a/bin/update b/bin/update index 1d6aa6a5c..67dc24461 100755 --- a/bin/update +++ b/bin/update @@ -18,10 +18,12 @@ chdir APP_ROOT do puts '== Installing dependencies ==' system! 'gem install bundler --conservative' - system('bundle check') || system!('bundle install') + system('bin/bundle check') || system!('bin/bundle install') + system! 'bin/yarn install' puts "\n== Updating database ==" system! 'bin/rails db:migrate' + system! 'bin/rails seed:migrate' puts "\n== Removing old logs and tempfiles ==" system! 'bin/rails log:clear tmp:clear' diff --git a/bin/yarn b/bin/yarn index 460dd565b..a6eb079f1 100755 --- a/bin/yarn +++ b/bin/yarn @@ -5,7 +5,7 @@ Dir.chdir(APP_ROOT) do exec "yarnpkg", *ARGV rescue Errno::ENOENT $stderr.puts "Yarn executable was not detected in the system." - $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" + $stderr.puts "Download Yarn at https://classic.yarnpkg.com/en/docs/install" exit 1 end end