rails new \ --skip-action-cable \ --skip-hotwire \ --skip-jbuilder \ --skip-system-test \ -a propshaft \ --database=postgresql .main
parent
d1a8df249a
commit
46881d72bf
68 changed files with 1130 additions and 4 deletions
@ -0,0 +1,7 @@ |
||||
# See https://git-scm.com/docs/gitattributes for more about git attribute files. |
||||
|
||||
# Mark the database schema as having been generated. |
||||
db/schema.rb linguist-generated |
||||
|
||||
# Mark any vendored files as having been vendored. |
||||
vendor/* linguist-vendored |
@ -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 pidfiles, but keep the directory. |
||||
/tmp/pids/* |
||||
!/tmp/pids/ |
||||
!/tmp/pids/.keep |
||||
|
||||
# Ignore uploaded files in development. |
||||
/storage/* |
||||
!/storage/.keep |
||||
/tmp/storage/* |
||||
!/tmp/storage/ |
||||
!/tmp/storage/.keep |
||||
|
||||
/public/assets |
||||
|
||||
# Ignore master key for decrypting credentials and more. |
||||
/config/master.key |
@ -0,0 +1 @@ |
||||
ruby-3.1.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 @@ |
||||
/* Application styles */ |
@ -0,0 +1,2 @@ |
||||
class ApplicationController < ActionController::Base |
||||
end |
@ -0,0 +1,2 @@ |
||||
module ApplicationHelper |
||||
end |
@ -0,0 +1 @@ |
||||
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
|
@ -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 |
||||
primary_abstract_class |
||||
end |
@ -0,0 +1,16 @@ |
||||
<!DOCTYPE html> |
||||
<html> |
||||
<head> |
||||
<title>Saucy</title> |
||||
<meta name="viewport" content="width=device-width,initial-scale=1"> |
||||
<%= csrf_meta_tags %> |
||||
<%= csp_meta_tag %> |
||||
|
||||
<%= stylesheet_link_tag "application" %> |
||||
<%= javascript_importmap_tags %> |
||||
</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,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", __dir__) |
||||
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_requirement |
||||
@bundler_requirement ||= |
||||
env_var_version || cli_arg_version || |
||||
bundler_requirement_for(lockfile_version) |
||||
end |
||||
|
||||
def bundler_requirement_for(version) |
||||
return "#{Gem::Requirement.default}.a" unless version |
||||
|
||||
bundler_gem_version = Gem::Version.new(version) |
||||
|
||||
requirement = bundler_gem_version.approximate_recommendation |
||||
|
||||
return requirement unless Gem.rubygems_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,4 @@ |
||||
#!/usr/bin/env ruby |
||||
|
||||
require_relative "../config/application" |
||||
require "importmap/commands" |
@ -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,33 @@ |
||||
#!/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 set up or update your development environment automatically. |
||||
# This script is idempotent, so that you can run it at any time 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") |
||||
|
||||
# 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,6 @@ |
||||
# This file is used by Rack-based servers to start the application. |
||||
|
||||
require_relative "config/environment" |
||||
|
||||
run Rails.application |
||||
Rails.application.load_server |
@ -0,0 +1,37 @@ |
||||
require_relative "boot" |
||||
|
||||
require "rails" |
||||
# Pick the frameworks you want: |
||||
require "active_model/railtie" |
||||
require "active_job/railtie" |
||||
require "active_record/railtie" |
||||
require "active_storage/engine" |
||||
require "action_controller/railtie" |
||||
require "action_mailer/railtie" |
||||
require "action_mailbox/engine" |
||||
require "action_text/engine" |
||||
require "action_view/railtie" |
||||
# require "action_cable/engine" |
||||
require "rails/test_unit/railtie" |
||||
|
||||
# Require the gems listed in Gemfile, including any gems |
||||
# you've limited to :test, :development, or :production. |
||||
Bundler.require(*Rails.groups) |
||||
|
||||
module Saucy |
||||
class Application < Rails::Application |
||||
# Initialize configuration defaults for originally generated Rails version. |
||||
config.load_defaults 7.0 |
||||
|
||||
# Configuration for the application, engines, and railties goes here. |
||||
# |
||||
# These settings can be overridden in specific environments using the files |
||||
# in config/environments, which are processed later. |
||||
# |
||||
# config.time_zone = "Central Time (US & Canada)" |
||||
# config.eager_load_paths << Rails.root.join("extras") |
||||
|
||||
# Don't generate system test files. |
||||
config.generators.system_tests = nil |
||||
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 @@ |
||||
sRN6yMNzxi8euuK2Ib5z/VZf+YQG/39eKOpplfJ03FxMqmUtFn0vQJsdanWJo5i+qvjmldBWKZPAkQcQIRjRDs6AP5Vt7nXV0nd30qvnQ2nbrW/1ik6ceFYsbK/wq06QVBQTtfVZz0JuvICP0sBGlsyiC4etM+RHV5XSzXkqh127cRJOllvaAnjArYM0wK9dQcSCUQaOTD6ceV9qybDD3l5Sp8U91YAnC5UHDeX90WU1+h8mVJ5QW4BUD9dMeoWavEjTn6XL5GJbVuGjV/GQ5IT9GpDChHL43ddCpBa0kmUEBbQ68M72c/7CwC1nEHuegvV0XaDs5zDnUD2d28O+xLpDiU7Mg2aypxalVN7M+ShrP44RHtj5AWVDq6Pg/wqf2K8V7vMg0OAP4yA+rMQuZsKDfv3NsAPrfsmX--PWKxDSJUd4T9BXW2--vjnS7cULf/phpwWqqyDwug== |
@ -0,0 +1,86 @@ |
||||
# 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: saucy_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 running Rails. |
||||
#username: saucy |
||||
|
||||
# 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: saucy_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 or a full connection URL as an environment |
||||
# variable when you boot the app. For example: |
||||
# |
||||
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" |
||||
# |
||||
# If the connection URL is provided in the special DATABASE_URL environment |
||||
# variable, Rails will automatically merge its configuration values on top of |
||||
# the values provided in this file. Alternatively, you can specify a connection |
||||
# URL environment variable explicitly: |
||||
# |
||||
# production: |
||||
# url: <%= ENV["MY_APP_DATABASE_URL"] %> |
||||
# |
||||
# Read https://guides.rubyonrails.org/configuring.html#configuring-a-database |
||||
# for a full overview on how database connection configuration can be specified. |
||||
# |
||||
production: |
||||
<<: *default |
||||
database: saucy_production |
||||
username: saucy |
||||
password: <%= ENV["SAUCY_DATABASE_PASSWORD"] %> |
@ -0,0 +1,5 @@ |
||||
# Load the Rails application. |
||||
require_relative "application" |
||||
|
||||
# Initialize the Rails application. |
||||
Rails.application.initialize! |
@ -0,0 +1,68 @@ |
||||
require "active_support/core_ext/integer/time" |
||||
|
||||
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 any time |
||||
# it changes. 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 server timing |
||||
config.server_timing = 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 exceptions for disallowed deprecations. |
||||
config.active_support.disallowed_deprecation = :raise |
||||
|
||||
# Tell Active Support which deprecation messages to disallow. |
||||
config.active_support.disallowed_deprecation_warnings = [] |
||||
|
||||
# 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 |
||||
|
||||
|
||||
# Raises error for missing translations. |
||||
# config.i18n.raise_on_missing_translations = true |
||||
|
||||
# Annotate rendered view with file names. |
||||
# config.action_view.annotate_rendered_view_with_filenames = true |
||||
|
||||
# Uncomment if you wish to allow Action Cable access from any origin. |
||||
# config.action_cable.disable_request_forgery_protection = true |
||||
end |
@ -0,0 +1,82 @@ |
||||
require "active_support/core_ext/integer/time" |
||||
|
||||
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? |
||||
|
||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server. |
||||
# config.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 |
||||
|
||||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. |
||||
# config.force_ssl = true |
||||
|
||||
# Include generic and useful information about system operation, but avoid logging too much |
||||
# information to avoid inadvertent exposure of personally identifiable information (PII). |
||||
config.log_level = :info |
||||
|
||||
# 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 = "saucy_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 |
||||
|
||||
# Don't log any deprecations. |
||||
config.active_support.report_deprecations = false |
||||
|
||||
# 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 |
||||
end |
@ -0,0 +1,60 @@ |
||||
require "active_support/core_ext/integer/time" |
||||
|
||||
# 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. |
||||
|
||||
# Turn false under Spring and add config.action_view.cache_template_loading = true. |
||||
config.cache_classes = true |
||||
|
||||
# Eager loading loads your whole application. When running a single test locally, |
||||
# this probably isn't necessary. It's a good idea to do in a continuous integration |
||||
# system, or in some way before deploying your code. |
||||
config.eager_load = ENV["CI"].present? |
||||
|
||||
# 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 |
||||
|
||||
# Raise exceptions for disallowed deprecations. |
||||
config.active_support.disallowed_deprecation = :raise |
||||
|
||||
# Tell Active Support which deprecation messages to disallow. |
||||
config.active_support.disallowed_deprecation_warnings = [] |
||||
|
||||
# Raises error for missing translations. |
||||
# config.i18n.raise_on_missing_translations = true |
||||
|
||||
# Annotate rendered view with file names. |
||||
# config.action_view.annotate_rendered_view_with_filenames = true |
||||
end |
@ -0,0 +1,3 @@ |
||||
# Pin npm packages by running ./bin/importmap |
||||
|
||||
pin "application", preload: true |
@ -0,0 +1,12 @@ |
||||
# 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 |
||||
|
||||
# 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,25 @@ |
||||
# Be sure to restart your server when you modify this file. |
||||
|
||||
# Define an application-wide content security policy. |
||||
# See the Securing Rails Applications Guide for more information: |
||||
# https://guides.rubyonrails.org/security.html#content-security-policy-header |
||||
|
||||
# Rails.application.configure do |
||||
# 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 |
||||
# # Specify URI for violation reports |
||||
# # policy.report_uri "/csp-violation-report-endpoint" |
||||
# end |
||||
# |
||||
# # Generate session nonces for permitted importmap and inline scripts |
||||
# config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s } |
||||
# config.content_security_policy_nonce_directives = %w(script-src) |
||||
# |
||||
# # Report violations without enforcing the policy. |
||||
# # config.content_security_policy_report_only = true |
||||
# end |
@ -0,0 +1,8 @@ |
||||
# Be sure to restart your server when you modify this file. |
||||
|
||||
# Configure parameters to be filtered from the log file. Use this to limit dissemination of |
||||
# sensitive information. See the ActiveSupport::ParameterFilter documentation for supported |
||||
# notations and behaviors. |
||||
Rails.application.config.filter_parameters += [ |
||||
:passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn |
||||
] |
@ -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,11 @@ |
||||
# Define an application-wide HTTP permissions policy. For further |
||||
# information see https://developers.google.com/web/updates/2018/06/feature-policy |
||||
# |
||||
# Rails.application.config.permissions_policy do |f| |
||||
# f.camera :none |
||||
# f.gyroscope :none |
||||
# f.microphone :none |
||||
# f.usb :none |
||||
# f.fullscreen :self |
||||
# f.payment :self, "https://secure.example.com" |
||||
# 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,43 @@ |
||||
# 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 `worker_timeout` threshold that Puma will use to wait before |
||||
# terminating a worker in development environments. |
||||
# |
||||
worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" |
||||
|
||||
# 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 `bin/rails restart` command. |
||||
plugin :tmp_restart |
@ -0,0 +1,6 @@ |
||||
Rails.application.routes.draw do |
||||
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html |
||||
|
||||
# Defines the root path route ("/") |
||||
# root "articles#index" |
||||
end |
@ -0,0 +1,34 @@ |
||||
test: |
||||
service: Disk |
||||
root: <%= Rails.root.join("tmp/storage") %> |
||||
|
||||
local: |
||||
service: Disk |
||||
root: <%= Rails.root.join("storage") %> |
||||
|
||||
# Use bin/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-<%= Rails.env %> |
||||
|
||||
# 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-<%= Rails.env %> |
||||
|
||||
# Use bin/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-<%= Rails.env %> |
||||
|
||||
# mirror: |
||||
# service: Mirror |
||||
# primary: local |
||||
# mirrors: [ amazon, google, microsoft ] |
@ -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 bin/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,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,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 |
Loading…
Reference in new issue