4.2 KiB
Developing locally on host machine
The most common way to run a development version of the application is run with local dependencies.
Dependencies:
- Ruby
- Rails
- PostgreSQL
- NodeJS
- Gecko driver [for running Selenium tests]
We recommend using RBenv to manage Ruby versions.
-
Install PostgreSQL
macOS:
brew install postgresql brew services start postgresql
Linux (Debian):
sudo apt install -y postgresql postgresql-contrib libpq-dev sudo systemctl start postgresql
-
Create a Postgres user
sudo su - postgres -c "createuser <username> -s -P"
-
Install RBenv & Ruby-build
macOS:
brew install rbenv rbenv init mkdir -p ~/.rbenv/plugins git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Linux (Debian):
sudo apt install -y rbenv git rbenv init echo 'eval "$(rbenv init -)"' >> ~/.bashrc mkdir -p ~/.rbenv/plugins git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
-
Install Ruby and Bundler
rbenv install 3.1.2 rbenv global 3.1.2 source ~/.bashrc gem install bundler
-
Install JavaScript dependencies
macOS:
brew install node brew install yarn
Linux (Debian):
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash - sudo apt -y install nodejs mkdir -p ~/.npm-packages npm config set prefix ~/.npm-packages echo 'NPM_PACKAGES="~/.npm-packages"' >> ~/.bashrc echo 'export PATH="$PATH:$NPM_PACKAGES/bin"' >> ~/.bashrc source ~/.bashrc npm install --location=global yarn
-
Clone the repo
git clone https://github.com/communitiesuk/submit-social-housing-lettings-and-sales-data.git
Application setup
-
Copy the
.env.example
to.env
and replace the database credentials with your local postgres user credentials. -
Install the dependencies:
bundle install && yarn install
-
Create the database & run migrations:
bundle exec rake db:create db:migrate
-
Seed the database if required:
bundle exec rake db:seed
-
Start the dev servers
a. Using Foreman:
./bin/dev
b. Individually:
Rails:
bundle exec rails s
JavaScript (for hot reloading):
yarn build --mode=development --watch
If you’re not modifying front end assets you can bundle them as a one off task:
yarn build --mode=development
Development mode will target the latest versions of Chrome, Firefox and Safari for transpilation while production mode will target older browsers.
The Rails server will start on http://localhost:3000.
-
Install Gecko Driver
Linux (Debian):
wget https://github.com/mozilla/geckodriver/releases/download/v0.31.0/geckodriver-v0.31.0-linux64.tar.gz tar -xvzf geckodriver-v0.31.0-linux64.tar.gz rm geckodriver-v0.31.0-linux64.tar.gz chmod +x geckodriver sudo mv geckodriver /usr/local/bin/
Running the test suite (front end assets need to be built or server needs to be running):
bundle exec rspec
Using Docker
-
Build the image:
docker-compose build
-
Run the database migrations:
docker-compose run --rm app /bin/bash -c 'rake db:migrate'
-
Seed the database if required:
docker-compose run --rm app /bin/bash -c 'rake db:seed'
-
To be able to debug with Pry run the app using:
docker-compose run --service-ports app
If this is not needed you can run docker-compose up
as normal
The Rails server will start on http://localhost:8080.
-
To run the test suite in docker:
docker-compose run --rm app /bin/bash -c ' RAILS_ENV=test rspec'