@@ -0,0 +1 @@ | |||
defaults |
@@ -0,0 +1,33 @@ | |||
# 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 | |||
.DS_Store | |||
@@ -0,0 +1 @@ | |||
2.6.6 |
@@ -0,0 +1,54 @@ | |||
source 'https://rubygems.org' | |||
git_source(:github) { |repo| "https://github.com/#{repo}.git" } | |||
ruby '2.6.6' | |||
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' | |||
gem 'rails', '~> 6.0.3', '>= 6.0.3.2' | |||
# Use postgresql as the database for Active Record | |||
gem 'pg', '>= 0.18', '< 2.0' | |||
# Use Puma as the app server | |||
gem 'puma', '~> 4.1' | |||
# Use SCSS for stylesheets | |||
gem 'sass-rails', '>= 6' | |||
# 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.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] |
@@ -0,0 +1,223 @@ | |||
GEM | |||
remote: https://rubygems.org/ | |||
specs: | |||
actioncable (6.0.3.2) | |||
actionpack (= 6.0.3.2) | |||
nio4r (~> 2.0) | |||
websocket-driver (>= 0.6.1) | |||
actionmailbox (6.0.3.2) | |||
actionpack (= 6.0.3.2) | |||
activejob (= 6.0.3.2) | |||
activerecord (= 6.0.3.2) | |||
activestorage (= 6.0.3.2) | |||
activesupport (= 6.0.3.2) | |||
mail (>= 2.7.1) | |||
actionmailer (6.0.3.2) | |||
actionpack (= 6.0.3.2) | |||
actionview (= 6.0.3.2) | |||
activejob (= 6.0.3.2) | |||
mail (~> 2.5, >= 2.5.4) | |||
rails-dom-testing (~> 2.0) | |||
actionpack (6.0.3.2) | |||
actionview (= 6.0.3.2) | |||
activesupport (= 6.0.3.2) | |||
rack (~> 2.0, >= 2.0.8) | |||
rack-test (>= 0.6.3) | |||
rails-dom-testing (~> 2.0) | |||
rails-html-sanitizer (~> 1.0, >= 1.2.0) | |||
actiontext (6.0.3.2) | |||
actionpack (= 6.0.3.2) | |||
activerecord (= 6.0.3.2) | |||
activestorage (= 6.0.3.2) | |||
activesupport (= 6.0.3.2) | |||
nokogiri (>= 1.8.5) | |||
actionview (6.0.3.2) | |||
activesupport (= 6.0.3.2) | |||
builder (~> 3.1) | |||
erubi (~> 1.4) | |||
rails-dom-testing (~> 2.0) | |||
rails-html-sanitizer (~> 1.1, >= 1.2.0) | |||
activejob (6.0.3.2) | |||
activesupport (= 6.0.3.2) | |||
globalid (>= 0.3.6) | |||
activemodel (6.0.3.2) | |||
activesupport (= 6.0.3.2) | |||
activerecord (6.0.3.2) | |||
activemodel (= 6.0.3.2) | |||
activesupport (= 6.0.3.2) | |||
activestorage (6.0.3.2) | |||
actionpack (= 6.0.3.2) | |||
activejob (= 6.0.3.2) | |||
activerecord (= 6.0.3.2) | |||
marcel (~> 0.3.1) | |||
activesupport (6.0.3.2) | |||
concurrent-ruby (~> 1.0, >= 1.0.2) | |||
i18n (>= 0.7, < 2) | |||
minitest (~> 5.1) | |||
tzinfo (~> 1.1) | |||
zeitwerk (~> 2.2, >= 2.2.2) | |||
addressable (2.7.0) | |||
public_suffix (>= 2.0.2, < 5.0) | |||
bindex (0.8.1) | |||
bootsnap (1.4.8) | |||
msgpack (~> 1.0) | |||
builder (3.2.4) | |||
byebug (11.1.3) | |||
capybara (3.33.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 (3.0.0) | |||
concurrent-ruby (1.1.7) | |||
crass (1.0.6) | |||
erubi (1.9.0) | |||
ffi (1.13.1) | |||
globalid (0.4.2) | |||
activesupport (>= 4.2.0) | |||
i18n (1.8.5) | |||
concurrent-ruby (~> 1.0) | |||
jbuilder (2.10.0) | |||
activesupport (>= 5.0.0) | |||
listen (3.2.1) | |||
rb-fsevent (~> 0.10, >= 0.10.3) | |||
rb-inotify (~> 0.9, >= 0.9.10) | |||
loofah (2.7.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 (1.0.0) | |||
mimemagic (0.3.5) | |||
mini_mime (1.0.2) | |||
mini_portile2 (2.4.0) | |||
minitest (5.14.2) | |||
msgpack (1.3.3) | |||
nio4r (2.5.2) | |||
nokogiri (1.10.10) | |||
mini_portile2 (~> 2.4.0) | |||
pg (1.2.3) | |||
public_suffix (4.0.6) | |||
puma (4.3.6) | |||
nio4r (~> 2.0) | |||
rack (2.2.3) | |||
rack-proxy (0.6.5) | |||
rack | |||
rack-test (1.1.0) | |||
rack (>= 1.0, < 3) | |||
rails (6.0.3.2) | |||
actioncable (= 6.0.3.2) | |||
actionmailbox (= 6.0.3.2) | |||
actionmailer (= 6.0.3.2) | |||
actionpack (= 6.0.3.2) | |||
actiontext (= 6.0.3.2) | |||
actionview (= 6.0.3.2) | |||
activejob (= 6.0.3.2) | |||
activemodel (= 6.0.3.2) | |||
activerecord (= 6.0.3.2) | |||
activestorage (= 6.0.3.2) | |||
activesupport (= 6.0.3.2) | |||
bundler (>= 1.3.0) | |||
railties (= 6.0.3.2) | |||
sprockets-rails (>= 2.0.0) | |||
rails-dom-testing (2.0.3) | |||
activesupport (>= 4.2.0) | |||
nokogiri (>= 1.6) | |||
rails-html-sanitizer (1.3.0) | |||
loofah (~> 2.3) | |||
railties (6.0.3.2) | |||
actionpack (= 6.0.3.2) | |||
activesupport (= 6.0.3.2) | |||
method_source | |||
rake (>= 0.8.7) | |||
thor (>= 0.20.3, < 2.0) | |||
rake (13.0.1) | |||
rb-fsevent (0.10.4) | |||
rb-inotify (0.10.1) | |||
ffi (~> 1.0) | |||
regexp_parser (1.7.1) | |||
rubyzip (2.3.0) | |||
sass-rails (6.0.0) | |||
sassc-rails (~> 2.1, >= 2.1.1) | |||
sassc (2.4.0) | |||
ffi (~> 1.9) | |||
sassc-rails (2.1.2) | |||
railties (>= 4.0.0) | |||
sassc (>= 2.0) | |||
sprockets (> 3.0) | |||
sprockets-rails | |||
tilt | |||
selenium-webdriver (3.142.7) | |||
childprocess (>= 0.5, < 4.0) | |||
rubyzip (>= 1.2.2) | |||
spring (2.1.1) | |||
spring-watcher-listen (2.0.1) | |||
listen (>= 2.7, < 4.0) | |||
spring (>= 1.2, < 3.0) | |||
sprockets (4.0.2) | |||
concurrent-ruby (~> 1.0) | |||
rack (> 1, < 3) | |||
sprockets-rails (3.2.1) | |||
actionpack (>= 4.0) | |||
activesupport (>= 4.0) | |||
sprockets (>= 3.0.0) | |||
thor (1.0.1) | |||
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.7) | |||
thread_safe (~> 0.1) | |||
web-console (4.0.4) | |||
actionview (>= 6.0.0) | |||
activemodel (>= 6.0.0) | |||
bindex (>= 0.4.0) | |||
railties (>= 6.0.0) | |||
webdrivers (4.4.1) | |||
nokogiri (~> 1.6) | |||
rubyzip (>= 1.3.0) | |||
selenium-webdriver (>= 3.0, < 4.0) | |||
webpacker (4.3.0) | |||
activesupport (>= 4.2) | |||
rack-proxy (>= 0.6.1) | |||
railties (>= 4.2) | |||
websocket-driver (0.7.3) | |||
websocket-extensions (>= 0.1.0) | |||
websocket-extensions (0.1.5) | |||
xpath (3.2.0) | |||
nokogiri (~> 1.8) | |||
zeitwerk (2.4.0) | |||
PLATFORMS | |||
ruby | |||
DEPENDENCIES | |||
bootsnap (>= 1.4.2) | |||
byebug | |||
capybara (>= 2.15) | |||
jbuilder (~> 2.7) | |||
listen (~> 3.2) | |||
pg (>= 0.18, < 2.0) | |||
puma (~> 4.1) | |||
rails (~> 6.0.3, >= 6.0.3.2) | |||
sass-rails (>= 6) | |||
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.6p146 | |||
BUNDLED WITH | |||
2.1.4 |
@@ -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,15 @@ | |||
/* | |||
* 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 | |||
*/ |
@@ -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,2 @@ | |||
class ApplicationController < ActionController::Base | |||
end |
@@ -0,0 +1,2 @@ | |||
module ApplicationHelper | |||
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,18 @@ | |||
// Visit The Stimulus Handbook for more details | |||
// https://stimulusjs.org/handbook/introduction | |||
// | |||
// This example controller works with specially annotated HTML like: | |||
// | |||
// <div data-controller="hello"> | |||
// <h1 data-target="hello.output"></h1> | |||
// </div> | |||
import { Controller } from "stimulus" | |||
export default class extends Controller { | |||
static targets = [ "output" ] | |||
connect() { | |||
this.outputTarget.textContent = 'Hello, Stimulus!' | |||
} | |||
} |
@@ -0,0 +1,9 @@ | |||
// Load all the controllers within this directory and all subdirectories. | |||
// Controller files must be named *_controller.js. | |||
import { Application } from "stimulus" | |||
import { definitionsFromContext } from "stimulus/webpack-helpers" | |||
const application = Application.start() | |||
const context = require.context("controllers", true, /_controller\.js$/) | |||
application.load(definitionsFromContext(context)) |
@@ -0,0 +1,19 @@ | |||
// 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) | |||
import "controllers" |
@@ -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,15 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<title>SuperTextAdventure</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> | |||
<%= yield %> | |||
</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,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 && [ | |||
'@babel/preset-env', | |||
{ | |||
targets: { | |||
node: 'current' | |||
} | |||
} | |||
], | |||
(isProductionEnv || isDevelopmentEnv) && [ | |||
'@babel/preset-env', | |||
{ | |||
forceAllTransforms: true, | |||
useBuiltIns: 'entry', | |||
corejs: 3, | |||
modules: false, | |||
exclude: ['transform-typeof-symbol'] | |||
} | |||
] | |||
].filter(Boolean), | |||
plugins: [ | |||
'babel-plugin-macros', | |||
'@babel/plugin-syntax-dynamic-import', | |||
isTestEnv && 'babel-plugin-dynamic-import-node', | |||
'@babel/plugin-transform-destructuring', | |||
[ | |||
'@babel/plugin-proposal-class-properties', | |||
{ | |||
loose: true | |||
} | |||
], | |||
[ | |||
'@babel/plugin-proposal-object-rest-spread', | |||
{ | |||
useBuiltIns: true | |||
} | |||
], | |||
[ | |||
'@babel/plugin-transform-runtime', | |||
{ | |||
helpers: false, | |||
regenerator: true, | |||
corejs: false | |||
} | |||
], | |||
[ | |||
'@babel/plugin-transform-regenerator', | |||
{ | |||
async: false | |||
} | |||
] | |||
].filter(Boolean) | |||
} | |||
} |
@@ -0,0 +1,114 @@ | |||
#!/usr/bin/env ruby | |||
# frozen_string_literal: true | |||
# | |||
# This file was generated by Bundler. | |||
# | |||
# The application 'bundle' is installed as part of a gem, and | |||
# this file is here to facilitate running it. | |||
# | |||
require "rubygems" | |||
m = Module.new do | |||
module_function | |||
def invoked_as_script? | |||
File.expand_path($0) == File.expand_path(__FILE__) | |||
end | |||
def env_var_version | |||
ENV["BUNDLER_VERSION"] | |||
end | |||
def cli_arg_version | |||
return unless invoked_as_script? # don't want to hijack other binstubs | |||
return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` | |||
bundler_version = nil | |||
update_index = nil | |||
ARGV.each_with_index do |a, i| | |||
if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN | |||
bundler_version = a | |||
end | |||
next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ | |||
bundler_version = $1 | |||
update_index = i | |||
end | |||
bundler_version | |||
end | |||
def gemfile | |||
gemfile = ENV["BUNDLE_GEMFILE"] | |||
return gemfile if gemfile && !gemfile.empty? | |||
File.expand_path("../../Gemfile", __FILE__) | |||
end | |||
def lockfile | |||
lockfile = | |||
case File.basename(gemfile) | |||
when "gems.rb" then gemfile.sub(/\.rb$/, gemfile) | |||
else "#{gemfile}.lock" | |||
end | |||
File.expand_path(lockfile) | |||
end | |||
def lockfile_version | |||
return unless File.file?(lockfile) | |||
lockfile_contents = File.read(lockfile) | |||
return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ | |||
Regexp.last_match(1) | |||
end | |||
def bundler_version | |||
@bundler_version ||= | |||
env_var_version || cli_arg_version || | |||
lockfile_version | |||
end | |||
def bundler_requirement | |||
return "#{Gem::Requirement.default}.a" unless bundler_version | |||
bundler_gem_version = Gem::Version.new(bundler_version) | |||
requirement = bundler_gem_version.approximate_recommendation | |||
return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.7.0") | |||
requirement += ".a" if bundler_gem_version.prerelease? | |||
requirement | |||
end | |||
def load_bundler! | |||
ENV["BUNDLE_GEMFILE"] ||= gemfile | |||
activate_bundler | |||
end | |||
def activate_bundler | |||
gem_error = activation_error_handling do | |||
gem "bundler", bundler_requirement | |||
end | |||
return if gem_error.nil? | |||
require_error = activation_error_handling do | |||
require "bundler/version" | |||
end | |||
return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION)) | |||
warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`" | |||
exit 42 | |||
end | |||
def activation_error_handling | |||
yield | |||
nil | |||
rescue StandardError, LoadError => e | |||
e | |||
end | |||
end | |||
m.load_bundler! | |||
if m.invoked_as_script? | |||
load Gem.bin_path("bundler", "bundle") | |||
end |
@@ -0,0 +1,9 @@ | |||
#!/usr/bin/env ruby | |||
begin | |||
load File.expand_path('../spring', __FILE__) | |||
rescue LoadError => e | |||
raise unless e.message.include?('spring') | |||
end | |||
APP_PATH = File.expand_path('../config/application', __dir__) | |||
require_relative '../config/boot' | |||
require 'rails/commands' |
@@ -0,0 +1,9 @@ | |||
#!/usr/bin/env ruby | |||
begin | |||
load File.expand_path('../spring', __FILE__) | |||
rescue LoadError => e | |||
raise unless e.message.include?('spring') | |||
end | |||
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,17 @@ | |||
#!/usr/bin/env ruby | |||
# This file loads Spring without using Bundler, in order to be fast. | |||
# It gets overwritten when you run the `spring binstub` command. | |||
unless defined?(Spring) | |||
require 'rubygems' | |||
require 'bundler' | |||
lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read) | |||
spring = lockfile.specs.detect { |spec| spec.name == 'spring' } | |||
if spring | |||
Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path | |||
gem 'spring', spring.version | |||
require 'spring/binstub' | |||
end | |||
end |
@@ -0,0 +1,18 @@ | |||
#!/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 "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,18 @@ | |||
#!/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 "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 SuperTextAdventure | |||
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: super_text_adventure_production |
@@ -0,0 +1 @@ | |||
UsP29wBk3zdIxG8I+ku0ESOQo08dJEE2+ka1++W85aB4om4DiPb8cRulbIuNB6Zb30HqU6uOjdl0BfDTh9N/WidfOUT5y6CJoGCCbMyaq3byfoG2qwqkWIyfimIURNzcb2tEsmEHnuSnQIeagpLrf9WqKoONRzgYznheVgnQleSeCRnXMHX8ykKTGQ+wFjav0DKRLJEZJIOZQQzMo7wsveqv2sUEGk5ugcIS39aq4T0Lag7WqrMI0riK+qaZyMM/widGqPpGWUhEvIxQdvEvTTzHLXyiAPtstyjvv9OEHVtN1fU/610xFEu1u10GveXFz8l1ZGo83Wm82dEoQNqqbUSzK6CYnZ94o9jBKxgKeGIc65j8GrHycyRxHTzQpinB8DY3JE7Z7Z24N71zk27l3m4JTSBqhP/sL0DP--0DV7gf2v2u2B47sQ--JzcrilUdSx6TlWM8dF2a0g== |
@@ -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: super_text_adventure_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: super_text_adventure | |||
# 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: super_text_adventure_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: super_text_adventure_production | |||
username: super_text_adventure | |||
password: <%= ENV['SUPER_TEXT_ADVENTURE_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 = "super_text_adventure_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,49 @@ | |||
# 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 | |||
config.action_view.cache_template_loading = true | |||
# 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,3 @@ | |||
Rails.application.routes.draw do | |||
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html | |||
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,96 @@ | |||
# 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: true | |||
# 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 | |||
pretty: 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,7 @@ | |||
# This file should contain all the record creation needed to seed the database with its default values. | |||
# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). | |||
# | |||
# Examples: | |||
# | |||
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) | |||
# Character.create(name: 'Luke', movie: movies.first) |
@@ -0,0 +1,16 @@ | |||
{ | |||
"name": "super_text_adventure", | |||
"private": true, | |||
"dependencies": { | |||
"@rails/actioncable": "^6.0.0", | |||
"@rails/activestorage": "^6.0.0", | |||
"@rails/ujs": "^6.0.0", | |||
"@rails/webpacker": "4.3.0", | |||
"stimulus": "^1.1.1", | |||
"turbolinks": "^5.2.0" | |||
}, | |||
"version": "0.1.0", | |||
"devDependencies": { | |||
"webpack-dev-server": "^3.11.0" | |||
} | |||
} |
@@ -0,0 +1,12 @@ | |||
module.exports = { | |||
plugins: [ | |||
require('postcss-import'), | |||
require('postcss-flexbugs-fixes'), | |||
require('postcss-preset-env')({ | |||
autoprefixer: { | |||
flexbox: 'no-2009' | |||
}, | |||
stage: 3 | |||
}) | |||
] | |||
} |
@@ -0,0 +1,67 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<title>The page you were looking for doesn't exist (404)</title> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<style> | |||
.rails-default-error-page { | |||
background-color: #EFEFEF; | |||
color: #2E2F30; | |||
text-align: center; | |||
font-family: arial, sans-serif; | |||
margin: 0; | |||
} | |||
.rails-default-error-page div.dialog { | |||
width: 95%; | |||
max-width: 33em; | |||
margin: 4em auto 0; | |||
} | |||
.rails-default-error-page div.dialog > div { | |||
border: 1px solid #CCC; | |||
border-right-color: #999; | |||
border-left-color: #999; | |||
border-bottom-color: #BBB; | |||
border-top: #B00100 solid 4px; | |||
border-top-left-radius: 9px; | |||
border-top-right-radius: 9px; | |||
background-color: white; | |||
padding: 7px 12% 0; | |||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
} | |||
.rails-default-error-page h1 { | |||
font-size: 100%; | |||
color: #730E15; | |||
line-height: 1.5em; | |||
} | |||
.rails-default-error-page div.dialog > p { | |||
margin: 0 0 1em; | |||
padding: 1em; | |||
background-color: #F7F7F7; | |||
border: 1px solid #CCC; | |||
border-right-color: #999; | |||
border-left-color: #999; | |||
border-bottom-color: #999; | |||
border-bottom-left-radius: 4px; | |||
border-bottom-right-radius: 4px; | |||
border-top-color: #DADADA; | |||
color: #666; | |||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
} | |||
</style> | |||
</head> | |||
<body class="rails-default-error-page"> | |||
<!-- This file lives in public/404.html --> | |||
<div class="dialog"> | |||
<div> | |||
<h1>The page you were looking for doesn't exist.</h1> | |||
<p>You may have mistyped the address or the page may have moved.</p> | |||
</div> | |||
<p>If you are the application owner check the logs for more information.</p> | |||
</div> | |||
</body> | |||
</html> |
@@ -0,0 +1,67 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<title>The change you wanted was rejected (422)</title> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<style> | |||
.rails-default-error-page { | |||
background-color: #EFEFEF; | |||
color: #2E2F30; | |||
text-align: center; | |||
font-family: arial, sans-serif; | |||
margin: 0; | |||
} | |||
.rails-default-error-page div.dialog { | |||
width: 95%; | |||
max-width: 33em; | |||
margin: 4em auto 0; | |||
} | |||
.rails-default-error-page div.dialog > div { | |||
border: 1px solid #CCC; | |||
border-right-color: #999; | |||
border-left-color: #999; | |||
border-bottom-color: #BBB; | |||
border-top: #B00100 solid 4px; | |||
border-top-left-radius: 9px; | |||
border-top-right-radius: 9px; | |||
background-color: white; | |||
padding: 7px 12% 0; | |||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
} | |||
.rails-default-error-page h1 { | |||
font-size: 100%; | |||
color: #730E15; | |||
line-height: 1.5em; | |||
} | |||
.rails-default-error-page div.dialog > p { | |||
margin: 0 0 1em; | |||
padding: 1em; | |||
background-color: #F7F7F7; | |||
border: 1px solid #CCC; | |||
border-right-color: #999; | |||
border-left-color: #999; | |||
border-bottom-color: #999; | |||
border-bottom-left-radius: 4px; | |||
border-bottom-right-radius: 4px; | |||
border-top-color: #DADADA; | |||
color: #666; | |||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
} | |||
</style> | |||
</head> | |||
<body class="rails-default-error-page"> | |||
<!-- This file lives in public/422.html --> | |||
<div class="dialog"> | |||
<div> | |||
<h1>The change you wanted was rejected.</h1> | |||
<p>Maybe you tried to change something you didn't have access to.</p> | |||
</div> | |||
<p>If you are the application owner check the logs for more information.</p> | |||
</div> | |||
</body> | |||
</html> |
@@ -0,0 +1,66 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<title>We're sorry, but something went wrong (500)</title> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<style> | |||
.rails-default-error-page { | |||
background-color: #EFEFEF; | |||
color: #2E2F30; | |||
text-align: center; | |||
font-family: arial, sans-serif; | |||
margin: 0; | |||
} | |||
.rails-default-error-page div.dialog { | |||
width: 95%; | |||
max-width: 33em; | |||
margin: 4em auto 0; | |||
} | |||
.rails-default-error-page div.dialog > div { | |||
border: 1px solid #CCC; | |||
border-right-color: #999; | |||
border-left-color: #999; | |||
border-bottom-color: #BBB; | |||
border-top: #B00100 solid 4px; | |||
border-top-left-radius: 9px; | |||
border-top-right-radius: 9px; | |||
background-color: white; | |||
padding: 7px 12% 0; | |||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
} | |||
.rails-default-error-page h1 { | |||
font-size: 100%; | |||
color: #730E15; | |||
line-height: 1.5em; | |||
} | |||
.rails-default-error-page div.dialog > p { | |||
margin: 0 0 1em; | |||
padding: 1em; | |||
background-color: #F7F7F7; | |||
border: 1px solid #CCC; | |||
border-right-color: #999; | |||
border-left-color: #999; | |||
border-bottom-color: #999; | |||
border-bottom-left-radius: 4px; | |||
border-bottom-right-radius: 4px; | |||
border-top-color: #DADADA; | |||
color: #666; | |||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
} | |||
</style> | |||
</head> | |||
<body class="rails-default-error-page"> | |||
<!-- This file lives in public/500.html --> | |||
<div class="dialog"> | |||
<div> | |||
<h1>We're sorry, but something went wrong.</h1> | |||
</div> | |||
<p>If you are the application owner check the logs for more information.</p> | |||
</div> | |||
</body> | |||
</html> |
@@ -0,0 +1 @@ | |||
# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file |
@@ -0,0 +1,5 @@ | |||
require "test_helper" | |||
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase | |||
driven_by :selenium, using: :chrome, screen_size: [1400, 1400] | |||
end |
@@ -0,0 +1,11 @@ | |||
require "test_helper" | |||
class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase | |||
# test "connects with cookies" do | |||
# cookies.signed[:user_id] = 42 | |||
# | |||
# connect | |||
# | |||
# assert_equal connection.user_id, "42" | |||
# end | |||
end |
@@ -0,0 +1,13 @@ | |||
ENV['RAILS_ENV'] ||= 'test' | |||
require_relative '../config/environment' | |||
require 'rails/test_help' | |||
class ActiveSupport::TestCase | |||
# Run tests in parallel with specified workers | |||
parallelize(workers: :number_of_processors) | |||
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. | |||
fixtures :all | |||
# Add more helper methods to be used by all tests here... | |||
end |