Hal Gatewood on Unsplash

Basic Setup Link to heading

Create new rails app (note: the nokogiri line is usually needed on MacOS to properly build the dependency)

gem install nokogiri -- --use-system-libraries --with-xml2-include="$(xcrun --show-sdk-path)/usr/include/libxml2"
rails new . --database=postgresql
rails db:create

Launch server (check it’s running by going to http://localhost:3000)

rails s

Add some gems to Gemfile

# User management
gem 'devise'
# Bootstrap
gem 'bootstrap', '~> 4.0.0'
# Font Awesome Icons
gem "font-awesome-rails"
 
# In 'group :development do' add
gem 'rails-erd'

Install gem dependencies

bundle install

Bootstrap support

vim app/assets/stylesheets/application.css
   @import "bootstrap";
   @import "font-awesome";

Rename app/assets/stylesheets/application.css to app/assets/stylesheets/application.scss and remove require lines

Static Page Support Link to heading

Static pages

rails generate controller pages --skip-assets

Add show method to the static pages controller at app/controllers/pages_controller.rb

def show
    render template: "pages/#{params[:page]}"
end

Edit config/routes.rb to manage static page routing and set root path

get "/:page" => "pages#show"

root "pages#about"

Create app/view/pages/about.html.erb, this will be used as the new index page

Add a User Controller Link to heading

Install devise things

rails g devise:install

Setup mail configuration for development environment in config/environments/development.rb

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

Modify flash notification styles in app/view/layouts/application.html.erb (in the <body> of the page)

<% flash.each  do |name, msg| %>
<%= content_tag(:div, msg, class: "alert alert-info text-center") %>
<% end  %>

Create user manager and views

rails g devise User
rails g devise:views
rails db:migrate

Additional user fields (this is optional but an example of adding attributes)

rails generate migration add_fields_to_users display_name:text website:text bio:text
rails db:migrate

Hope this helps you, Dan.