* Ruby 2.7+
* PostgreSQL 9.1+
-* ImageMagick
* Bundler (see note below about [developer Ruby setup](#rbenv))
* Javascript Runtime
```
sudo apt-get update
sudo apt-get install ruby2.7 libruby2.7 ruby2.7-dev \
- libmagickwand-dev libxml2-dev libxslt1-dev nodejs \
+ libvips-dev libxml2-dev libxslt1-dev nodejs \
apache2 apache2-dev build-essential git-core firefox-geckodriver \
postgresql postgresql-contrib libpq-dev libsasl2-dev \
- imagemagick libffi-dev libgd-dev libarchive-dev libbz2-dev yarnpkg
+ libffi-dev libgd-dev libarchive-dev libbz2-dev yarnpkg
sudo gem2.7 install bundler
```
```
sudo dnf install ruby ruby-devel rubygem-rdoc rubygem-bundler rubygems \
- libxml2-devel js \
+ libxml2-devel nodejs \
gcc gcc-c++ git \
postgresql postgresql-server postgresql-contrib libpq-devel \
- perl-podlators ImageMagick libffi-devel gd-devel libarchive-devel \
- bzip2-devel nodejs-yarn
+ perl-podlators libffi-devel gd-devel libarchive-devel \
+ bzip2-devel nodejs-yarn vips-devel
```
If you didn't already have PostgreSQL installed then create a PostgreSQL instance and start the server:
* Install Homebrew from https://brew.sh/
* Install the latest version of Ruby: `brew install ruby`
-* Install other dependencies: `brew install imagemagick libxml2 gd yarn pngcrush optipng pngquant jhead jpegoptim gifsicle svgo`
+* Install other dependencies: `brew install libxml2 gd yarn pngcrush optipng pngquant jhead jpegoptim gifsicle svgo advancecomp vips`
* Install Bundler: `gem install bundler` (you might need to `sudo gem install bundler` if you get an error about permissions - or see note below about [developer Ruby setup](#rbenv))
You will need to tell `bundler` that `libxml2` is installed in a Homebrew location. If it uses the system-installed one then you will get errors installing the `libxml-ruby` gem later on<a name="macosx-bundle-config"></a>.
If you want to run the tests, you need `geckodriver` as well:
```
-brew tap homebrew/cask
-brew cask install geckodriver
+brew install geckodriver
```
Note that OS X does not have a /home directory by default, so if you are using the GPX functions, you will need to change the directories specified in config/application.yml.
```
psql -d openstreetmap -c "CREATE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '`pwd`/db/functions/libpgosm', 'tile_for_point' LANGUAGE C STRICT"
-psql -d openstreetmap -c "CREATE FUNCTION xid_to_int4(xid) RETURNS int4 AS '`pwd`/db/functions/libpgosm', 'xid_to_int4' LANGUAGE C STRICT"
```
# Ruby development install and versions<a name="rbenv"></a> (optional)