roqua/physiqual

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Physiqual
Ruby Engine for merging multiple data sources with diary questionnaire data

[![Coverage Status](https://coveralls.io/repos/github/roqua/physiqual/badge.svg?branch=master&service=github)](https://coveralls.io/github/roqua/physiqual?branch=master)
[![Dependency Status](https://gemnasium.com/roqua/physiqual.svg)](https://gemnasium.com/roqua/physiqual)
[![Circle CI](https://circleci.com/gh/roqua/physiqual/tree/master.svg?style=svg)](https://circleci.com/gh/roqua/physiqual/tree/master)

## Installation
Add Physiqual to your Gemfile. Currently Physiqual is not yet on RubyGems, this will happen after Physiqual is in a more stable beta state.

```ruby
  gem 'physiqual', github: 'roqua/physiqual'
```

Install the dependencies by running:
```ruby
  bundle
```

Initialize the database
``` ruby
  bundle exec rake db:setup
```

Mount the engine in the `config/routes.rb` file (in the `Rails.application.routes.draw` block)
``` ruby
  mount Physiqual::Engine => '/physiqual'
```

## Configuration
First create your an application on Google and Fitbit with the correct access levels and copy the key and ID from those services. Create initializer in `config/initializers/physiqual.rb` and add the configuration as follows, using the ID and secret retrieved from the services:

```ruby
Physiqual.configure do |config|
  # Google API tokens
  config.google_client_id     = ENV['GOOGLE_CLIENT_ID']
  config.google_client_secret = ENV['GOOGLE_CLIENT_SECRET']

  # Fitbit oauth tokens
  config.fitbit_client_id     = ENV['FITBIT_CLIENT_ID']
  config.fitbit_client_secret = ENV['FITBIT_CLIENT_SECRET']

  # Host settings
  config.host_url             = ENV['HOST_URL'] || 'physiqual.dev'
  config.host_protocol        = ENV['HOST_PROTOCOL'] || 'http'

  # EMA Settings
  config.measurements_per_day           = 3 # Number of measurements per day, from the end of day downwards
  config.interval                       = 6 # Number of hours between measurements
  config.hours_before_first_measurement = 6 # How many hours before the first measurement each day should be included

  # Imputation
  # List of imputers to use, prefix with Physiqual::Imputers::, choose from:
  # - CatMullImputer
  # - KNearestNeighborImputer
  # - LastObservationCarriedForwardImputer
  # - MeanImputer
  # - SplineImputer
  # - MockImputer (doesn't actually impute).
  config.imputers             = [Physiqual::Imputers::CatMullImputer]
end
```

Now you should be able to start your server.

## Dummy
If you would like to run the dummy application, make a full checkout of Physiqual
```bash
  git clone git@github.com:roqua/physiqual.git --shallow
  bundle install
  bundle exec rake db:setup
```

And `cd` to `spec/dummy`. From this directory you can either run `bundle exec rails s` or create an apache v-host on passenger to run the server, for example:

```bash
  cd /etc/apache2/other
  touch physiqual.dev.vhost.conf
```

And add to this file a virtualhost configuration, for example:

```bash
<VirtualHost *:80>
  ServerName physiqual.dev
  ServerAdmin info@physiqual.dev
  DocumentRoot "<YOUR DIRECTORY>/physiqual/spec/dummy/public"
  RailsEnv development
  PassengerRuby /Users/frbl/.rvm/gems/ruby-2.2.1/wrappers/ruby
  <Directory "<YOUR DIRECTORY>/physiqual/spec/dummy/public">
    Options FollowSymLinks Multiviews
    MultiviewsMatch Any
    AllowOverride None
    Require all granted
  </Directory>
</VirtualHost>
```

you should now be able to surf to, for example: `http://physiqual.dev/oauth_session/google/authorize?email=a`

## Troubleshooting

You might run into some issues with regards to SSL warnings and errors. In that case, add the curl ca certificates to the environment variables, e.g., in osx:
```bash
  SSL_CERT_FILE=/usr/lib/ssl/certs/ca-certificates.crt
```

If your system has no SSL_CERT_FILE, you can get one from http://curl.haxx.se/ca/cacert.pem