xmisao / bestgems.org

Gem ranking and downloads trends providing service.
https://bestgems.org/
GNU Affero General Public License v3.0
99 stars 14 forks source link
ruby rubygems

BestGems.org

Ruby gems downloads ranking site.

Hosted on http://bestgems.org/.

For developers

System requirements

Examples

Libraries installation on Debian or Ubuntu

sudo apt-get install libleveldb-dev

PostgreSQL installation from Docker

docker run \
  -d \
  --name bestgems-pg \
  -p 5432:5432 \
  -e POSTGRES_USER=bestgems \
  -e POSTGRES_PASSWORD=bestgems \
  postgres:14

Get the source

Clone this repository.

git clone git@github.com:xmisao/bestgems.org.git
cd bestgems.org

Install gems

Execute bundle install.

bundle install

Configure environment variable

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

Execute migration.

bundle exec rake db:migration

Import data

Step 1. Import dummy data

Import sample data.

bundle exec rake dev:import_sample

Step 2. Import categories data

Import categories data.

bundle exec ruby tools/import_categories.rb tools/data/initial_categories.csv

Step 3. Import additional data

Start servers

Start servers. The following command starts two processes that the application server and the trend server.

bin/start
NOTE:

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 data from RubyGems.org

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

Finish!

Open http://localhost:9292/ in your browser.

Testing

Running test will destroy PostgreSQL data and LevelDB data. We recommend to prepare isolated environment by following steps.

Step 1. Configure testing 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-test # Important!
export BESTGEMS_LEVELDB_DIR=db/trends-test # Important!
export BESTGEMS_API_KEY=dummy_token

Step 2. Create testing database

PGPASSWORD=bestgems psql -U bestgems -h 127.0.0.1 -c 'CREATE DATABASE "bestgems-test";'
bundle exec rake db:migration

Step 3. Run test

bundle exec rake test

Format the source

Format the source by rufo.

bundle exec rake format