Skip to content

Ruby on Rails blog application with blogs and nested comments, supporting CRUD operations, publish/unpublish status, validations, and RESTful routes with JSON support.

Notifications You must be signed in to change notification settings

hlukare/ROR-Blogs-App

Repository files navigation

Blog App

A Ruby on Rails blog application with blogs and comments functionality.

Getting Started

This application demonstrates CRUD operations for blogs, nested comments, published/unpublished status, validations, and RESTful routing.

Setup Instructions (For New PC)

  1. Extract the zip file
unzip blog_app_assignment.zip
cd blog_app
  1. Install Ruby dependencies
bundle install
  1. Create master key (if missing)
# Create a new master key or use dummy credentials
EDITOR="echo 'secret_key_base: $(rails secret)' >" rails credentials:edit
# Or simply create an empty master.key
echo "$(openssl rand -hex 32)" > config/master.key
  1. Setup database
rails db:create
rails db:migrate
rails db:seed
  1. Start the server
rails server
  1. Visit the application
http://localhost:3000

Prerequisites

  • Ruby 4.0.1 or higher
  • Rails 8.1.2 or higher
  • SQLite3
  • Bundler

Installation

  1. Install dependencies:
bundle install
  1. Setup database:
rails db:create
rails db:migrate
rails db:seed
  1. Start the server:
rails server
    1. Visit http://localhost:3000/blogs

Available Scripts

Database Commands

rails db:create
rails db:migrate
rails db:seed
rails db:reset
rails db:rollback

Server Commands

rails server
rails s
rails s -p 3001

Console

rails console
rails c

Routes

rails routes
rails routes | grep blogs

Generators

rails generate model ModelName field:type
rails generate controller ControllerName
rails generate scaffold ModelName field:type
rails generate migration MigrationName

Additional Commands

Testing in Console

rails console

Example queries:

Blog.published

blog = Blog.new(title: "Test", body: "Test content")
blog.valid?

blog = Blog.published.first
blog.comments.create(author: "John", content: "Great post!")

Blog.where(published: true)
Blog.find_by(title: "Published Blog 1")
Blog.limit(5)
Blog.order(created_at: :desc)

Features

  • CRUD operations for blogs
  • Nested comments under blogs
  • Published/Unpublished status with scopes
  • Validations (blogs and comments)
  • RESTful routing
  • API endpoints (JSON support)
  • Seed data (20 blogs, comments)

Models & Database

Blog

  • title (string) - required, 3-200 characters
  • body (text) - required, minimum 10 characters
  • published (boolean) - default: false
  • Has many comments

Comment

  • content (text) - required, minimum 5 characters
  • author (string) - required
  • Belongs to blog
  • Can only be added to published blogs

Routes

GET    /blogs
POST   /blogs
GET    /blogs/:id
PATCH  /blogs/:id
DELETE /blogs/:id
PATCH  /blogs/:id/publish
GET    /blogs/:blog_id/comments
POST   /blogs/:blog_id/comments
DELETE /blogs/:blog_id/comments/:id

Project Structure

app/
├── controllers/
│   ├── blogs_controller.rb
│   └── comments_controller.rb
├── models/
│   ├── blog.rb
│   └── comment.rb
└── views/
    └── blogs/
config/
└── routes.rb
db/
├── migrate/
└── seeds.rb

About

Ruby on Rails blog application with blogs and nested comments, supporting CRUD operations, publish/unpublish status, validations, and RESTful routes with JSON support.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published