This is code repository for Validators.app.
https://www.validators.app/
- Ruby 2.7.5 (as denoted in the
.ruby-version
file) - Rails 6.1+
- MySQL 8
- Redis 6+
- Node 16.14+
- Solana CLI (see instruction below)
- Ask someone in charge about the development
master.key
- To edit credentials run
EDITOR=vim rails credentials:edit
. To open in a different editor, e.g. in atom, useEDITOR="atom --wait" rails credentials:edit
- Copy
config/cluster.yml.example
toconfig/cluster.yml
- Copy
config/database.yml.example
toconfig/database.yml
and edit to reflect the proper database name, user name and other settings. - Developers using Mac OS will need to
brew install shared-mime-info
beforebundle install
- Copy
config/sidekiq.yml.example
toconfig/sidekiq.yml
. This repo is configured for the free version of Sidekiq. Review the Gemfile and config/routes.rb files if you are using Sidekiq Pro.
- Make sure you have
database.yml
with correct settings. - run
rake db:setup
to create and migrate the database from schema (db/schema.rb). - run
rake db:seed
for basic data generation. - Then follow instructions in
database_instructions
on Keybase.
To enable copying records to staging database set copy_records_to_stage in credentials file to true.
https://docs.solana.com/cli/install-solana-cli-tools
wget https://raw.githubusercontent.com/anza-xyz/agave/v<version>/install/agave-install-init.sh
bash agave-install-init.sh v2.0.15
solana --version
solana -V
or solana --version
Attribute encryption on models is required for any attribute that contains personal information or other sensitive data. The default solution is the attr_encrypted gem. A more secure alternative is Vault.
Vault is an optional component to this project. We mostly are using its Encryption As A Service feature. This
functionality is wrapped by the vault-rails gem.
In the test and development modes you do not need an actual Vault server running. The gem will intercept and perform
all encryption that would normally by done by the Vault encryption server.
To use Vault, search the project for 'vault' and read the comments.
Visit https://developers.google.com/recaptcha/intro to see how to use reCAPTCHA. You'll need to register your
website at https://www.google.com/recaptcha/admin/, choose captcha type, and you'll get site_key and secret_key.
Put them in the credentials.
For development, you will find sample keys in config/credentials.yml.enc.
How to run the test suite:
- To run all tests:
rails test
- To run all tests from specific directory:
rails test test/models
- To run all tests from specific file:
rails test test/models/article_test.rb
- To run specific test and line:
rails test test/models/article_test.rb:6
If you see errors related to yarn while running tests locally, try rake assets:clobber
and yarn install
.
We use Github Actions. See .github directory for more details.
The test credentials are kept in config/credentials/test.yml.enc.
We have encrypted test.key to decrypt these credentials.
To decrypt the file: gpg --output config/credentials/test.key --decrypt config/credentials/test_key.gpg
.
To encrypt the file: gpg -c --output config/credentials/test_key.gpg config/credentials/test.key
.
To decrypt and encrypt the file you need a passphrase, please ask your team leader about it.
Deployments are handled by Capistrano. Follow the instructions for Capistrano.
- To deploy run:
cap production deploy
. - To rollback to the previous version:
cap production deploy:rollback ROLLBACK_RELEASE=2022XXXXXXXX
- To restart application:
cap production deploy:restart
- See instructions on Keybase.
- ValidatorsApp https://github.com/brianlong/www.validators.app
- BlockLogic https://github.com/firstmoversadvantage/www_blocklogic_net
- Validators ruby client https://github.com/Block-Logic/validators-app-ruby
- Solana RPC ruby gem https://github.com/Block-Logic/solana-rpc-ruby
- Solscan API ruby gem https://github.com/Block-Logic/solscan-api-ruby
- Ping Thing client https://github.com/Block-Logic/ping-thing-client