2.9 KiB
Setting up a dev environment
Assumptions
You have a package manager, and your system is systemd-based.
Prerequisites
Nodejs
Install nodejs via your package manager. We used v19.1.0 for this setup.
Ruby
Install ruby via your package manager of choice.
Ruby Extras
Your distro may package bundle
and irb
in separate packages (Arch does). If they are, install them too.
On Arch these are ruby-bundler
and ruby-irb
.
PostGreSQL
Install postgres via your package manager.
Redis
Install redis via your package manager.
Enable and start the default redis.service
Setting up the Environment
In the following instructions, replace USER with your *nix user name.
- Add yourself to the postgres group with
sudo usermod -a -G postgres USER
. You'll need to log out and back in to update your groups. - Run
sudo mkdir /run/postgresql
to create said folder if it doesn't exist. - Run
sudo chown postgres:postgres /run/postgresql
to change the owner to postgres. - Run
sudo chmod g+w /run/postgresql
to allowpostgres
group members to write to the folder. - Navigate to the root of this repo.
- Set up a local DB cluster with
pg_ctl -D data/postgres15 initdb -o '-U mastodon --auth-host=trust'
. - Run it with
pg_ctl -D data/postgres15 start
. - Run
bundle config set --local path 'vendor/bundle
. This will store the all the ruby gems locally so that we can avoid interfering with system config. - Run
bundle install
. - Run
yarn install
. - Run
export $(grep -v '^#' .env.dev | xargs)
to source in our dev vars. You may want to alias this. - Run
bundle exec rake db:setup
. If this fails, you can usebundle exec rake db:reset
to forcibly regenerate it.
Running Mastodon
- To make our lives easier, we'll use
foreman
to run the site, so usegem install foreman
. - Run
export RAILS_ENV=development
andexport NODE_ENV=development
. a. Put these in your shell's .rc, or a script you can source if you want to skip this step in the future. - Run
bundle exec rake assets:precompile
. a. If this explodes, complaining aboutHash
, you'll need toexport NODE_OPTIONS=--openssl-legacy-provider
. Same deal as the above. b. After doing this, you will need tobundle exec rake assets:clobber
and then re-runbundle exec rake assets:precompile
. - Run
foreman start
Updates/Troubleshooting
RubyVM/DebugInspector Issues
Still unable to fix. Circumvent by removing better_errors
and binding_of_caller
from Gemfile.
Happy to troubleshoot with someone better with Ruby than us >_<'/.
Webpack Issues
If Webpack compalins about being unable to find some assets or locales:
- yarn add webpack
- git restore package.json yarn.lock
- yarn install
Then re-run foreman
. No. We have no idea why this worked.
If the above instructions don't work, please contact @Rin here, or @tammy@social.treehouse.systems.