houdini/docs/GETTING_STARTED.MD

3.1 KiB

Getting Started

Dependencies


You'll need to have in your Mac the following dependencies installed, if you don't want to use the provided Docker containers.

  • Ruby 2.5.1
  • Rails 5.0.7.1
  • Node 11.12.0

Local Config


Instructions for running Development environment using macOS Catalina

Initial steps

Dependencies:

Have a ruby version installed, you can learn more about how to use multiple versions of Ruby installed in your computer with rbenv or rvm.

An instance of PostgresSQL running.

Setting up secrets:

Run cp .env.template .env to copy the provided template file for env variables to create your own.

You'll need to provide a DEVISE_SECRET_KEY and SECRET_TOKEN which you can obtain by running bundle exec rake secret.

Set the following secrets in your .env file with your Stripe account information.

  • STRIPE_API_KEY with your Stripe private key.
  • STRIPE_API_PUBLIC with your Stripe public key.

The last secrets you'll need are related to AWS. You can learn how to create an S3 Bucket within the AWS Documentation, and to obtain your access and secret key, you can learn more here.

  • S3_BUCKET_NAME
  • AWS_ACCESS_KEY
  • AWS_SECRET_ACCESS_KEY

Setting up the local database:

Run rake db:setup to run all the db tasks within one command. This will create the dbs for each environment, load the structure.sql, run pending migrations and will also run the seed functionality.


Known problems If you encounter database doesnt exist in rake db create after running both rake db:setup and rake db:create, you'll need to comment out the lines these lines at pg_type_map.rb

Qx.config(type_map: PG::BasicTypeMapForResults.new(ActiveRecord::Base.connection.raw_connection))
Qx.execute("SET TIME ZONE utc")

How to run

You'll need 2 consoles to run the project. One for the rails env and another one to run the asset pipeline through webpack , since it's not incorporated yet into the rails asset pipeline.

# Console one (1)
bundle exec rails server
# Console two (2)
npm run watch
# #### Notes ####
# If you get errors from running this command.
# You'll need to manually run the following commands.
npm run export-button-config
npm run export-i18n
npm run generate-api-js
# Now we're able to watch!
npx webpack --watch

Testing


Run bundle exec rspec to run test suite.

Formatting

We are using Standard that is a wrapper on top of Rubocop with a predefined set of Rules. If you use VS Code you will want to install vscode-ruby extension and enable formatting on save.

To enable formatting on save add these lines to your settings.json.

{
  "[ruby]": {
    "editor.formatOnSave": true
  },
  "ruby.lint": {
    "rubocop": true
  },
  "ruby.format": "rubocop",
  "editor.formatOnSaveTimeout": 5000
}