Contributing
Feel free to open tickets or send pull requests with improvements. Thanks in advance for your help!
Please follow the contribution guidelines.
Requirements
OSX or Linux
PostgreSQL >= 10.0, Ruby >= 2.6, NodeJS >= 10.0, Elasticsearch 6.x (7.0 not supported), Memcached, Redis
Issues Board (Agile Season)
https://agileseason.com/#/shared/board/098d2e36dff32f296d7815cf943ac8eb
Requirements
Checkout all projects
git clone git@github.com:shikimori/shikimori.git
git clone git@github.com:shikimori/neko-achievements.git
cd neko-achievements
mix local.hex --force
mix deps.get
cd ..
git clone git@github.com:shikimori/camo-server.git
cd camo-server
yarn
cd ..
git clone git@github.com:shikimori/faye-server.git
cd faye-server
yarn
cd ..
cd shikimori
yarn
, tmux
and overmind
via Homebrew (OSX)
Install brew install yarn tmux overmind
In linux you have to install them another way.
Install dependent gems and npm packages
yarn install
bundle install
PostgreSQL
DB
psql -d postgres
create user shikimori_development;
create user shikimori_test;
alter user shikimori_development createdb;
alter user shikimori_test createdb;
alter user shikimori_development with superuser;
alter user shikimori_test with superuser;
Create databases
Make sure en_US.UTF-8
database collation is set https://gist.github.com/ffmike/877447#gistcomment-2851598
Or you manually initialize new database with command
initdb --pgdata=/usr/local/var/postgres-14 -E 'UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'
Or initdb for apple M1
initdb --pgdata=/opt/homebrew/var/postgresql@14 -E 'UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'
Create rails databases
rails db:create
Extensions
psql -d shikimori_test_
CREATE EXTENSION unaccent;
CREATE EXTENSION hstore;
CREATE EXTENSION pg_stat_statements;
psql -d shikimori_development
CREATE EXTENSION unaccent;
CREATE EXTENSION hstore;
CREATE EXTENSION pg_stat_statements;
Local Run
Everything you need to run is listed in Procfile.
Shikimori uses Overmind to execute Procfile
.
Restore from a backup
rails db:drop && rails db:create
unzip -d db/ db/dump.sql.zip
psql -U shikimori_development -d shikimori_development -f db/dump.sql
rm db/dump.sql
RAILS_ENV=test rails db:schema:load
# migrate dump to latest schema
rails db:migrate
Start rails server
rails server
Start related services
overmind start
Start some of related services
OVERMIND_PROCESSES=camo,faye overmind start
Elasticsearch
In rails console:
Elasticsearch::RebuildIndexes.new.perform
Elasticsearch fix on OSX
Homebrew/homebrew-core#100260 (comment)
I've finally made it work, but I'm not sure this is the right call:
I've edited the service plist at /usr/local/Cellar/elasticsearch@6/6.8.23/homebrew.mxcl.elasticsearch@6.plist:
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/elasticsearch@6/bin/elasticsearch</string>
</array>
<key>EnvironmentVariables</key>
<dict>
+ <key>JAVA_HOME</key>
+ <string>'/usr/libexec/java_home -v 17'</string>
</dict>
I had to edit the plist in the Cellar folder instead of the one in ~/Library/LaunchAgents because brew services is overwriting it at every start.
Update neko rules
rails neko:update
Other
Make a backup
pg_dump -c shikimori_development > db/dump.sql
Autorun rspec & rubocop
guard
Record apipie docs
APIPIE_RECORD=all rspec spec/controllers/api/**
Add new video hosting
# app/services/video_extractor/player_url_extractor.rb
Run locally in production mode
RAILS_ENV=production rails assets:precompile && IS_LOCAL_RUN=true RAILS_ENV=production rails server
Webpack debugger
https://nodejs.org/en/docs/inspector/ Install the Chrome Extension NIM (Node Inspector Manager): https://chrome.google.com/webstore/detail/nim-node-inspector-manage/gnhhdgbaldcilmgcpfddgdbkhjohddkj
RAILS_ENV=development NODE_ENV=development NODE_PATH=node_modules node --inspect-brk node_modules/.bin/webpack-dev-server --progress --color --config config/webpack/development.js
Webpack visualizer
https://chrisbateman.github.io/webpack-visualizer/
Dependabot
@dependabot ignore this dependency