This project requires Ruby 2.7.2.
- Fork this repository
- From the command line, install gems and set up your DB:
bundle install && bundle update
rails db:{create,migrate}
- Run the test suite with
bundle exec rspec -fd
- Run your development server with
rails s to see the app in action.
-
Ruby version
$ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin20]
-
System dependencies
-
Database creation
$ rails db:{drop,create,migrate,seed}
Created database 'frontend_development'
Created database 'frontend_test'
-
OAuth setup
#Gemfile
gem 'omniauth-google-oauth2'
gem 'omniauth-rails_csrf_protection'
-
Google API setup
Visit https://console.developers.google.com
- Select your project
- From the Credentials section:
- Select the "OAuth consent screen" tab on top, and provide an 'EMAIL ADDRESS' and a 'PRODUCT NAME'
- Wait 10 minutes for changes to take effect.
-
API key configuration
$ bundle exec figaro install
Add your credentials & API keys to config/application.yml:
#Frontend Repo:
GOOGLE_CLIENT_ID: <your client id>
GOOGLE_CLIENT_SECRET: <your client secret>
#Backend Repo:
yelp_api_key: 'Bearer <your v3 token>'
-
How to run the test suite
-
Local Deployment, for testing
$ rails s
=> Booting Puma
=> Rails 5.2.6 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.6 (ruby 2.7.2-p137)
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
-
Heroku Deployment, for production
⭐ Consume two or more external APIs which require authentication
⭐ Build APIs that return JSON responses
⭐ Use an external OAuth provider to authenticate users
⭐ Create a project with a separate frontend and backend
⭐ Organize and refactor code to be more maintainable
⭐ Implement a self-referential relationship in ActiveRecord
⭐ Use Rails to create web pages that allow users to CRUD resources
⭐ Create instance and class methods on a Rails model that use ActiveRecord methods and helpers
⭐ Write model and feature tests that fully cover data logic and potential user behavior
⭐ Utilize Continuous Integration via Travis CI or CircleCI
⭐ Deploy to Heroku
⭐ Implement a production-quality user interface using Bootstrap or other common CSS styling framework
⭐ Implement project management by using project boards, participating in daily stand-ups and retros
⭐ Utilize quality workflow practices: small commits, descriptive pull requests, and code reviews
⭐ Write thorough, understandable documentation
⭐ Apply RuboCop’s style guide for code quality