Browse Source

Add more instructions for local dependencies

pull/696/head
baarkerlounger 3 years ago
parent
commit
543cc47093
  1. 134
      docs/developer_setup.md

134
docs/developer_setup.md

@ -1,49 +1,117 @@
## Dependencies # **Developing locally on host machine**
Pre-requisites: The most common way to run a development version of the application is run with local dependencies.
- Ruby 3.1 Dependencies:
- Rails 7
- Postgres 13 - Ruby
- Node 16 - Rails
- PostgreSQL
### Quick start - NodeJS
- Gecko driver (https://github.com/mozilla/geckodriver/releases) [for running Selenium tests]
We recommend using RBenv to manage Ruby versions.
1. Install PostgreSQL
Mac OS:
```bash
brew install postgresql
brew services start postgresql
```
Linux (Debian):
```bash
sudo apt install -y postgresql postgresql-contrib libpq-dev
sudo systemctl start postgresql
```
2. Create a Postgres user
```bash
sudo su - postgres -c "createuser <username> -P"
```
3. Install RBenv & Ruby-build
Mac OS:
```bash
brew install rbenv
rbenv init
mkdir -p ~/.rbenv/plugins
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
```
Linux (Debian):
```bash
sudo apt install -y rbenv
echo 'export PATH="/usr/local/rbenv/bin:\$PATH"' >> ~/.bashrc
rbenv init
echo "# Load RBenv" >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
mkdir -p ~/.rbenv/plugins
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
```
4. Install Ruby & Bundler
```bash
rbenv install 3.1.2
rbenv global 3.1.2
gem install bundler
```
5. Install Javascript depenencies
Mac OS:
```bash
brew install node
brew install yarn
```
Linux (Debian):
```bash
curl -sL https://deb.nodesource.com/setup_16.x | bash -
sudo apt -y install nodejs
mkdir "~/.npm-packages"
npm config set prefix "~/.npm-packages"
echo 'NPM_PACKAGES="~/.npm-packages"' >> ~/.bashrc
echo 'export PATH="$PATH:$NPM_PACKAGES/bin"' >> ~/.bashrc
npm install --global yarn
```
6. Clone the repo
```bash
git clone git@github.com:communitiesuk/submit-social-housing-lettings-and-sales-data.git
```
## App setup (OS agnostic)
1. Copy the `.env.example` to `.env` and replace the database credentials with your local postgres user credentials. 1. Copy the `.env.example` to `.env` and replace the database credentials with your local postgres user credentials.
2. Install the dependencies:\ 2. Install the dependencies:\
`bundle install` `bundle install && yarn install`
3. Create the database:\
`rake db:create`
4. Run the database migrations:\ 3. Create the database & run migrations:\
`rake db:migrate` `rake db:create db:migrate`
5. Seed the database if required:\ 4. Seed the database if required:\
`rake db:seed` `rake db:seed`
6. Seed the database with rent ranges if required (~7000 rows per year):\ 5. Start the dev servers
`rake "data_import:rent_ranges[<start_year>,<rent_ranges_path>]"`
For 2021-2022 ranges run:\ a. Using foreman:\
`rake "data_import:rent_ranges[2021,config/rent_range_data/2021.csv]"`
7. Install the frontend depenencies:\
`yarn install`
8. Start the dev servers using foreman:\
`./bin/dev` `./bin/dev`
Or start them individually:\ b. Individually:\
a. Rails:\ i. Rails:\
`bundle exec rails s` `bundle exec rails s`
b. JS (for hot reloading):\ ii. JS (for hot reloading):\
`yarn build --mode=development --watch` `yarn build --mode=development --watch`
If you're not modifying front end assets you can bundle them as a one off task:\ If you're not modifying front end assets you can bundle them as a one off task:\
`yarn build --mode=development` `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. Development mode will target the latest versions of Chrome, Firefox and Safari for transpilation while production mode will target older browsers.
@ -53,7 +121,9 @@ The Rails server will start on <http://localhost:3000>.
Running the test suite (front end assets need to be built or server needs to be running):\ Running the test suite (front end assets need to be built or server needs to be running):\
`bundle exec rspec` `bundle exec rspec`
### Using Docker
# **Using Docker**
1. Build the image:\ 1. Build the image:\
`docker-compose build` `docker-compose build`

Loading…
Cancel
Save