$ git clone https://github.com/devonzuegel/myfitnesspal-ruby.git
$ brew install postgresql
$ bundle install
Create .env.development
and .env.test
files with the following contents:
SESSION_SECRET=YOUR-SESSION-SECRET
DATABASE_URL=postgres://
DATABASE_NAME=mfp_api_development
RACK_ENV=development
SESSION_SECRET=YOUR-SESSION-SECRET
DATABASE_URL=postgres://
DATABASE_NAME=mfp_api_test
RACK_ENV=test
# To create your databases:
$ ENV_FILE='.env.development' rake db:create && ENV_FILE='.env.test' rake db:create
# To setup your databases:
$ ENV_FILE='.env.development' rake db:setup && ENV_FILE='.env.test' rake db:setup
# To clean your database:
$ ENV_FILE='.env.development' rake db:clean && ENV_FILE='.env.test' rake db:clean
To start the app, execute both of these commands (in separate windows):
$ bundle exec rackup config.ru # Run app
$ bundle exec sidekiq -r ./sidekiq.rb -c N # Run Sidekiq with N workers
$ bundle exec shotgun config.ru # Run app with hot-reloader
$ rerun 'bundle exec sidekiq -r ./sidekiq.rb -c N' # Run Sidekiq with hot-reloader
Debugging/resetting Redis:
$ brew services restart redis
$ redis-cli flushdb # Clear Redis db
$ bundle exec guard
actual_calories = amount * gram_weight * quantity * calories / grams
For example, given the following Rice
food entry, the actual calories of this entry are 1 * 195 * 2.5 * 111 / 100 = 541.125
.
[
{
"type": "FoodEntry",
"data": {
"food": {
"type": "Food",
"data": {
"description": "Rice - Brown, long-grain, cooked",
"nutrients": {
"calories": 111,
// ...
},
"portions": [
{
"type": "FoodPortion",
"data": {
"amount": 1,
"gram_weight": 195,
// ...
}
},
{
"type": "FoodPortion",
"data": {
"amount": 100,
"gram_weight": 100
// ...
}
},
{
"type": "FoodPortion",
"data": {
"amount": 1,
"gram_weight": 28.34950065612793
// ...
}
}
],
// ...
"grams": 100
}
},
"weight_index": 0,
"quantity": 2.5,
// ...
}
}
]