Blog

server.rb for Testing Sinatra Ruby Framework CRUD Operations with RSpec and Capybara Gems
Posted on August 10, 2015 in Ruby, Sinatra by Matt Jennings

See this post for a full describe of files used in a Sinatra Ruby framework for CRUD (Create Read Update Delete) operations with RSpec and Capybara testing.

/server.rb

require "sinatra"
require "active_record"
require "sqlite3"

ENV["SINATRA_ENV"] ||= "development"

ActiveRecord::Base.establish_connection(
  :adapter => "sqlite3",
  :database => "db/#{ENV['SINATRA_ENV']}.sqlite3"
)

class Project < ActiveRecord::Base
end

get "/" do
  "Welcome to my portfolio"
end

get "/projects" do
  # Get all projects
  @projects = Project.all
  erb :"projects/index"
end

get "/projects/new" do
  erb :"projects/new"
end

# Add a new project using the "Add New Project" form
post "/projects" do
  # Get the text inside the INPUT, TEXTAREA tags
  # using the "params" hash
  Project.create(name: params[:name], description: params[:description])
  redirect "/projects"
end

# Show a single project
get "/projects/:id" do
  @project = Project.find(params[:id])
  erb :"projects/show"
end

# Show a single project to edit
get "/projects/:id/edit" do
  @project = Project.find(params[:id])
  erb :"projects/edit"
end

# Use "patch" to update a single project
patch "/projects/:id" do
  project = Project.find(params[:id])
  project.update(name: params[:name], description: params[:description])
  redirect "/projects"
end

# User "delete" to delete a single project
delete "/projects/:id" do
  project = Project.find(params[:id])
  project.destroy
  redirect "/projects"
end

Leave a Reply

To Top ↑