Skip to content

001elijah/rails-e-commerce-store

Repository files navigation

README

This README would normally document whatever steps are necessary to get the application up and running.

Things you may want to cover:

  • Ruby version 3.2.2

  • System dependencies

  • Configuration

  • Database creation This project uses Postgres. To start it on localhost:5432 use Postgresapp

There are some commands applied to postgres:

psql or psql -h 127.0.0.1 -U [username] [dbname] — run postgreSQL.

Ex: psql -h 127.0.0.1 -U mysite mysite_development

\l or \l+ — list of databases

\c dbname — choose your database

\du - list of users

\q — quit from psql

\dt or \dt+ - list of tables

CREATE ROLE [username] LOGIN; or CREATE USER [username]; — create new db user

DROP ROLE [username]; — remove db user

ALTER USER [username] WITH PASSWORD ['password']; — edit user password

ALTER USER [username] WITH SUPERUSER; — give a user superuser status

ALTER USER [username] WITH NOSUPERUSER; — take away superuser from a user

ALTER USER [username] WITH LOGIN; — allow a user to login

ALTER USER [username] CREATEDB; — allow a user to create a db

CREATE DATABASE [dbname]; — create DB with 'mysite_development' db name

ALTER DATABASE [dbname] OWNER TO [username]; — change db owner

GRANT ALL PRIVILEGES ON DATABASE [dbname] TO [username]; — grant all privileges

GRANT ALL ON [dbname] TO [username]; — grant all

CREATE TABLE users (id INT, first_name VARCHAR(50), last_name VARCHAR(50), email VARCHAR(50), password text, role text); — create user table within dbname

CREATE TABLE items (id INT, name VARCHAR(50), description VARCHAR(200), price DECIMAL(10,2)); — -||- items

INSERT INTO items (id, name, description, price) VALUES (1, 'some item', 'some good item', 10.99); - add data to items

CREATE TABLE orders (user_id INT, amount INT); — -||- orders

CREATE TABLE orders_description (order_id INT, item_id INT, quantity INT); - -||- orders_description

\d [tablename] — describe a table;

SELECT * FROM [tablename]; — select table (and show it)

  • Database initialization

Set up your DB for default/test/development/prooduction in config/database.yml. The file is configured to run DB both locally and on Render.

  • How to run the test suite

  • Services (job queues, cache servers, search engines, etc.)

  • Deployment instructions

Clone the repo git clone https://github.com/001elijah/rails-e-commerce-store.git

Install gems: bundle install or bundle

Setup database:

nano config/database.yml — configure database.yml

echo 'export MYSITE_DATABASE_PASSWORD="your_password"' ..~/.bashrc — create variable with user db password

source ~/.bashrc

rake db:create or rails db:create — create db

bin/rails server or rails server or rails s — to start the rails server

rails c - open rails console and do stuff like @user = User.first; @user.role = 'admin'; @user.save; @user

if you've messed up your database, you may need rake db:reset command to drop your db and create again

If you is being accessed by other users error, you'll need to logout from database by running SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'dbname'; as admin and superuser

if you need to add a column to existing db, i.e first_name to users table: rails generate migration add_first_name_to_users first_name:string, then rake db:migrate

  • ...

rails g scaffold Item name or rails g scaffold Item name:text description:text price:decimal{8,2} - to generate Item name creation template

if controller exists run cp app/controllers/items_controller.rb app/controllers/items_controller_backup.rb

and rails d scaffold Item to delete, and rails g scaffold Item name to generate the scaffold again

rails generate migration add_description_to_items description:text add description column to items table

rails generate migration add_price_to_items price:decimal{8,2} add price column to items table

  • ...

to create a cart I've used the video as reference