Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
 
 
db
 
 
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

BestGems.org

Ruby gems downloads ranking site.

Hosted on http://bestgems.org/.

For developers

System requirements

  • UNIX like operating system. (Debian or Ubuntu are recommended)
  • Ruby 2.4+
  • Middleware
    • PostgreSQL 9.6
  • Libraries
    • libleveldb-dev
  • Docker (Recommended)

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:9.6-alpine

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 --path vendor/bundle

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

Build status

Build Status

You can’t perform that action at this time.