Ruby gems downloads ranking site.
Hosted on http://bestgems.org/.
sudo apt-get install libleveldb-dev
docker run \
-d \
--name bestgems-pg \
-p 5432:5432 \
-e POSTGRES_USER=bestgems \
-e POSTGRES_PASSWORD=bestgems \
postgres:14
Clone this repository.
git clone git@github.com:xmisao/bestgems.org.git
cd bestgems.org
Execute bundle install.
bundle install
Export environment variables.
export RACK_ENV=production
export APP_ENV=production
export BESTGEMS_DB_HOST=127.0.0.1
export BESTGEMS_DB_USER=bestgems
export BESTGEMS_DB_PASSWORD=bestgems
export BESTGEMS_DB_NAME=bestgems
export BESTGEMS_LEVELDB_DIR=db/trends
export BESTGEMS_API_KEY=dummy_token
Execute migration.
bundle exec rake db:migration
Import sample data.
bundle exec rake dev:import_sample
Import categories data.
bundle exec ruby tools/import_categories.rb tools/data/initial_categories.csv
Start servers. The following command starts two processes that the application server and the trend server.
bin/start
The application server is BestGems.org main process which is implemented using Sinatra. Trend server is BestGems.org subprocess which is LevelDB wrapper using dRuby. BestGems.org requires those processes are running correctly.
Import additional data from RubyGems.org. Execute the following on another console.
bundle exec ruby tools/import_gem_detail.rb http://127.0.0.1:9292/api dummy_token
Open http://localhost:9292/
in your browser.
Running test will destroy PostgreSQL data and LevelDB data. We recommend to prepare isolated environment by following steps.
export RACK_ENV=production
export APP_ENV=production
export BESTGEMS_DB_HOST=127.0.0.1
export BESTGEMS_DB_USER=bestgems
export BESTGEMS_DB_PASSWORD=bestgems
export BESTGEMS_DB_NAME=bestgems-test # Important!
export BESTGEMS_LEVELDB_DIR=db/trends-test # Important!
export BESTGEMS_API_KEY=dummy_token
PGPASSWORD=bestgems psql -U bestgems -h 127.0.0.1 -c 'CREATE DATABASE "bestgems-test";'
bundle exec rake db:migration
bundle exec rake test
Format the source by rufo.
bundle exec rake format