Setting up a development environment (WSL Ubuntu)
This page covers local development setup on Windows using WSL Ubuntu. For production deployment instructions, see Deploy the application.
Install WSL / Ubuntu
Use the current Microsoft WSL instructions: https://learn.microsoft.com/en-us/windows/wsl/install
In short:
- Install WSL (from an elevated PowerShell):
wsl --install
- Launch Ubuntu after reboot.
- Create your UNIX username and password.
Install base apt dependencies
Update package lists, then install the dependencies used by the current local setup:
sudo apt update
sudo apt install -y \
build-essential git curl unzip pkg-config \
rustc libssl-dev libyaml-dev zlib1g-dev libgmp-dev \
default-libmysqlclient-dev libpq-dev postgresql-client \
libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev \
imagemagick libvips shared-mime-info \
openjdk-17-jre-headless
Install mise
Install and activate mise for Bash:
curl https://mise.run | sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(mise activate bash)"' >> ~/.bashrc
source ~/.bashrc
Verify installation:
mise --version
mise doctor
Runtime setup model
mise is the preferred runtime manager for local development.
- Global Ruby can be installed with
miseif you want a default outside projects. - GeoDiscovery uses project-local runtime versions declared in
mise.toml. - Current project runtime targets are:
ruby = "3.2.1"node = "20"
The repository also includes .ruby-version and Ruby pinning in Gemfile for compatibility, but mise.toml is the preferred multi-runtime local-dev setup.
Clone the repository
git clone git@github.com:UWM-Libraries/GeoDiscovery.git
cd GeoDiscovery
mise install
Configure env files
Copy the local env files:
cp .example.env.test .env.test
cp .example.env.development .env.development
Local development expects:
- Solr on port
8983 - Rails on port
3000 - A Redis URL may be present in
.env.development, but local bootstrap is focused on Solr + Rails unless your feature specifically needs Redis
Install app dependencies
bundle install
corepack enable
yarn install
Notes:
package.jsonpins Yarn via thepackageManagerfield, so use Corepack-managed Yarn instead of globally installed Yarn.- Node
20is intentional for this project; the frontend dependency tree requires newer Node than18.
Database setup (SQLite for local dev/test)
bundle exec rake db:create
bundle exec rake db:migrate
Start the app
bundle exec rake uwm:server
This task starts the local app stack plus the local Solr wrapper. Java must be installed or Solr startup will fail.
Run tests
Run tests explicitly in the test environment so commands do not run against development data:
RAILS_ENV=test bundle exec rake test
RAILS_ENV=test bundle exec rails test:system
Browser requirement for system tests
GeoDiscovery system tests use Capybara with a Chrome-family browser. Local system-test execution requires Chrome or Chromium installed and discoverable on PATH. Package names can vary by Ubuntu release.
which google-chrome || which chromium || which chromium-browser