Merge remote-tracking branch 'origin/rumperuu/update-readme' into ben/feature/push-notifications
This commit is contained in:
commit
9b914c11fa
1 changed files with 92 additions and 99 deletions
191
README.md
191
README.md
|
@ -1,4 +1,6 @@
|
||||||
# Pear LocalLoop Server
|
# LocalSpend - Server
|
||||||
|
|
||||||
|
This repository contains the server for the LocalSpend system.
|
||||||
|
|
||||||
## Current Status
|
## Current Status
|
||||||
|
|
||||||
|
@ -6,68 +8,68 @@
|
||||||
|
|
||||||
*Development:* [![Build Status](https://travis-ci.org/Pear-Trading/Foodloop-Server.svg?branch=development)](https://travis-ci.org/Pear-Trading/Foodloop-Server)
|
*Development:* [![Build Status](https://travis-ci.org/Pear-Trading/Foodloop-Server.svg?branch=development)](https://travis-ci.org/Pear-Trading/Foodloop-Server)
|
||||||
|
|
||||||
# Testing
|
# Test Environment
|
||||||
|
|
||||||
To run the main test framework, first install all the dependencies, then run the tests:
|
## Running Tests
|
||||||
|
|
||||||
```
|
To run the main test framework, first install all the dependencies, then run
|
||||||
cpanm --installdeps .
|
the tests:
|
||||||
prove -lr
|
|
||||||
```
|
|
||||||
|
|
||||||
To run the main framework against a PostgreSQL backend, assuming you have postgres installed, you will need some extra dependencies first:
|
- `cpanm --installdeps .`
|
||||||
|
- `prove -lr`
|
||||||
|
|
||||||
```
|
To run the main framework against a PostgreSQL backend, assuming you have
|
||||||
cpanm --installdeps . --with-feature postgres
|
`postgres` installed, you will need some extra dependencies first:
|
||||||
PEAR_TEST_PG=1 prove -lr
|
|
||||||
```
|
|
||||||
|
|
||||||
# Minion
|
- `cpanm --installdeps . --with-feature postgres`
|
||||||
|
- `PEAR_TEST_PG=1 prove -lr`
|
||||||
|
|
||||||
to set up minion support, you will need to create a database and user for
|
## Setting Up Minion
|
||||||
minion to connect to. In production his should be a PostgreSQL database,
|
|
||||||
however an SQLite db can be used in testing.
|
|
||||||
|
|
||||||
To use the SQLite version, run the following commands:
|
To set up Minion support, you will need to create a database and user for
|
||||||
|
it to connect to.
|
||||||
|
In production his should be a PostgreSQL database, however SQLite can be used
|
||||||
|
in testing.
|
||||||
|
|
||||||
```
|
To use the SQLite version:
|
||||||
cpanm --installdeps --with-feature sqlite .
|
|
||||||
```
|
|
||||||
|
|
||||||
And then add the following to your configuration file:
|
1. Install the SQLite dependencies:
|
||||||
|
- `cpanm --installdeps --with-feature sqlite .`
|
||||||
|
2. Ensure that the following is in your configuration file:
|
||||||
|
- ```
|
||||||
|
minion => {
|
||||||
|
SQLite => 'sqlite:minion.db',
|
||||||
|
},
|
||||||
|
```
|
||||||
|
|
||||||
```
|
This will then use an SQLite DB for the Minion backend, using `minion.db` as
|
||||||
minion => {
|
the database file.
|
||||||
SQLite => 'sqlite:minion.db',
|
|
||||||
},
|
|
||||||
```
|
|
||||||
|
|
||||||
This will then use an SQLite db for the minion backend, using `minion.db` as
|
To start the minion itself, run this command:
|
||||||
the database file. To start the minion itself, run:
|
- `./script/pear-local_loop minion worker`
|
||||||
|
|
||||||
```
|
## Importing Ward Data
|
||||||
./script/pear-local_loop minion worker
|
|
||||||
```
|
|
||||||
|
|
||||||
# Importing Ward Data
|
To import ward data:
|
||||||
|
|
||||||
To import ward data, get the ward data csv and then run the following command:
|
1. Download CSV(s) from [here](https://www.doogal.co.uk/PostcodeDownloads.php)
|
||||||
|
1. Run the following command:
|
||||||
|
- ```shell script
|
||||||
|
./script/pear-local_loop minion job \
|
||||||
|
--enqueue 'csv_postcode_import' \
|
||||||
|
--args '[ "⟨ path to CSV ⟩ ]'
|
||||||
|
```
|
||||||
|
|
||||||
```shell script
|
## Setting Up Entity Postcodes
|
||||||
./script/pear-local_loop minion job \
|
|
||||||
--enqueue 'csv_postcode_import' \
|
|
||||||
--args '[ "/path/to/ward/csv" ]'
|
|
||||||
```
|
|
||||||
|
|
||||||
# Setting up Entity Postcodes
|
1. Import Code-Point Open:
|
||||||
|
- included in `etc/`
|
||||||
Assuming you have imported codepoint open, then to properly assign all
|
- `./script/pear-local_loop codepoint_open --outcodes LA1`
|
||||||
postcodes:
|
1. Assign postcodes:
|
||||||
|
- ```shell script
|
||||||
```shell script
|
./script/pear-local_loop minion job \
|
||||||
./script/pear-local_loop minion job \
|
--enqueue entity_postcode_lookup
|
||||||
--enqueue entity_postcode_lookup
|
```
|
||||||
```
|
|
||||||
|
|
||||||
## Example PostgreSQL setup
|
## Example PostgreSQL setup
|
||||||
|
|
||||||
|
@ -81,70 +83,61 @@ psql=# alter user minion with encrypted password 'abc123';
|
||||||
psql=# grant all privileges on database localloop_minion to minion;
|
psql=# grant all privileges on database localloop_minion to minion;
|
||||||
```
|
```
|
||||||
|
|
||||||
# Development
|
# Development Environment
|
||||||
|
|
||||||
There are a couple of setup steps to getting a development environment ready.
|
There are a couple of setup steps to getting a development environment ready.
|
||||||
Use the corresponding instructions depending on what state your current setup
|
|
||||||
is in.
|
|
||||||
|
|
||||||
## First Time Setup
|
## First Time Setup
|
||||||
|
|
||||||
First, decide if you're using SQLite or PostgreSQL locally. Development supports
|
1. Decide if you're using SQLite or PostgreSQL locally.
|
||||||
both, however production uses PostgreSQL. For this example we will use SQLite.
|
- Development supports both, however production uses PostgreSQL.
|
||||||
As the default config is set up for this, no configuration changes are
|
- For this example we will use SQLite.
|
||||||
needed initially. So, first off, install dependencies:
|
- As the default config. is set up for this, no configuration changes are
|
||||||
|
needed initially.
|
||||||
|
1. Install dependencies:
|
||||||
|
- ```shell script
|
||||||
|
cpanm --installdeps . \
|
||||||
|
--with-feature=sqlite \
|
||||||
|
--with-feature=codepoint-open
|
||||||
|
```
|
||||||
|
1. Install the database:
|
||||||
|
- `./script/deploy_db install -c 'dbi:SQLite:dbname=foodloop.db'`
|
||||||
|
1. Set up the development users:
|
||||||
|
- `./script/pear-local_loop dev_data --force`
|
||||||
|
- **DO NOT RUN ON PROD.**
|
||||||
|
1. Start the minion:
|
||||||
|
- `./script/pear-local_loop minion worker`
|
||||||
|
1. Import ward data (see [instructions](#importing-ward-data) above)
|
||||||
|
1. Set up postcodes (see [instructions](#setting-up-entity-postcodes) above)
|
||||||
|
1. Create an `environment.dev.ts` file in `src/environments` with your API keys
|
||||||
|
1. Start the application:
|
||||||
|
- `morbo script/pear-local_loop -l http://*:3000`
|
||||||
|
- You can modify the host and port as needed.
|
||||||
|
|
||||||
```shell script
|
## Database Scripts
|
||||||
cpanm --installdeps . --with-feature=sqlite
|
|
||||||
```
|
|
||||||
|
|
||||||
Then install the database:
|
To upgrade the database after making changes to commit:
|
||||||
|
|
||||||
```shell script
|
1. Increment the `$VERSION` number in `lib/Pear/LocalLoop/Schema.pm`
|
||||||
./script/deploy_db install -c 'dbi:SQLite:dbname=foodloop.db'
|
1. `./script/deploy_db write_ddl -c 'dbi:SQLite:dbname=foodloop.db'`
|
||||||
```
|
1. `./script/deploy_db upgrade -c 'dbi:SQLite:dbname=foodloop.db'`
|
||||||
|
|
||||||
Then set up the development users:
|
|
||||||
|
|
||||||
```shell script
|
|
||||||
./script/pear-local_loop dev_data --force
|
|
||||||
```
|
|
||||||
|
|
||||||
***Note: do NOT run that script on production.***
|
|
||||||
|
|
||||||
Then you can start the application:
|
|
||||||
|
|
||||||
```shell script
|
|
||||||
morbo script/pear-local_loop -l http://*:3000
|
|
||||||
```
|
|
||||||
|
|
||||||
You can modify the host and port for listening as needed.
|
|
||||||
|
|
||||||
# Old Docs
|
|
||||||
|
|
||||||
## Local test database
|
|
||||||
|
|
||||||
To install a local DB:
|
|
||||||
|
|
||||||
```
|
|
||||||
./script/deploy_db install -c 'dbi:SQLite:dbname=foodloop.db'
|
|
||||||
```
|
|
||||||
|
|
||||||
To do an upgrade of it after making DB changes to commit:
|
|
||||||
|
|
||||||
```
|
|
||||||
./script/deploy_db write_ddl -c 'dbi:SQLite:dbname=foodloop.db'
|
|
||||||
./script/deploy_db upgrade -c 'dbi:SQLite:dbname=foodloop.db'
|
|
||||||
```
|
|
||||||
|
|
||||||
To redo leaderboards:
|
To redo leaderboards:
|
||||||
|
|
||||||
```
|
1. `./script/pear-local_loop recalc_leaderboards`
|
||||||
./script/pear-local_loop recalc_leaderboards
|
|
||||||
```
|
|
||||||
|
|
||||||
To serve a test version locally of the server:
|
# Troubleshooting
|
||||||
|
|
||||||
|
## ‘Can't write to /usr/local/share/perl/5.30.0 and /usr/local/bin: Installing modules to /home/<username>/perl5’ when running `cpanm` commands
|
||||||
|
|
||||||
|
Intall `local::lib` by running the following commands:
|
||||||
|
|
||||||
```
|
```
|
||||||
morbo script/pear-local_loop
|
cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
NB: You must run this in each Terminal window; I don't know why.
|
||||||
|
|
||||||
|
## ‘Can't load application from file "<path-to-repo>/script/pear-local_loop": Can't locate Data/UUID.pm in @INC (you may need to install the DATA::UUID module)’ when running server
|
||||||
|
|
||||||
|
Ensure you have run the `cpan --installdeps` command.
|
||||||
|
|
Reference in a new issue