@ -0,0 +1 @@ | |||
defaults |
@ -0,0 +1,31 @@ | |||
# See https://help.github.com/articles/ignoring-files for more about ignoring files. | |||
# | |||
# If you find yourself ignoring temporary files generated by your text editor | |||
# or operating system, you probably want to add a global ignore instead: | |||
# git config --global core.excludesfile '~/.gitignore_global' | |||
# Ignore bundler config. | |||
/.bundle | |||
# Ignore all logfiles and tempfiles. | |||
/log/* | |||
/tmp/* | |||
!/log/.keep | |||
!/tmp/.keep | |||
# Ignore uploaded files in development. | |||
/storage/* | |||
!/storage/.keep | |||
/public/assets | |||
.byebug_history | |||
# Ignore master key for decrypting credentials and more. | |||
/config/master.key | |||
/public/packs | |||
/public/packs-test | |||
/node_modules | |||
/yarn-error.log | |||
yarn-debug.log* | |||
.yarn-integrity |
@ -0,0 +1 @@ | |||
ruby-2.6.4 |
@ -0,0 +1,55 @@ | |||
source 'https://rubygems.org' | |||
git_source(:github) { |repo| "https://github.com/#{repo}.git" } | |||
ruby '2.6.4' | |||
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' | |||
gem 'rails', '~> 6.0.0' | |||
# Use postgresql as the database for Active Record | |||
gem 'pg', '>= 0.18', '< 2.0' | |||
# Use Puma as the app server | |||
gem 'puma', '~> 3.11' | |||
# Use SCSS for stylesheets | |||
gem 'sass-rails', '~> 5' | |||
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker | |||
gem 'webpacker', '~> 4.0' | |||
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks | |||
gem 'turbolinks', '~> 5' | |||
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder | |||
gem 'jbuilder', '~> 2.7' | |||
# Use Redis adapter to run Action Cable in production | |||
# gem 'redis', '~> 4.0' | |||
# Use Active Model has_secure_password | |||
gem 'bcrypt', '~> 3.1.7' | |||
# Use Active Storage variant | |||
# gem 'image_processing', '~> 1.2' | |||
# Reduces boot times through caching; required in config/boot.rb | |||
gem 'bootsnap', '>= 1.4.2', require: false | |||
group :development, :test do | |||
# Call 'byebug' anywhere in the code to stop execution and get a debugger console | |||
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] | |||
end | |||
group :development do | |||
# Access an interactive console on exception pages or by calling 'console' anywhere in the code. | |||
gem 'web-console', '>= 3.3.0' | |||
gem 'listen', '>= 3.0.5', '< 3.2' | |||
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring | |||
gem 'spring' | |||
gem 'spring-watcher-listen', '~> 2.0.0' | |||
end | |||
group :test do | |||
# Adds support for Capybara system testing and selenium driver | |||
gem 'capybara', '>= 2.15' | |||
gem 'selenium-webdriver' | |||
# Easy installation and use of web drivers to run system tests with browsers | |||
gem 'webdrivers' | |||
end | |||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem | |||
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] | |||
gem 'irb' |
@ -0,0 +1,230 @@ | |||
GEM | |||
remote: https://rubygems.org/ | |||
specs: | |||
actioncable (6.0.0) | |||
actionpack (= 6.0.0) | |||
nio4r (~> 2.0) | |||
websocket-driver (>= 0.6.1) | |||
actionmailbox (6.0.0) | |||
actionpack (= 6.0.0) | |||
activejob (= 6.0.0) | |||
activerecord (= 6.0.0) | |||
activestorage (= 6.0.0) | |||
activesupport (= 6.0.0) | |||
mail (>= 2.7.1) | |||
actionmailer (6.0.0) | |||
actionpack (= 6.0.0) | |||
actionview (= 6.0.0) | |||
activejob (= 6.0.0) | |||
mail (~> 2.5, >= 2.5.4) | |||
rails-dom-testing (~> 2.0) | |||
actionpack (6.0.0) | |||
actionview (= 6.0.0) | |||
activesupport (= 6.0.0) | |||
rack (~> 2.0) | |||
rack-test (>= 0.6.3) | |||
rails-dom-testing (~> 2.0) | |||
rails-html-sanitizer (~> 1.0, >= 1.2.0) | |||
actiontext (6.0.0) | |||
actionpack (= 6.0.0) | |||
activerecord (= 6.0.0) | |||
activestorage (= 6.0.0) | |||
activesupport (= 6.0.0) | |||
nokogiri (>= 1.8.5) | |||
actionview (6.0.0) | |||
activesupport (= 6.0.0) | |||
builder (~> 3.1) | |||
erubi (~> 1.4) | |||
rails-dom-testing (~> 2.0) | |||
rails-html-sanitizer (~> 1.1, >= 1.2.0) | |||
activejob (6.0.0) | |||
activesupport (= 6.0.0) | |||
globalid (>= 0.3.6) | |||
activemodel (6.0.0) | |||
activesupport (= 6.0.0) | |||
activerecord (6.0.0) | |||
activemodel (= 6.0.0) | |||
activesupport (= 6.0.0) | |||
activestorage (6.0.0) | |||
actionpack (= 6.0.0) | |||
activejob (= 6.0.0) | |||
activerecord (= 6.0.0) | |||
marcel (~> 0.3.1) | |||
activesupport (6.0.0) | |||
concurrent-ruby (~> 1.0, >= 1.0.2) | |||
i18n (>= 0.7, < 2) | |||
minitest (~> 5.1) | |||
tzinfo (~> 1.1) | |||
zeitwerk (~> 2.1, >= 2.1.8) | |||
addressable (2.7.0) | |||
public_suffix (>= 2.0.2, < 5.0) | |||
bcrypt (3.1.13) | |||
bindex (0.8.1) | |||
bootsnap (1.4.5) | |||
msgpack (~> 1.0) | |||
builder (3.2.3) | |||
byebug (11.0.1) | |||
capybara (3.29.0) | |||
addressable | |||
mini_mime (>= 0.1.3) | |||
nokogiri (~> 1.8) | |||
rack (>= 1.6.0) | |||
rack-test (>= 0.6.3) | |||
regexp_parser (~> 1.5) | |||
xpath (~> 3.2) | |||
childprocess (2.0.0) | |||
rake (< 13.0) | |||
concurrent-ruby (1.1.5) | |||
crass (1.0.4) | |||
erubi (1.9.0) | |||
ffi (1.11.1) | |||
globalid (0.4.2) | |||
activesupport (>= 4.2.0) | |||
i18n (1.6.0) | |||
concurrent-ruby (~> 1.0) | |||
irb (1.0.0) | |||
jbuilder (2.9.1) | |||
activesupport (>= 4.2.0) | |||
listen (3.1.5) | |||
rb-fsevent (~> 0.9, >= 0.9.4) | |||
rb-inotify (~> 0.9, >= 0.9.7) | |||
ruby_dep (~> 1.2) | |||
loofah (2.3.0) | |||
crass (~> 1.0.2) | |||
nokogiri (>= 1.5.9) | |||
mail (2.7.1) | |||
mini_mime (>= 0.1.1) | |||
marcel (0.3.3) | |||
mimemagic (~> 0.3.2) | |||
method_source (0.9.2) | |||
mimemagic (0.3.3) | |||
mini_mime (1.0.2) | |||
mini_portile2 (2.4.0) | |||
minitest (5.12.2) | |||
msgpack (1.3.1) | |||
nio4r (2.5.2) | |||
nokogiri (1.10.4) | |||
mini_portile2 (~> 2.4.0) | |||
pg (1.1.4) | |||
public_suffix (4.0.1) | |||
puma (3.12.1) | |||
rack (2.0.7) | |||
rack-proxy (0.6.5) | |||
rack | |||
rack-test (1.1.0) | |||
rack (>= 1.0, < 3) | |||
rails (6.0.0) | |||
actioncable (= 6.0.0) | |||
actionmailbox (= 6.0.0) | |||
actionmailer (= 6.0.0) | |||
actionpack (= 6.0.0) | |||
actiontext (= 6.0.0) | |||
actionview (= 6.0.0) | |||
activejob (= 6.0.0) | |||
activemodel (= 6.0.0) | |||
activerecord (= 6.0.0) | |||
activestorage (= 6.0.0) | |||
activesupport (= 6.0.0) | |||
bundler (>= 1.3.0) | |||
railties (= 6.0.0) | |||
sprockets-rails (>= 2.0.0) | |||
rails-dom-testing (2.0.3) | |||
activesupport (>= 4.2.0) | |||
nokogiri (>= 1.6) | |||
rails-html-sanitizer (1.2.0) | |||
loofah (~> 2.2, >= 2.2.2) | |||
railties (6.0.0) | |||
actionpack (= 6.0.0) | |||
activesupport (= 6.0.0) | |||
method_source | |||
rake (>= 0.8.7) | |||
thor (>= 0.20.3, < 2.0) | |||
rake (12.3.3) | |||
rb-fsevent (0.10.3) | |||
rb-inotify (0.10.0) | |||
ffi (~> 1.0) | |||
regexp_parser (1.6.0) | |||
ruby_dep (1.5.0) | |||
rubyzip (1.3.0) | |||
sass (3.7.4) | |||
sass-listen (~> 4.0.0) | |||
sass-listen (4.0.0) | |||
rb-fsevent (~> 0.9, >= 0.9.4) | |||
rb-inotify (~> 0.9, >= 0.9.7) | |||
sass-rails (5.1.0) | |||
railties (>= 5.2.0) | |||
sass (~> 3.1) | |||
sprockets (>= 2.8, < 4.0) | |||
sprockets-rails (>= 2.0, < 4.0) | |||
tilt (>= 1.1, < 3) | |||
selenium-webdriver (3.142.4) | |||
childprocess (>= 0.5, < 3.0) | |||
rubyzip (~> 1.2, >= 1.2.2) | |||
spring (2.1.0) | |||
spring-watcher-listen (2.0.1) | |||
listen (>= 2.7, < 4.0) | |||
spring (>= 1.2, < 3.0) | |||
sprockets (3.7.2) | |||
concurrent-ruby (~> 1.0) | |||
rack (> 1, < 3) | |||
sprockets-rails (3.2.1) | |||
actionpack (>= 4.0) | |||
activesupport (>= 4.0) | |||
sprockets (>= 3.0.0) | |||
thor (0.20.3) | |||
thread_safe (0.3.6) | |||
tilt (2.0.10) | |||
turbolinks (5.2.1) | |||
turbolinks-source (~> 5.2) | |||
turbolinks-source (5.2.0) | |||
tzinfo (1.2.5) | |||
thread_safe (~> 0.1) | |||
web-console (4.0.1) | |||
actionview (>= 6.0.0) | |||
activemodel (>= 6.0.0) | |||
bindex (>= 0.4.0) | |||
railties (>= 6.0.0) | |||
webdrivers (4.1.2) | |||
nokogiri (~> 1.6) | |||
rubyzip (~> 1.0) | |||
selenium-webdriver (>= 3.0, < 4.0) | |||
webpacker (4.0.7) | |||
activesupport (>= 4.2) | |||
rack-proxy (>= 0.6.1) | |||
railties (>= 4.2) | |||
websocket-driver (0.7.1) | |||
websocket-extensions (>= 0.1.0) | |||
websocket-extensions (0.1.4) | |||
xpath (3.2.0) | |||
nokogiri (~> 1.8) | |||
zeitwerk (2.1.10) | |||
PLATFORMS | |||
ruby | |||
DEPENDENCIES | |||
bcrypt (~> 3.1.7) | |||
bootsnap (>= 1.4.2) | |||
byebug | |||
capybara (>= 2.15) | |||
irb | |||
jbuilder (~> 2.7) | |||
listen (>= 3.0.5, < 3.2) | |||
pg (>= 0.18, < 2.0) | |||
puma (~> 3.11) | |||
rails (~> 6.0.0) | |||
sass-rails (~> 5) | |||
selenium-webdriver | |||
spring | |||
spring-watcher-listen (~> 2.0.0) | |||
turbolinks (~> 5) | |||
tzinfo-data | |||
web-console (>= 3.3.0) | |||
webdrivers | |||
webpacker (~> 4.0) | |||
RUBY VERSION | |||
ruby 2.6.4p104 | |||
BUNDLED WITH | |||
2.0.2 |
@ -0,0 +1,24 @@ | |||
# 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 | |||
* System dependencies | |||
* Configuration | |||
* Database creation | |||
* Database initialization | |||
* How to run the test suite | |||
* Services (job queues, cache servers, search engines, etc.) | |||
* Deployment instructions | |||
* ... |
@ -0,0 +1,6 @@ | |||
# Add your own tasks in files placed in lib/tasks ending in .rake, | |||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. | |||
require_relative 'config/application' | |||
Rails.application.load_tasks |
@ -0,0 +1,2 @@ | |||
//= link_tree ../images | |||
//= link_directory ../stylesheets .css |
@ -0,0 +1,63 @@ | |||
/* | |||
* This is a manifest file that'll be compiled into application.css, which will include all the files | |||
* listed below. | |||
* | |||
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's | |||
* vendor/assets/stylesheets directory can be referenced here using a relative path. | |||
* | |||
* You're free to add application-wide styles to this file and they'll appear at the bottom of the | |||
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS | |||
* files in this directory. Styles in this file should be added after the last require_* statement. | |||
* It is generally better to create a new file per style scope. | |||
* | |||
*= require_tree . | |||
*= require_self | |||
*/ | |||
html | |||
{ | |||
background-color: #050505; | |||
} | |||
body { | |||
margin: 0; | |||
color: #bababa; | |||
font-family: Open Sans, Arial; | |||
line-height: 1.4; | |||
font-size: 16px; | |||
} | |||
html a | |||
{ | |||
color: #07a; | |||
} | |||
html a:visited | |||
{ | |||
color:#ac5a82; | |||
} | |||
#header { | |||
background-color: #151515; | |||
width: 100vw; | |||
} | |||
#header-inside { | |||
padding: 12px; | |||
} | |||
#container { | |||
margin: 16px; | |||
} | |||
.blog { | |||
max-width: 800px; | |||
margin: 2em auto; | |||
} | |||
.indent { | |||
margin-left: 2em; | |||
} | |||
td { | |||
padding-right: 30px; | |||
} |
@ -0,0 +1,3 @@ | |||
// Place all the styles related to the post controller here. | |||
// They will automatically be included in application.css. | |||
// You can use Sass (SCSS) here: http://sass-lang.com/ |
@ -0,0 +1,3 @@ | |||
// Place all the styles related to the sessions controller here. | |||
// They will automatically be included in application.css. | |||
// You can use Sass (SCSS) here: http://sass-lang.com/ |
@ -0,0 +1,3 @@ | |||
// Place all the styles related to the users controller here. | |||
// They will automatically be included in application.css. | |||
// You can use Sass (SCSS) here: http://sass-lang.com/ |
@ -0,0 +1,4 @@ | |||
module ApplicationCable | |||
class Channel < ActionCable::Channel::Base | |||
end | |||
end |
@ -0,0 +1,4 @@ | |||
module ApplicationCable | |||
class Connection < ActionCable::Connection::Base | |||
end | |||
end |
@ -0,0 +1,9 @@ | |||
class ApplicationController < ActionController::Base | |||
#Makes method available from views | |||
helper_method :current_user | |||
def current_user | |||
@current_user ||= User.find(session[:user_id]) if session[:user_id] | |||
end | |||
end |
@ -0,0 +1,18 @@ | |||
class PostController < ApplicationController | |||
def index | |||
@blog = Blog.find(1) | |||
@posts = @blog.posts.where(isDraft: false) | |||
end | |||
def new | |||
redirect_to root_path if current_user.nil? | |||
@blog = current_user.blogs.find(params[:id]) | |||
redirect_to root_path if @blog.nil? | |||
end | |||
def get | |||
@post = Post.find_by(id: params[:id].to_i, | |||
isDraft: false) | |||
redirect_to root_path if @post.nil? | |||
end | |||
end |
@ -0,0 +1,26 @@ | |||
class SessionsController < ApplicationController | |||
def new #For login page | |||
end | |||
def create | |||
user = User.find_by('email ILIKE ? OR username LIKE ?', | |||
params[:login][:username], | |||
params[:login][:username]) | |||
if user && user.authenticate(params[:login][:password]) | |||
#Need to read up on session | |||
#I'm guessing the session stuff is stored on the server, and | |||
#is verified via the token stored on the client | |||
session[:user_id] = user.id.to_s | |||
redirect_to root_path, notice: 'Successfully logged in!' | |||
else | |||
flash.now.alert = "Incorrect email or password!" | |||
render :new | |||
end | |||
end | |||
def destroy | |||
session.delete(:user_id) | |||
redirect_to root_path | |||
end | |||
end |
@ -0,0 +1,32 @@ | |||
class UsersController < ApplicationController | |||
def new | |||
@user = User.new | |||
end | |||
def create | |||
@user = User.new(user_params) | |||
if @user.save | |||
flash[:notice] = "Account created successfully!" | |||
redirect_to root_path | |||
else | |||
flash.now.alert = "Account was not created. Did you use a valid(unique) email and a secure password?" | |||
render :new | |||
end | |||
end | |||
def dashboard | |||
@blogs = current_user.blogs.all | |||
end | |||
private | |||
def user_params | |||
params.require(:user) | |||
.permit(:display_name, | |||
:username, | |||
:email, | |||
:password, | |||
:password_confirmation) | |||
end | |||
end |
@ -0,0 +1,2 @@ | |||
module ApplicationHelper | |||
end |
@ -0,0 +1,2 @@ | |||
module PostHelper | |||
end |
@ -0,0 +1,2 @@ | |||
module SessionsHelper | |||
end |
@ -0,0 +1,2 @@ | |||
module UsersHelper | |||
end |
@ -0,0 +1,6 @@ | |||
// Action Cable provides the framework to deal with WebSockets in Rails. | |||
// You can generate new channels where WebSocket features live using the `rails generate channel` command. | |||
import { createConsumer } from "@rails/actioncable" | |||
export default createConsumer() |
@ -0,0 +1,5 @@ | |||
// Load all the channels within this directory and all subdirectories. | |||
// Channel files must be named *_channel.js. | |||
const channels = require.context('.', true, /_channel\.js$/) | |||
channels.keys().forEach(channels) |
@ -0,0 +1,17 @@ | |||
// This file is automatically compiled by Webpack, along with any other files | |||
// present in this directory. You're encouraged to place your actual application logic in | |||
// a relevant structure within app/javascript and only use these pack files to reference | |||
// that code so it'll be compiled. | |||
require("@rails/ujs").start() | |||
require("turbolinks").start() | |||
require("@rails/activestorage").start() | |||
require("channels") | |||
// Uncomment to copy all static images under ../images to the output folder and reference | |||
// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>) | |||
// or the `imagePath` JavaScript helper below. | |||
// | |||
// const images = require.context('../images', true) | |||
// const imagePath = (name) => images(name, true) |
@ -0,0 +1,7 @@ | |||
class ApplicationJob < ActiveJob::Base | |||
# Automatically retry jobs that encountered a deadlock | |||
# retry_on ActiveRecord::Deadlocked | |||
# Most jobs are safe to ignore if the underlying records are no longer available | |||
# discard_on ActiveJob::DeserializationError | |||
end |
@ -0,0 +1,4 @@ | |||
class ApplicationMailer < ActionMailer::Base | |||
default from: 'from@example.com' | |||
layout 'mailer' | |||
end |
@ -0,0 +1,3 @@ | |||
class ApplicationRecord < ActiveRecord::Base | |||
self.abstract_class = true | |||
end |
@ -0,0 +1,3 @@ | |||
class Blog < ApplicationRecord | |||
has_many :posts | |||
end |
@ -0,0 +1,2 @@ | |||
class Post < ApplicationRecord | |||
end |
@ -0,0 +1,8 @@ | |||
class User < ApplicationRecord | |||
has_secure_password | |||
has_many :blogs | |||
validates :email, presence: true, uniqueness: true | |||
validates :username, presence: true, uniqueness: true | |||
end |
@ -0,0 +1,44 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<title>Pressure</title> | |||
<%= csrf_meta_tags %> | |||
<%= csp_meta_tag %> | |||
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> | |||
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> | |||
</head> | |||
<body> | |||
<div id="header"> | |||
<div id="header-inside"> | |||
<%= link_to 'Home', root_path %> | | |||
<% if current_user %> | |||
Welcome, <%= current_user.display_name %> | | |||
<%= link_to 'Dashboard', dashboard_path %> | |||
<div style="float: right"> | |||
<%= link_to 'Log out', '/logout' %> | |||
</div> | |||
<% else %> | |||
Not logged in | |||
<div style="float: right"> | |||
<%= link_to 'Login', '/login' %> | | |||
<%= link_to 'Sign up', '/signup' %> | |||
</div> | |||
<% end %> | |||
</div> | |||
</div> | |||
<div id="container"> | |||
<% if notice %> | |||
<%= notice %> | |||
<% end %> | |||
<% if alert %> | |||
<%= alert %> | |||
<% end %> | |||
<%= yield %> | |||
</div> | |||
</body> | |||
</html> |
@ -0,0 +1,13 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |||
<style> | |||
/* Email styles need to be inline */ | |||
</style> | |||
</head> | |||
<body> | |||
<%= yield %> | |||
</body> | |||
</html> |
@ -0,0 +1 @@ | |||
<%= yield %> |
@ -0,0 +1,18 @@ | |||
<div class="blog"> | |||
<div class="indent"> | |||
<h1><%= @blog.title %></h1> | |||
<h3><%= @blog.slogan %></h3> | |||
</div> | |||
<hr> | |||
<% @posts.each do |p| %> | |||
<div> | |||
<h4><%= p.title %></h4> | |||
<p class="indent"><%= p.body %></p> | |||
<div style="text-align: right"> | |||
<%= link_to 'Read more...', "/post/#{p.id}" %> | |||
</div> | |||
</div> | |||
<hr> | |||
<% end %> | |||
</div> |
@ -0,0 +1,5 @@ | |||
<div class="blog"> | |||
<% form_for :post do |f| %> | |||
<%= f.text_field :title %> | |||
<% end %> | |||
</div> |
@ -0,0 +1,15 @@ | |||
<h1>Login</h1> | |||
<%= form_for :login do |f| %> | |||
<div> | |||
<%= f.label "Username/Email" %> | |||
<%= f.text_field :username, autofocus: true %> | |||
</div> | |||
<div> | |||
<%= f.label :password %> | |||
<%= f.password_field :password %> | |||
</div> | |||
<div> | |||
<%= f.submit "Login" %> | |||
</div> | |||
<% end %> |
@ -0,0 +1,18 @@ | |||
<h1>Dashboard</h1> | |||
<div> | |||
<h3>Your blogs</h3> | |||
<% if @blogs.count == 0 %> | |||
You don't have any blogs! | |||
<%= link_to 'Create one now?', nil %> | |||
<% else %> | |||
<table> | |||
<% @blogs.each do |b| %> | |||
<tr> | |||
<td><%= b.title %></td> | |||
<td><%= link_to 'New post', "/post/new/#{b.id}" %></td> | |||
</tr> | |||
<% end %> | |||
</table> | |||
<% end %> | |||
</div> |
@ -0,0 +1,26 @@ | |||
<h1>Sign up</h1> | |||
<%= form_for @user do |f| %> | |||
<div> | |||
<%= f.label :username %> | |||
<%= f.text_field :username, autofocus: true %> | |||
</div> | |||
<div> | |||
<%= f.label "Display Name" %> | |||
<%= f.text_field :display_name %> | |||
</div> | |||
<div> | |||
<%= f.label :email %> | |||
<%= f.text_field :email %> | |||
</div> | |||
<div> | |||
<%= f.label :password %> | |||
<%= f.password_field :password %> | |||
</div> | |||
<div> | |||
<%= f.label :password_confirmation %> | |||
<%= f.password_field :password_confirmation %> | |||
</div> | |||
<div> | |||
<%= f.submit "Sign Up" %> | |||
</div> | |||
<% end %> |
@ -0,0 +1,72 @@ | |||
module.exports = function(api) { | |||
var validEnv = ['development', 'test', 'production'] | |||
var currentEnv = api.env() | |||
var isDevelopmentEnv = api.env('development') | |||
var isProductionEnv = api.env('production') | |||
var isTestEnv = api.env('test') | |||
if (!validEnv.includes(currentEnv)) { | |||
throw new Error( | |||
'Please specify a valid `NODE_ENV` or ' + | |||
'`BABEL_ENV` environment variables. Valid values are "development", ' + | |||
'"test", and "production". Instead, received: ' + | |||
JSON.stringify(currentEnv) + | |||
'.' | |||
) | |||
} | |||
return { | |||
presets: [ | |||
isTestEnv && [ | |||
require('@babel/preset-env').default, | |||
{ | |||
targets: { | |||
node: 'current' | |||
} | |||
} | |||
], | |||
(isProductionEnv || isDevelopmentEnv) && [ | |||
require('@babel/preset-env').default, | |||
{ | |||
forceAllTransforms: true, | |||
useBuiltIns: 'entry', | |||
corejs: 3, | |||
modules: false, | |||
exclude: ['transform-typeof-symbol'] | |||
} | |||
] | |||
].filter(Boolean), | |||
plugins: [ | |||
require('babel-plugin-macros'), | |||
require('@babel/plugin-syntax-dynamic-import').default, | |||
isTestEnv && require('babel-plugin-dynamic-import-node'), | |||
require('@babel/plugin-transform-destructuring').default, | |||
[ | |||
require('@babel/plugin-proposal-class-properties').default, | |||
{ | |||
loose: true | |||
} | |||
], | |||
[ | |||
require('@babel/plugin-proposal-object-rest-spread').default, | |||
{ | |||
useBuiltIns: true | |||
} | |||
], | |||
[ | |||
require('@babel/plugin-transform-runtime').default, | |||
{ | |||
helpers: false, | |||
regenerator: true, | |||
corejs: false | |||
} | |||
], | |||
[ | |||
require('@babel/plugin-transform-regenerator').default, | |||
{ | |||
async: false | |||
} | |||
] | |||
].filter(Boolean) | |||
} | |||
} |
@ -0,0 +1,4 @@ | |||
#!/usr/bin/env ruby | |||
APP_PATH = File.expand_path('../config/application', __dir__) | |||
require_relative '../config/boot' | |||
require 'rails/commands' |
@ -0,0 +1,4 @@ | |||
#!/usr/bin/env ruby | |||
require_relative '../config/boot' | |||
require 'rake' | |||
Rake.application.run |
@ -0,0 +1,36 @@ | |||
#!/usr/bin/env ruby | |||
require 'fileutils' | |||
# path to your application root. | |||
APP_ROOT = File.expand_path('..', __dir__) | |||
def system!(*args) | |||
system(*args) || abort("\n== Command #{args} failed ==") | |||
end | |||
FileUtils.chdir APP_ROOT do | |||
# This script is a way to setup or update your development environment automatically. | |||
# This script is idempotent, so that you can run it at anytime and get an expectable outcome. | |||
# Add necessary setup steps to this file. | |||
puts '== Installing dependencies ==' | |||
system! 'gem install bundler --conservative' | |||
system('bundle check') || system!('bundle install') | |||
# Install JavaScript dependencies | |||
# system('bin/yarn') | |||
# puts "\n== Copying sample files ==" | |||
# unless File.exist?('config/database.yml') | |||
# FileUtils.cp 'config/database.yml.sample', 'config/database.yml' | |||
# end | |||
puts "\n== Preparing database ==" | |||
system! 'bin/rails db:prepare' | |||
puts "\n== Removing old logs and tempfiles ==" | |||
system! 'bin/rails log:clear tmp:clear' | |||
puts "\n== Restarting application server ==" | |||
system! 'bin/rails restart' | |||
end |
@ -0,0 +1,19 @@ | |||
#!/usr/bin/env ruby | |||
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" | |||
ENV["NODE_ENV"] ||= "development" | |||
require "pathname" | |||
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", | |||
Pathname.new(__FILE__).realpath) | |||
require "rubygems" | |||
require "bundler/setup" | |||
require "webpacker" | |||
require "webpacker/webpack_runner" | |||
APP_ROOT = File.expand_path("..", __dir__) | |||
Dir.chdir(APP_ROOT) do | |||
Webpacker::WebpackRunner.run(ARGV) | |||
end |
@ -0,0 +1,19 @@ | |||
#!/usr/bin/env ruby | |||
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" | |||
ENV["NODE_ENV"] ||= "development" | |||
require "pathname" | |||
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", | |||
Pathname.new(__FILE__).realpath) | |||
require "rubygems" | |||
require "bundler/setup" | |||
require "webpacker" | |||
require "webpacker/dev_server_runner" | |||
APP_ROOT = File.expand_path("..", __dir__) | |||
Dir.chdir(APP_ROOT) do | |||
Webpacker::DevServerRunner.run(ARGV) | |||
end |
@ -0,0 +1,11 @@ | |||
#!/usr/bin/env ruby | |||
APP_ROOT = File.expand_path('..', __dir__) | |||
Dir.chdir(APP_ROOT) do | |||
begin | |||
exec "yarnpkg", *ARGV | |||
rescue Errno::ENOENT | |||
$stderr.puts "Yarn executable was not detected in the system." | |||
$stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" | |||
exit 1 | |||
end | |||
end |
@ -0,0 +1,5 @@ | |||
# This file is used by Rack-based servers to start the application. | |||
require_relative 'config/environment' | |||
run Rails.application |
@ -0,0 +1,19 @@ | |||
require_relative 'boot' | |||
require 'rails/all' | |||
# Require the gems listed in Gemfile, including any gems | |||
# you've limited to :test, :development, or :production. | |||
Bundler.require(*Rails.groups) | |||
module Pressure | |||
class Application < Rails::Application | |||
# Initialize configuration defaults for originally generated Rails version. | |||
config.load_defaults 6.0 | |||
# Settings in config/environments/* take precedence over those specified here. | |||
# Application configuration can go into files in config/initializers | |||
# -- all .rb files in that directory are automatically loaded after loading | |||
# the framework and any gems in your application. | |||
end | |||
end |
@ -0,0 +1,4 @@ | |||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) | |||
require 'bundler/setup' # Set up gems listed in the Gemfile. | |||
require 'bootsnap/setup' # Speed up boot time by caching expensive operations. |
@ -0,0 +1,10 @@ | |||
development: | |||
adapter: async | |||
test: | |||
adapter: test | |||
production: | |||
adapter: redis | |||
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> | |||
channel_prefix: Pressure_production |
@ -0,0 +1 @@ | |||
UOyl/Y3WyckykIjuIBRWB8NMjcHVKsLnkXl49/fhFQhFD6OFFlevmb6hWpkf2ctwb19D0N0FNIEv9FXNvkInmplLg0Ojzl+CtfUegBlkzwSO6kkWN1mInyCt0efQfivcH/zOoyKU9Dd5zHTpO2BpakarZhyBpl9f/JNiu3K6jsUDMh6k+vbukdpEiA/XKamZWrI8hxNgxMX9Ikr4WgEOjWqTIfvXkODeV/N1Sr6Ifn9GExVeQGmJW50lFAiFRZCpX+v5H2NKDa7V/aIwHA2GEbmTFluQ0RANy8LapPcJnDG8TypFLUKXsy5ipGlBDoFlWKTA0WSk3b2/WgkZws6hxGlmfoGETiz08liSc42FIy6+Z1sYpnFFIhhunzfM4HxonizpWuCp+8AaEnpGLiJp9bSHM15sUnGNu20z--M/WUmmJo9Edx8N6v--8Zo3wnVP9Nme6yNvh1jTkQ== |
@ -0,0 +1,85 @@ | |||
# PostgreSQL. Versions 9.3 and up are supported. | |||
# | |||
# Install the pg driver: | |||
# gem install pg | |||
# On macOS with Homebrew: | |||
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config | |||
# On macOS with MacPorts: | |||
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config | |||
# On Windows: | |||
# gem install pg | |||
# Choose the win32 build. | |||
# Install PostgreSQL and put its /bin directory on your path. | |||
# | |||
# Configure Using Gemfile | |||
# gem 'pg' | |||
# | |||
default: &default | |||
adapter: postgresql | |||
encoding: unicode | |||
# For details on connection pooling, see Rails configuration guide | |||
# https://guides.rubyonrails.org/configuring.html#database-pooling | |||
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> | |||
development: | |||
<<: *default | |||
database: Pressure_development | |||
# The specified database role being used to connect to postgres. | |||
# To create additional roles in postgres see `$ createuser --help`. | |||
# When left blank, postgres will use the default role. This is | |||
# the same name as the operating system user that initialized the database. | |||
#username: Pressure | |||
# The password associated with the postgres role (username). | |||
#password: | |||
# Connect on a TCP socket. Omitted by default since the client uses a | |||
# domain socket that doesn't need configuration. Windows does not have | |||
# domain sockets, so uncomment these lines. | |||
#host: localhost | |||
# The TCP port the server listens on. Defaults to 5432. | |||
# If your server runs on a different port number, change accordingly. | |||
#port: 5432 | |||
# Schema search path. The server defaults to $user,public | |||
#schema_search_path: myapp,sharedapp,public | |||
# Minimum log levels, in increasing order: | |||
# debug5, debug4, debug3, debug2, debug1, | |||
# log, notice, warning, error, fatal, and panic | |||
# Defaults to warning. | |||
#min_messages: notice | |||
# Warning: The database defined as "test" will be erased and | |||
# re-generated from your development database when you run "rake". | |||
# Do not set this db to the same as development or production. | |||
test: | |||
<<: *default | |||
database: Pressure_test | |||
# As with config/credentials.yml, you never want to store sensitive information, | |||
# like your database password, in your source code. If your source code is | |||
# ever seen by anyone, they now have access to your database. | |||
# | |||
# Instead, provide the password as a unix environment variable when you boot | |||
# the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database | |||
# for a full rundown on how to provide these environment variables in a | |||
# production deployment. | |||
# | |||
# On Heroku and other platform providers, you may have a full connection URL | |||
# available as an environment variable. For example: | |||
# | |||
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" | |||
# | |||
# You can use this database configuration with: | |||
# | |||
# production: | |||
# url: <%= ENV['DATABASE_URL'] %> | |||
# | |||
production: | |||
<<: *default | |||
database: Pressure_production | |||
username: Pressure | |||
password: <%= ENV['PRESSURE_DATABASE_PASSWORD'] %> |
@ -0,0 +1,5 @@ | |||
# Load the Rails application. | |||
require_relative 'application' | |||
# Initialize the Rails application. | |||
Rails.application.initialize! |
@ -0,0 +1,62 @@ | |||
Rails.application.configure do | |||
# Settings specified here will take precedence over those in config/application.rb. | |||
# In the development environment your application's code is reloaded on | |||
# every request. This slows down response time but is perfect for development | |||
# since you don't have to restart the web server when you make code changes. | |||
config.cache_classes = false | |||
# Do not eager load code on boot. | |||
config.eager_load = false | |||
# Show full error reports. | |||
config.consider_all_requests_local = true | |||
# Enable/disable caching. By default caching is disabled. | |||
# Run rails dev:cache to toggle caching. | |||
if Rails.root.join('tmp', 'caching-dev.txt').exist? | |||
config.action_controller.perform_caching = true | |||
config.action_controller.enable_fragment_cache_logging = true | |||
config.cache_store = :memory_store | |||
config.public_file_server.headers = { | |||
'Cache-Control' => "public, max-age=#{2.days.to_i}" | |||
} | |||
else | |||
config.action_controller.perform_caching = false | |||
config.cache_store = :null_store | |||
end | |||
# Store uploaded files on the local file system (see config/storage.yml for options). | |||
config.active_storage.service = :local | |||
# Don't care if the mailer can't send. | |||
config.action_mailer.raise_delivery_errors = false | |||
config.action_mailer.perform_caching = false | |||
# Print deprecation notices to the Rails logger. | |||
config.active_support.deprecation = :log | |||
# Raise an error on page load if there are pending migrations. | |||
config.active_record.migration_error = :page_load | |||
# Highlight code that triggered database queries in logs. | |||
config.active_record.verbose_query_logs = true | |||
# Debug mode disables concatenation and preprocessing of assets. | |||
# This option may cause significant delays in view rendering with a large | |||
# number of complex assets. | |||
config.assets.debug = true | |||
# Suppress logger output for asset requests. | |||
config.assets.quiet = true | |||
# Raises error for missing translations. | |||
# config.action_view.raise_on_missing_translations = true | |||
# Use an evented file watcher to asynchronously detect changes in source code, | |||
# routes, locales, etc. This feature depends on the listen gem. | |||
config.file_watcher = ActiveSupport::EventedFileUpdateChecker | |||
end |
@ -0,0 +1,112 @@ | |||
Rails.application.configure do | |||
# Settings specified here will take precedence over those in config/application.rb. | |||
# Code is not reloaded between requests. | |||
config.cache_classes = true | |||
# Eager load code on boot. This eager loads most of Rails and | |||
# your application in memory, allowing both threaded web servers | |||
# and those relying on copy on write to perform better. | |||
# Rake tasks automatically ignore this option for performance. | |||
config.eager_load = true | |||
# Full error reports are disabled and caching is turned on. | |||
config.consider_all_requests_local = false | |||
config.action_controller.perform_caching = true | |||
# Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] | |||
# or in config/master.key. This key is used to decrypt credentials (and other encrypted files). | |||
# config.require_master_key = true | |||
# Disable serving static files from the `/public` folder by default since | |||
# Apache or NGINX already handles this. | |||
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? | |||
# Compress CSS using a preprocessor. | |||
# config.assets.css_compressor = :sass | |||
# Do not fallback to assets pipeline if a precompiled asset is missed. | |||
config.assets.compile = false | |||
# Enable serving of images, stylesheets, and JavaScripts from an asset server. | |||
# config.action_controller.asset_host = 'http://assets.example.com' | |||
# Specifies the header that your server uses for sending files. | |||
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache | |||
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX | |||
# Store uploaded files on the local file system (see config/storage.yml for options). | |||
config.active_storage.service = :local | |||
# Mount Action Cable outside main process or domain. | |||
# config.action_cable.mount_path = nil | |||
# config.action_cable.url = 'wss://example.com/cable' | |||
# config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] | |||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. | |||
# config.force_ssl = true | |||
# Use the lowest log level to ensure availability of diagnostic information | |||
# when problems arise. | |||
config.log_level = :debug | |||
# Prepend all log lines with the following tags. | |||
config.log_tags = [ :request_id ] | |||
# Use a different cache store in production. | |||
# config.cache_store = :mem_cache_store | |||
# Use a real queuing backend for Active Job (and separate queues per environment). | |||
# config.active_job.queue_adapter = :resque | |||
# config.active_job.queue_name_prefix = "Pressure_production" | |||
config.action_mailer.perform_caching = false | |||
# Ignore bad email addresses and do not raise email delivery errors. | |||
# Set this to true and configure the email server for immediate delivery to raise delivery errors. | |||
# config.action_mailer.raise_delivery_errors = false | |||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to | |||
# the I18n.default_locale when a translation cannot be found). | |||
config.i18n.fallbacks = true | |||
# Send deprecation notices to registered listeners. | |||
config.active_support.deprecation = :notify | |||
# Use default logging formatter so that PID and timestamp are not suppressed. | |||
config.log_formatter = ::Logger::Formatter.new | |||
# Use a different logger for distributed setups. | |||
# require 'syslog/logger' | |||
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') | |||
if ENV["RAILS_LOG_TO_STDOUT"].present? | |||
logger = ActiveSupport::Logger.new(STDOUT) | |||
logger.formatter = config.log_formatter | |||
config.logger = ActiveSupport::TaggedLogging.new(logger) | |||
end | |||
# Do not dump schema after migrations. | |||
config.active_record.dump_schema_after_migration = false | |||
# Inserts middleware to perform automatic connection switching. | |||
# The `database_selector` hash is used to pass options to the DatabaseSelector | |||
# middleware. The `delay` is used to determine how long to wait after a write | |||
# to send a subsequent read to the primary. | |||
# | |||
# The `database_resolver` class is used by the middleware to determine which | |||
# database is appropriate to use based on the time delay. | |||
# | |||
# The `database_resolver_context` class is used by the middleware to set | |||
# timestamps for the last write to the primary. The resolver uses the context | |||
# class timestamps to determine how long to wait before reading from the | |||
# replica. | |||
# | |||
# By default Rails will store a last write timestamp in the session. The | |||
# DatabaseSelector middleware is designed as such you can define your own | |||
# strategy for connection switching and pass that into the middleware through | |||
# these configuration options. | |||
# config.active_record.database_selector = { delay: 2.seconds } | |||
# config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver | |||
# config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session | |||
end |
@ -0,0 +1,48 @@ | |||
# The test environment is used exclusively to run your application's | |||
# test suite. You never need to work with it otherwise. Remember that | |||
# your test database is "scratch space" for the test suite and is wiped | |||
# and recreated between test runs. Don't rely on the data there! | |||
Rails.application.configure do | |||
# Settings specified here will take precedence over those in config/application.rb. | |||
config.cache_classes = false | |||
# Do not eager load code on boot. This avoids loading your whole application | |||
# just for the purpose of running a single test. If you are using a tool that | |||
# preloads Rails for running tests, you may have to set it to true. | |||
config.eager_load = false | |||
# Configure public file server for tests with Cache-Control for performance. | |||
config.public_file_server.enabled = true | |||
config.public_file_server.headers = { | |||
'Cache-Control' => "public, max-age=#{1.hour.to_i}" | |||
} | |||
# Show full error reports and disable caching. | |||
config.consider_all_requests_local = true | |||
config.action_controller.perform_caching = false | |||
config.cache_store = :null_store | |||
# Raise exceptions instead of rendering exception templates. | |||
config.action_dispatch.show_exceptions = false | |||
# Disable request forgery protection in test environment. | |||
config.action_controller.allow_forgery_protection = false | |||
# Store uploaded files on the local file system in a temporary directory. | |||
config.active_storage.service = :test | |||
config.action_mailer.perform_caching = false | |||
# Tell Action Mailer not to deliver emails to the real world. | |||
# The :test delivery method accumulates sent emails in the | |||
# ActionMailer::Base.deliveries array. | |||
config.action_mailer.delivery_method = :test | |||
# Print deprecation notices to the stderr. | |||
config.active_support.deprecation = :stderr | |||
# Raises error for missing translations. | |||
# config.action_view.raise_on_missing_translations = true | |||
end |
@ -0,0 +1,8 @@ | |||
# Be sure to restart your server when you modify this file. | |||
# ActiveSupport::Reloader.to_prepare do | |||
# ApplicationController.renderer.defaults.merge!( | |||
# http_host: 'example.org', | |||
# https: false | |||
# ) | |||
# end |
@ -0,0 +1,14 @@ | |||
# Be sure to restart your server when you modify this file. | |||
# Version of your assets, change this if you want to expire all your assets. | |||
Rails.application.config.assets.version = '1.0' | |||
# Add additional assets to the asset load path. | |||
# Rails.application.config.assets.paths << Emoji.images_path | |||
# Add Yarn node_modules folder to the asset load path. | |||
Rails.application.config.assets.paths << Rails.root.join('node_modules') | |||
# Precompile additional assets. | |||
# application.js, application.css, and all non-JS/CSS in the app/assets | |||
# folder are already added. | |||
# Rails.application.config.assets.precompile += %w( admin.js admin.css ) |
@ -0,0 +1,7 @@ | |||
# Be sure to restart your server when you modify this file. | |||
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. | |||
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } | |||
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. | |||
# Rails.backtrace_cleaner.remove_silencers! |
@ -0,0 +1,30 @@ | |||
# Be sure to restart your server when you modify this file. | |||
# Define an application-wide content security policy | |||
# For further information see the following documentation | |||
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy | |||
# Rails.application.config.content_security_policy do |policy| | |||
# policy.default_src :self, :https | |||
# policy.font_src :self, :https, :data | |||
# policy.img_src :self, :https, :data | |||
# policy.object_src :none | |||
# policy.script_src :self, :https | |||
# policy.style_src :self, :https | |||
# # If you are using webpack-dev-server then specify webpack-dev-server host | |||
# policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development? | |||
# # Specify URI for violation reports | |||
# # policy.report_uri "/csp-violation-report-endpoint" | |||
# end | |||
# If you are using UJS then enable automatic nonce generation | |||
# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) } | |||
# Set the nonce only to specific directives | |||
# Rails.application.config.content_security_policy_nonce_directives = %w(script-src) | |||
# Report CSP violations to a specified URI | |||
# For further information see the following documentation: | |||
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only | |||
# Rails.application.config.content_security_policy_report_only = true |
@ -0,0 +1,5 @@ | |||
# Be sure to restart your server when you modify this file. | |||
# Specify a serializer for the signed and encrypted cookie jars. | |||
# Valid options are :json, :marshal, and :hybrid. | |||
Rails.application.config.action_dispatch.cookies_serializer = :json |
@ -0,0 +1,4 @@ | |||
# Be sure to restart your server when you modify this file. | |||
# Configure sensitive parameters which will be filtered from the log file. | |||
Rails.application.config.filter_parameters += [:password] |
@ -0,0 +1,16 @@ | |||
# Be sure to restart your server when you modify this file. | |||
# Add new inflection rules using the following format. Inflections | |||
# are locale specific, and you may define rules for as many different | |||
# locales as you wish. All of these examples are active by default: | |||
# ActiveSupport::Inflector.inflections(:en) do |inflect| | |||
# inflect.plural /^(ox)$/i, '\1en' | |||
# inflect.singular /^(ox)en/i, '\1' | |||
# inflect.irregular 'person', 'people' | |||
# inflect.uncountable %w( fish sheep ) | |||
# end | |||
# These inflection rules are supported but not enabled by default: | |||
# ActiveSupport::Inflector.inflections(:en) do |inflect| | |||
# inflect.acronym 'RESTful' | |||
# end |
@ -0,0 +1,4 @@ | |||
# Be sure to restart your server when you modify this file. | |||
# Add new mime types for use in respond_to blocks: | |||
# Mime::Type.register "text/richtext", :rtf |
@ -0,0 +1,14 @@ | |||
# Be sure to restart your server when you modify this file. | |||
# This file contains settings for ActionController::ParamsWrapper which | |||
# is enabled by default. | |||
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. | |||
ActiveSupport.on_load(:action_controller) do | |||
wrap_parameters format: [:json] | |||
end | |||
# To enable root element in JSON for ActiveRecord objects. | |||
# ActiveSupport.on_load(:active_record) do | |||
# self.include_root_in_json = true | |||
# end |
@ -0,0 +1,33 @@ | |||
# Files in the config/locales directory are used for internationalization | |||
# and are automatically loaded by Rails. If you want to use locales other | |||
# than English, add the necessary files in this directory. | |||
# | |||
# To use the locales, use `I18n.t`: | |||
# | |||
# I18n.t 'hello' | |||
# | |||
# In views, this is aliased to just `t`: | |||
# | |||
# <%= t('hello') %> | |||
# | |||
# To use a different locale, set it with `I18n.locale`: | |||
# | |||
# I18n.locale = :es | |||
# | |||
# This would use the information in config/locales/es.yml. | |||
# | |||
# The following keys must be escaped otherwise they will not be retrieved by | |||
# the default I18n backend: | |||
# | |||
# true, false, on, off, yes, no | |||
# | |||
# Instead, surround them with single quotes. | |||
# | |||
# en: | |||
# 'true': 'foo' | |||
# | |||
# To learn more, please read the Rails Internationalization guide | |||
# available at https://guides.rubyonrails.org/i18n.html. | |||
en: | |||
hello: "Hello world" |
@ -0,0 +1,38 @@ | |||
# Puma can serve each request in a thread from an internal thread pool. | |||
# The `threads` method setting takes two numbers: a minimum and maximum. | |||
# Any libraries that use thread pools should be configured to match | |||
# the maximum value specified for Puma. Default is set to 5 threads for minimum | |||
# and maximum; this matches the default thread size of Active Record. | |||
# | |||
max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } | |||
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } | |||
threads min_threads_count, max_threads_count | |||
# Specifies the `port` that Puma will listen on to receive requests; default is 3000. | |||
# | |||
port ENV.fetch("PORT") { 3000 } | |||
# Specifies the `environment` that Puma will run in. | |||
# | |||
environment ENV.fetch("RAILS_ENV") { "development" } | |||
# Specifies the `pidfile` that Puma will use. | |||
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } | |||
# Specifies the number of `workers` to boot in clustered mode. | |||
# Workers are forked web server processes. If using threads and workers together | |||
# the concurrency of the application would be max `threads` * `workers`. | |||
# Workers do not work on JRuby or Windows (both of which do not support | |||
# processes). | |||
# | |||
# workers ENV.fetch("WEB_CONCURRENCY") { 2 } | |||
# Use the `preload_app!` method when specifying a `workers` number. | |||
# This directive tells Puma to first boot the application and load code | |||
# before forking the application. This takes advantage of Copy On Write | |||
# process behavior so workers use less memory. | |||
# | |||
# preload_app! | |||
# Allow puma to be restarted by `rails restart` command. | |||
plugin :tmp_restart |
@ -0,0 +1,19 @@ | |||
Rails.application.routes.draw do | |||
root 'post#index' | |||
get '/post/new/:id' => 'post#new' | |||
post '/post/create' => 'post#create' | |||
get '/post/:id' => 'post#get' | |||
get '/dashboard' => 'users#dashboard' | |||
get '/signup' => 'users#new' | |||
post '/users' => 'users#create' | |||
get '/login' => 'sessions#new' | |||
post '/login' => 'sessions#create' | |||
get '/logout' => 'sessions#destroy' | |||
end |
@ -0,0 +1,6 @@ | |||
Spring.watch( | |||
".ruby-version", | |||
".rbenv-vars", | |||
"tmp/restart.txt", | |||
"tmp/caching-dev.txt" | |||
) |
@ -0,0 +1,34 @@ | |||
test: | |||
service: Disk | |||
root: <%= Rails.root.join("tmp/storage") %> | |||
local: | |||
service: Disk | |||
root: <%= Rails.root.join("storage") %> | |||
# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) | |||
# amazon: | |||
# service: S3 | |||
# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> | |||
# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> | |||
# region: us-east-1 | |||
# bucket: your_own_bucket | |||
# Remember not to checkin your GCS keyfile to a repository | |||
# google: | |||
# service: GCS | |||
# project: your_project | |||
# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> | |||
# bucket: your_own_bucket | |||
# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) | |||
# microsoft: | |||
# service: AzureStorage | |||
# storage_account_name: your_account_name | |||
# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> | |||
# container: your_container_name | |||
# mirror: | |||
# service: Mirror | |||
# primary: local | |||
# mirrors: [ amazon, google, microsoft ] |
@ -0,0 +1,5 @@ | |||
process.env.NODE_ENV = process.env.NODE_ENV || 'development' | |||
const environment = require('./environment') | |||
module.exports = environment.toWebpackConfig() |
@ -0,0 +1,3 @@ | |||
const { environment } = require('@rails/webpacker') | |||
module.exports = environment |
@ -0,0 +1,5 @@ | |||
process.env.NODE_ENV = process.env.NODE_ENV || 'production' | |||
const environment = require('./environment') | |||
module.exports = environment.toWebpackConfig() |
@ -0,0 +1,5 @@ | |||
process.env.NODE_ENV = process.env.NODE_ENV || 'development' | |||
const environment = require('./environment') | |||
module.exports = environment.toWebpackConfig() |
@ -0,0 +1,95 @@ | |||
# Note: You must restart bin/webpack-dev-server for changes to take effect | |||
default: &default | |||
source_path: app/javascript | |||
source_entry_path: packs | |||
public_root_path: public | |||
public_output_path: packs | |||
cache_path: tmp/cache/webpacker | |||
check_yarn_integrity: false | |||
webpack_compile_output: false | |||
# Additional paths webpack should lookup modules | |||
# ['app/assets', 'engine/foo/app/assets'] | |||
resolved_paths: [] | |||
# Reload manifest.json on all requests so we reload latest compiled packs | |||
cache_manifest: false | |||
# Extract and emit a css file | |||
extract_css: false | |||
static_assets_extensions: | |||
- .jpg | |||
- .jpeg | |||
- .png | |||
- .gif | |||
- .tiff | |||
- .ico | |||
- .svg | |||
- .eot | |||
- .otf | |||
- .ttf | |||
- .woff | |||
- .woff2 | |||
extensions: | |||
- .mjs | |||
- .js | |||
- .sass | |||
- .scss | |||
- .css | |||
- .module.sass | |||
- .module.scss | |||
- .module.css | |||
- .png | |||
- .svg | |||
- .gif | |||
- .jpeg | |||
- .jpg | |||
development: | |||
<<: *default | |||
compile: true | |||
# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules | |||
check_yarn_integrity: true | |||
# Reference: https://webpack.js.org/configuration/dev-server/ | |||
dev_server: | |||
https: false | |||
host: localhost | |||
port: 3035 | |||
public: localhost:3035 | |||
hmr: false | |||
# Inline should be set to true if using HMR | |||
inline: true | |||
overlay: true | |||
compress: true | |||
disable_host_check: true | |||
use_local_ip: false | |||
quiet: false | |||
headers: | |||
'Access-Control-Allow-Origin': '*' | |||
watch_options: | |||
ignored: '**/node_modules/**' | |||
test: | |||
<<: *default | |||
compile: true | |||
# Compile test packs to a separate directory | |||
public_output_path: packs-test | |||
production: | |||
<<: *default | |||
# Production depends on precompilation of packs prior to booting for performance. | |||
compile: false | |||
# Extract and emit a css file | |||
extract_css: true | |||
# Cache manifest.json for performance | |||
cache_manifest: true |
@ -0,0 +1,12 @@ | |||
class CreateUsers < ActiveRecord::Migration[6.0] | |||
def change | |||