Vets API requires:
-
Ruby 3.2.2
-
PostgreSQL 11.x (including PostGIS 2.5)
-
Redis 5.0.x
The most up-to-date versions of each key dependency will be specified in the
docker-compose.yml
file and theDockerfile
.We suggest using a Ruby version manager such as
rbenv
,asdf
,rvm
, orchruby
to install and maintain your version of Ruby.
- Install
rvm
withbrew install rvm
. This could take a while. - Check the ruby version number in
.ruby-version
. Use this number to install the needed Ruby version in the commandrvm install <version_number>
. This could also take a while. - Run
rvm use
within the repo to confirm that the correct version is being used. - After installing a new version of Ruby, run
gem install bundler
andbundle install
to ensure all gems are installed for the current version.
Steps 2-4 must be repeated if the repo's Ruby version is updated later.
-
Follow the common base setup.
-
Install Bundler to manage Ruby dependencies
gem install bundler
-
Follow the platform specific notes below for OSX or Ubuntu to get dependencies installed.
-
Install gem dependencies:
cd vets-api; bundle install
More information about installing with Sidekiq Enterprise as well as our credentials are on the internal system here
-
Make sure you have the vets-api-mockdata repo locally installed, preferably in a sibling directory to
vets-api
. -
Go to the file
config/settings/development.yml
and make sure thecache-dir
points to the local installation ofvets-api-mockdata
from the previous step.cache_dir: ../vets-api-mockdata # via rails; e.g. bundle exec rails s or bundle exec rails c # cache_dir: /cache # via docker; e.g. make up or make console
-
Add this key in
config/settings.local.yml
pointing to yourvets-api-mockdata
directory.# settings.local.yml betamocks: cache_dir: ../vets-api-mockdata
-
Run
bin/setup
to setup the database and start the server.
If you have trouble enabling query stats from the PgHero dashboard, try enabling it manually
Add the lines below to your main postgresql.conf file
On Mac it should be located somewhere similiar to the following:
~/Library/Application Support/Postgres/var-12/postgresql.conf
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all
pg_stat_statements.max = 10000
track_activity_query_size = 2048
Make sure to migrate your database to enable the pg_stat_statements extension
We use the config
gem to manage settings in the application. Local settings for each developer should be managed in your own local config/settings.local.yml
file, which by default can override the standard configuration and is excluded from source control so the settings can persist.
This file has the necessary configuration settings for local development as well as comments outlining some additional configuration that some developers may wish to use.
In many cases, there in no need to run ClamAV for local development, even if you are working with uploaded files since the scanning functionality is already built into our CarrierWave and Shrine file upload base classes.
If you would like to run a fake ClamAV "scanner" that will quickly produce a virus-free scan, you can configure the application to use the executable bash script bin/fake_clamd
. This configuration is commented out in config/settings.local.yml
binaries:
# For NATIVE and DOCKER installation
# A "virus scanner" that always returns success for development purposes
# NOTE: You may need to specify a full path instead of a relative path
clamdscan: ./bin/fake_clamdscan
If you wish to run ClamAV, you'll need to check the platform specific notes.
Specific notes for our most common native installation platforms are in this section. Note that most Windows users tend to use Docker instead of a native installation.
All of the OSX instructions assume homebrew
is your package manager
-
Install Postgresql & PostGIS
- It is MUCH easier to use the Postgres.app which installs the correct combination of Postgresql and PostGIS versions.
- Download the Postgres.app with PostgreSQL 10, 11 and 12
- Install Instructions here: https://postgresapp.com/
sudo mkdir -p /etc/paths.d && echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp
ARCHFLAGS="-arch x86_64" gem install pg -v 1.2.3
- Alternatively Postgresql 11 & PostGIS 2.5 can be installed with homebrew
brew install postgresql@11
brew services start postgresql@11
- Install the
pex
manager to add your Postgresql 11 extensions from here - Install the
postgis
extension along with a number of patches using the instructions summarized here: -
PG_CPPFLAGS='-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H -I/usr/local/include' CFLAGS='-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H -I/usr/local/include' pex install postgis
- run postgres (e.g. open postgres.app, create a new server, and click "initialize")
-
Install redis
brew install redis brew services start redis
-
Install binary dependencies:
brew bundle
-
Among other things, the above
brew bundle
command installs ClamAV, but does not enable it. To enable ClamAV:brew info clamav # See the "Caveats" section: "To finish installation & run clamav you will need to edit the example conf files at `${conf_files_dir}`" cd $(brew --prefix clamav) touch clamd.sock echo "LocalSocket $(brew --prefix clamav)" > clamd.conf echo "DatabaseMirror database.clamav.net" > freshclam.conf # Update the local ClamAV database freshclam -v
NOTE: Run with
/usr/local/sbin/clamd -c /usr/local/etc/clamav/clamd.conf
and you will also have to override (temporarily) theconfig/clamd.conf
file with-LocalSocket /usr/local/etc/clamav/clamd.sock
-
Install pdftk
curl -o ~/Downloads/pdftk_download.pkg https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg
sudo installer -pkg ~/Downloads/pdftk_download.pkg -target /
-
continue with Base setup
-
Install Postgres and enable on startup
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - echo "deb http://apt.postgresql.org/pub/repos/apt/ focal"-pgdg main | sudo tee /etc/apt/sources.list.d/pgdg.list sudo apt update sudo apt install postgresql-11 sudo systemctl start postgresql sudo -i -u postgres createuser --superuser YOURNAME exit
-
Install PostGIS
sudo apt install -y postgresql-11-postgis-2.5 sudo -i -u postgres createuser postgis_test createdb postgis_db -O postgis_test psql -d postgis_db CREATE EXTENSION postgis; SELECT PostGIS_version(); \q
-
Install Redis
sudo apt install -y redis-server sudo sed -i 's/^supervised no/supervised systemd/' /etc/redis/redis.conf sudo systemctl restart redis.service sudo systemctl status redis # ctrl+c to exit
-
Install ImageMagick
sudo apt install -y imagemagick
-
Install Poppler
sudo apt install -y poppler-utils
-
Install ClamAV
sudo apt install -y clamav
-
Install pdftk
sudo apt install -y pdftk
-
continue with Base setup