Commit d650a670afb63694a3ef7f844a23c920d177e9b5

Authored by Samson Rollo Jr
1 parent ce8aca96

OJT21-52: Init base api

  1 +# See https://git-scm.com/docs/gitattributes for more about git attribute files.
  2 +
  3 +# Mark the database schema as having been generated.
  4 +db/schema.rb linguist-generated
  5 +
  6 +
  7 +# Mark any vendored files as having been vendored.
  8 +vendor/* linguist-vendored
  1 +# See https://help.github.com/articles/ignoring-files for more about ignoring files.
  2 +#
  3 +# If you find yourself ignoring temporary files generated by your text editor
  4 +# or operating system, you probably want to add a global ignore instead:
  5 +# git config --global core.excludesfile '~/.gitignore_global'
  6 +
  7 +# Ignore bundler config.
  8 +/.bundle
  9 +
  10 +# Ignore all logfiles and tempfiles.
  11 +/log/*
  12 +/tmp/*
  13 +!/log/.keep
  14 +!/tmp/.keep
  15 +
  16 +# Ignore pidfiles, but keep the directory.
  17 +/tmp/pids/*
  18 +!/tmp/pids/
  19 +!/tmp/pids/.keep
  20 +
  21 +# Ignore uploaded files in development.
  22 +/storage/*
  23 +!/storage/.keep
  24 +.byebug_history
  25 +
  26 +# Ignore master key for decrypting credentials and more.
  27 +/config/master.key
  1 +2.7.3
  1 +source 'https://rubygems.org'
  2 +git_source(:github) { |repo| "https://github.com/#{repo}.git" }
  3 +
  4 +ruby '2.7.3'
  5 +
  6 +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
  7 +gem 'rails', '~> 6.1.4'
  8 +# Use mysql as the database for Active Record
  9 +gem 'mysql2', '~> 0.5'
  10 +# Use Puma as the app server
  11 +gem 'puma', '~> 5.0'
  12 +# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
  13 +# gem 'jbuilder', '~> 2.7'
  14 +# Use Redis adapter to run Action Cable in production
  15 +# gem 'redis', '~> 4.0'
  16 +# Use Active Model has_secure_password
  17 +# gem 'bcrypt', '~> 3.1.7'
  18 +
  19 +# Use Active Storage variant
  20 +# gem 'image_processing', '~> 1.2'
  21 +
  22 +# Reduces boot times through caching; required in config/boot.rb
  23 +gem 'bootsnap', '>= 1.4.4', require: false
  24 +
  25 +# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible
  26 +# gem 'rack-cors'
  27 +
  28 +group :development, :test do
  29 + # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  30 + gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  31 +end
  32 +
  33 +group :development do
  34 + gem 'listen', '~> 3.3'
  35 + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  36 + gem 'spring'
  37 +end
  38 +
  39 +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
  40 +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
  1 +GEM
  2 + remote: https://rubygems.org/
  3 + specs:
  4 + actioncable (6.1.4)
  5 + actionpack (= 6.1.4)
  6 + activesupport (= 6.1.4)
  7 + nio4r (~> 2.0)
  8 + websocket-driver (>= 0.6.1)
  9 + actionmailbox (6.1.4)
  10 + actionpack (= 6.1.4)
  11 + activejob (= 6.1.4)
  12 + activerecord (= 6.1.4)
  13 + activestorage (= 6.1.4)
  14 + activesupport (= 6.1.4)
  15 + mail (>= 2.7.1)
  16 + actionmailer (6.1.4)
  17 + actionpack (= 6.1.4)
  18 + actionview (= 6.1.4)
  19 + activejob (= 6.1.4)
  20 + activesupport (= 6.1.4)
  21 + mail (~> 2.5, >= 2.5.4)
  22 + rails-dom-testing (~> 2.0)
  23 + actionpack (6.1.4)
  24 + actionview (= 6.1.4)
  25 + activesupport (= 6.1.4)
  26 + rack (~> 2.0, >= 2.0.9)
  27 + rack-test (>= 0.6.3)
  28 + rails-dom-testing (~> 2.0)
  29 + rails-html-sanitizer (~> 1.0, >= 1.2.0)
  30 + actiontext (6.1.4)
  31 + actionpack (= 6.1.4)
  32 + activerecord (= 6.1.4)
  33 + activestorage (= 6.1.4)
  34 + activesupport (= 6.1.4)
  35 + nokogiri (>= 1.8.5)
  36 + actionview (6.1.4)
  37 + activesupport (= 6.1.4)
  38 + builder (~> 3.1)
  39 + erubi (~> 1.4)
  40 + rails-dom-testing (~> 2.0)
  41 + rails-html-sanitizer (~> 1.1, >= 1.2.0)
  42 + activejob (6.1.4)
  43 + activesupport (= 6.1.4)
  44 + globalid (>= 0.3.6)
  45 + activemodel (6.1.4)
  46 + activesupport (= 6.1.4)
  47 + activerecord (6.1.4)
  48 + activemodel (= 6.1.4)
  49 + activesupport (= 6.1.4)
  50 + activestorage (6.1.4)
  51 + actionpack (= 6.1.4)
  52 + activejob (= 6.1.4)
  53 + activerecord (= 6.1.4)
  54 + activesupport (= 6.1.4)
  55 + marcel (~> 1.0.0)
  56 + mini_mime (>= 1.1.0)
  57 + activesupport (6.1.4)
  58 + concurrent-ruby (~> 1.0, >= 1.0.2)
  59 + i18n (>= 1.6, < 2)
  60 + minitest (>= 5.1)
  61 + tzinfo (~> 2.0)
  62 + zeitwerk (~> 2.3)
  63 + bootsnap (1.7.6)
  64 + msgpack (~> 1.0)
  65 + builder (3.2.4)
  66 + byebug (11.1.3)
  67 + concurrent-ruby (1.1.9)
  68 + crass (1.0.6)
  69 + erubi (1.10.0)
  70 + ffi (1.15.3)
  71 + globalid (0.5.1)
  72 + activesupport (>= 5.0)
  73 + i18n (1.8.10)
  74 + concurrent-ruby (~> 1.0)
  75 + listen (3.6.0)
  76 + rb-fsevent (~> 0.10, >= 0.10.3)
  77 + rb-inotify (~> 0.9, >= 0.9.10)
  78 + loofah (2.10.0)
  79 + crass (~> 1.0.2)
  80 + nokogiri (>= 1.5.9)
  81 + mail (2.7.1)
  82 + mini_mime (>= 0.1.1)
  83 + marcel (1.0.1)
  84 + method_source (1.0.0)
  85 + mini_mime (1.1.0)
  86 + mini_portile2 (2.5.3)
  87 + minitest (5.14.4)
  88 + msgpack (1.4.2)
  89 + mysql2 (0.5.3)
  90 + nio4r (2.5.7)
  91 + nokogiri (1.11.7)
  92 + mini_portile2 (~> 2.5.0)
  93 + racc (~> 1.4)
  94 + puma (5.4.0)
  95 + nio4r (~> 2.0)
  96 + racc (1.5.2)
  97 + rack (2.2.3)
  98 + rack-test (1.1.0)
  99 + rack (>= 1.0, < 3)
  100 + rails (6.1.4)
  101 + actioncable (= 6.1.4)
  102 + actionmailbox (= 6.1.4)
  103 + actionmailer (= 6.1.4)
  104 + actionpack (= 6.1.4)
  105 + actiontext (= 6.1.4)
  106 + actionview (= 6.1.4)
  107 + activejob (= 6.1.4)
  108 + activemodel (= 6.1.4)
  109 + activerecord (= 6.1.4)
  110 + activestorage (= 6.1.4)
  111 + activesupport (= 6.1.4)
  112 + bundler (>= 1.15.0)
  113 + railties (= 6.1.4)
  114 + sprockets-rails (>= 2.0.0)
  115 + rails-dom-testing (2.0.3)
  116 + activesupport (>= 4.2.0)
  117 + nokogiri (>= 1.6)
  118 + rails-html-sanitizer (1.3.0)
  119 + loofah (~> 2.3)
  120 + railties (6.1.4)
  121 + actionpack (= 6.1.4)
  122 + activesupport (= 6.1.4)
  123 + method_source
  124 + rake (>= 0.13)
  125 + thor (~> 1.0)
  126 + rake (13.0.6)
  127 + rb-fsevent (0.11.0)
  128 + rb-inotify (0.10.1)
  129 + ffi (~> 1.0)
  130 + spring (2.1.1)
  131 + sprockets (4.0.2)
  132 + concurrent-ruby (~> 1.0)
  133 + rack (> 1, < 3)
  134 + sprockets-rails (3.2.2)
  135 + actionpack (>= 4.0)
  136 + activesupport (>= 4.0)
  137 + sprockets (>= 3.0.0)
  138 + thor (1.1.0)
  139 + tzinfo (2.0.4)
  140 + concurrent-ruby (~> 1.0)
  141 + websocket-driver (0.7.5)
  142 + websocket-extensions (>= 0.1.0)
  143 + websocket-extensions (0.1.5)
  144 + zeitwerk (2.4.2)
  145 +
  146 +PLATFORMS
  147 + ruby
  148 +
  149 +DEPENDENCIES
  150 + bootsnap (>= 1.4.4)
  151 + byebug
  152 + listen (~> 3.3)
  153 + mysql2 (~> 0.5)
  154 + puma (~> 5.0)
  155 + rails (~> 6.1.4)
  156 + spring
  157 + tzinfo-data
  158 +
  159 +RUBY VERSION
  160 + ruby 2.7.3p183
  161 +
  162 +BUNDLED WITH
  163 + 2.1.4
  1 +# README
  2 +
  3 +For development, add your credentials to mysql_accout.rb in config.
  1 +# Add your own tasks in files placed in lib/tasks ending in .rake,
  2 +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
  3 +
  4 +require_relative "config/application"
  5 +
  6 +Rails.application.load_tasks
  1 +module ApplicationCable
  2 + class Channel < ActionCable::Channel::Base
  3 + end
  4 +end
  1 +module ApplicationCable
  2 + class Connection < ActionCable::Connection::Base
  3 + end
  4 +end
  1 +class ApplicationController < ActionController::API
  2 +end
  1 +class ApplicationJob < ActiveJob::Base
  2 + # Automatically retry jobs that encountered a deadlock
  3 + # retry_on ActiveRecord::Deadlocked
  4 +
  5 + # Most jobs are safe to ignore if the underlying records are no longer available
  6 + # discard_on ActiveJob::DeserializationError
  7 +end
  1 +class ApplicationMailer < ActionMailer::Base
  2 + default from: 'from@example.com'
  3 + layout 'mailer'
  4 +end
  1 +class ApplicationRecord < ActiveRecord::Base
  2 + self.abstract_class = true
  3 +end
  1 +<!DOCTYPE html>
  2 +<html>
  3 + <head>
  4 + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5 + <style>
  6 + /* Email styles need to be inline */
  7 + </style>
  8 + </head>
  9 +
  10 + <body>
  11 + <%= yield %>
  12 + </body>
  13 +</html>
  1 +#!/usr/bin/env ruby
  2 +# frozen_string_literal: true
  3 +
  4 +#
  5 +# This file was generated by Bundler.
  6 +#
  7 +# The application 'bundle' is installed as part of a gem, and
  8 +# this file is here to facilitate running it.
  9 +#
  10 +
  11 +require "rubygems"
  12 +
  13 +m = Module.new do
  14 + module_function
  15 +
  16 + def invoked_as_script?
  17 + File.expand_path($0) == File.expand_path(__FILE__)
  18 + end
  19 +
  20 + def env_var_version
  21 + ENV["BUNDLER_VERSION"]
  22 + end
  23 +
  24 + def cli_arg_version
  25 + return unless invoked_as_script? # don't want to hijack other binstubs
  26 + return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
  27 + bundler_version = nil
  28 + update_index = nil
  29 + ARGV.each_with_index do |a, i|
  30 + if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
  31 + bundler_version = a
  32 + end
  33 + next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
  34 + bundler_version = $1
  35 + update_index = i
  36 + end
  37 + bundler_version
  38 + end
  39 +
  40 + def gemfile
  41 + gemfile = ENV["BUNDLE_GEMFILE"]
  42 + return gemfile if gemfile && !gemfile.empty?
  43 +
  44 + File.expand_path("../../Gemfile", __FILE__)
  45 + end
  46 +
  47 + def lockfile
  48 + lockfile =
  49 + case File.basename(gemfile)
  50 + when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
  51 + else "#{gemfile}.lock"
  52 + end
  53 + File.expand_path(lockfile)
  54 + end
  55 +
  56 + def lockfile_version
  57 + return unless File.file?(lockfile)
  58 + lockfile_contents = File.read(lockfile)
  59 + return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
  60 + Regexp.last_match(1)
  61 + end
  62 +
  63 + def bundler_version
  64 + @bundler_version ||=
  65 + env_var_version || cli_arg_version ||
  66 + lockfile_version
  67 + end
  68 +
  69 + def bundler_requirement
  70 + return "#{Gem::Requirement.default}.a" unless bundler_version
  71 +
  72 + bundler_gem_version = Gem::Version.new(bundler_version)
  73 +
  74 + requirement = bundler_gem_version.approximate_recommendation
  75 +
  76 + return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.7.0")
  77 +
  78 + requirement += ".a" if bundler_gem_version.prerelease?
  79 +
  80 + requirement
  81 + end
  82 +
  83 + def load_bundler!
  84 + ENV["BUNDLE_GEMFILE"] ||= gemfile
  85 +
  86 + activate_bundler
  87 + end
  88 +
  89 + def activate_bundler
  90 + gem_error = activation_error_handling do
  91 + gem "bundler", bundler_requirement
  92 + end
  93 + return if gem_error.nil?
  94 + require_error = activation_error_handling do
  95 + require "bundler/version"
  96 + end
  97 + return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
  98 + 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}'`"
  99 + exit 42
  100 + end
  101 +
  102 + def activation_error_handling
  103 + yield
  104 + nil
  105 + rescue StandardError, LoadError => e
  106 + e
  107 + end
  108 +end
  109 +
  110 +m.load_bundler!
  111 +
  112 +if m.invoked_as_script?
  113 + load Gem.bin_path("bundler", "bundle")
  114 +end
  1 +#!/usr/bin/env ruby
  2 +load File.expand_path("spring", __dir__)
  3 +APP_PATH = File.expand_path('../config/application', __dir__)
  4 +require_relative "../config/boot"
  5 +require "rails/commands"
  1 +#!/usr/bin/env ruby
  2 +load File.expand_path("spring", __dir__)
  3 +require_relative "../config/boot"
  4 +require "rake"
  5 +Rake.application.run
  1 +#!/usr/bin/env ruby
  2 +require "fileutils"
  3 +
  4 +# path to your application root.
  5 +APP_ROOT = File.expand_path('..', __dir__)
  6 +
  7 +def system!(*args)
  8 + system(*args) || abort("\n== Command #{args} failed ==")
  9 +end
  10 +
  11 +FileUtils.chdir APP_ROOT do
  12 + # This script is a way to set up or update your development environment automatically.
  13 + # This script is idempotent, so that you can run it at any time and get an expectable outcome.
  14 + # Add necessary setup steps to this file.
  15 +
  16 + puts '== Installing dependencies =='
  17 + system! 'gem install bundler --conservative'
  18 + system('bundle check') || system!('bundle install')
  19 +
  20 + # puts "\n== Copying sample files =="
  21 + # unless File.exist?('config/database.yml')
  22 + # FileUtils.cp 'config/database.yml.sample', 'config/database.yml'
  23 + # end
  24 +
  25 + puts "\n== Preparing database =="
  26 + system! 'bin/rails db:prepare'
  27 +
  28 + puts "\n== Removing old logs and tempfiles =="
  29 + system! 'bin/rails log:clear tmp:clear'
  30 +
  31 + puts "\n== Restarting application server =="
  32 + system! 'bin/rails restart'
  33 +end
  1 +#!/usr/bin/env ruby
  2 +if !defined?(Spring) && [nil, "development", "test"].include?(ENV["RAILS_ENV"])
  3 + gem "bundler"
  4 + require "bundler"
  5 +
  6 + # Load Spring without loading other gems in the Gemfile, for speed.
  7 + Bundler.locked_gems&.specs&.find { |spec| spec.name == "spring" }&.tap do |spring|
  8 + Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
  9 + gem "spring", spring.version
  10 + require "spring/binstub"
  11 + rescue Gem::LoadError
  12 + # Ignore when Spring is not installed.
  13 + end
  14 +end
  1 +# This file is used by Rack-based servers to start the application.
  2 +
  3 +require_relative "config/environment"
  4 +
  5 +run Rails.application
  6 +Rails.application.load_server
  1 +require_relative "boot"
  2 +
  3 +require "rails"
  4 +# Pick the frameworks you want:
  5 +require "active_model/railtie"
  6 +require "active_job/railtie"
  7 +require "active_record/railtie"
  8 +require "active_storage/engine"
  9 +require "action_controller/railtie"
  10 +require "action_mailer/railtie"
  11 +require "action_mailbox/engine"
  12 +require "action_text/engine"
  13 +require "action_view/railtie"
  14 +require "action_cable/engine"
  15 +# require "sprockets/railtie"
  16 +require "rails/test_unit/railtie"
  17 +
  18 +# Require the gems listed in Gemfile, including any gems
  19 +# you've limited to :test, :development, or :production.
  20 +Bundler.require(*Rails.groups)
  21 +
  22 +module AutoLogsApi
  23 + class Application < Rails::Application
  24 + # Initialize configuration defaults for originally generated Rails version.
  25 + config.load_defaults 6.1
  26 +
  27 + # Configuration for the application, engines, and railties goes here.
  28 + #
  29 + # These settings can be overridden in specific environments using the files
  30 + # in config/environments, which are processed later.
  31 + #
  32 + # config.time_zone = "Central Time (US & Canada)"
  33 + # config.eager_load_paths << Rails.root.join("extras")
  34 +
  35 + # Only loads a smaller set of middleware suitable for API only apps.
  36 + # Middleware like session, flash, cookies can be added back manually.
  37 + # Skip views, helpers and assets when generating a new resource.
  38 + config.api_only = true
  39 + end
  40 +end
  1 +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
  2 +
  3 +require "bundler/setup" # Set up gems listed in the Gemfile.
  4 +require "bootsnap/setup" # Speed up boot time by caching expensive operations.
  1 +development:
  2 + adapter: async
  3 +
  4 +test:
  5 + adapter: test
  6 +
  7 +production:
  8 + adapter: redis
  9 + url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
  10 + channel_prefix: auto_logs_api_production
  1 +LWOcKHeBGGdhooYYyiU/wNUl8dWJ1vHqQxe58f7S94mplWispGfBgZIQ8+X2/oJFd4qpfWPiiX9zKF91ttpAIewJkK/58vE8OA/XAVOG9jpCjT661gzqMfhPEBXs3LSBCaYOojJd3aA4hvU1X8VvuXif2R+yb29OOW/bBrcnMlOtT17xfPiqKnYxy3CuS7uR46+VJu595DcWkD6k3Wg9tLV3EwNikf4W61JWn+6+O8l5gkNnGAKtNN1xkwM0LZ6G5JsCEimNj5sTGBU2MOc//2Acr56dI33fOK35mm/Mwiqrsn05So7EgPn7kdiur60EV7lqblUEAmUNi0EyKzjbCGrU+zfTWIdYRmmfd6R3ZbFm6gYj46l6ourBn9eKCaFF1lfh1wb2jPiEewNGaJ4623OiRwYIe0WHcjLm--hkqI8JvKWw200mH6--aFZWp+XZa77bZhfoM4GB/w==
  1 +# MySQL. Versions 5.5.8 and up are supported.
  2 +#
  3 +# Install the MySQL driver
  4 +# gem install mysql2
  5 +#
  6 +# Ensure the MySQL gem is defined in your Gemfile
  7 +# gem 'mysql2'
  8 +#
  9 +# And be sure to use new-style password hashing:
  10 +# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
  11 +#
  12 +default: &default
  13 + adapter: mysql2
  14 + encoding: utf8mb4
  15 + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  16 + username: <%= ENV['MYSQL_USERNAME']%>
  17 + password: <%= ENV['MYSQL_PASSWORD']%>
  18 + socket: /var/run/mysqld/mysqld.sock
  19 +
  20 +development:
  21 + <<: *default
  22 + database: auto_logs_api_development
  23 +
  24 +# Warning: The database defined as "test" will be erased and
  25 +# re-generated from your development database when you run "rake".
  26 +# Do not set this db to the same as development or production.
  27 +test:
  28 + <<: *default
  29 + database: auto_logs_api_test
  30 +
  31 +# As with config/credentials.yml, you never want to store sensitive information,
  32 +# like your database password, in your source code. If your source code is
  33 +# ever seen by anyone, they now have access to your database.
  34 +#
  35 +# Instead, provide the password or a full connection URL as an environment
  36 +# variable when you boot the app. For example:
  37 +#
  38 +# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
  39 +#
  40 +# If the connection URL is provided in the special DATABASE_URL environment
  41 +# variable, Rails will automatically merge its configuration values on top of
  42 +# the values provided in this file. Alternatively, you can specify a connection
  43 +# URL environment variable explicitly:
  44 +#
  45 +# production:
  46 +# url: <%= ENV['MY_APP_DATABASE_URL'] %>
  47 +#
  48 +# Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
  49 +# for a full overview on how database connection configuration can be specified.
  50 +#
  51 +production:
  52 + <<: *default
  53 + database: auto_logs_api_production
  54 + username: auto_logs_api
  55 + password: <%= ENV['AUTO_LOGS_API_DATABASE_PASSWORD'] %>
  1 +# Load the Rails application.
  2 +require_relative "application"
  3 +
  4 +# Load the app's custom environment variables here, so that they are loaded before environments/*.rb
  5 +mysql_account = File.join(Rails.root, 'config', 'mysql_account.rb')
  6 +load(mysql_account) if File.exist?(mysql_account)
  7 +
  8 +# Initialize the Rails application.
  9 +Rails.application.initialize!
  1 +require "active_support/core_ext/integer/time"
  2 +
  3 +Rails.application.configure do
  4 + # Settings specified here will take precedence over those in config/application.rb.
  5 +
  6 + # In the development environment your application's code is reloaded any time
  7 + # it changes. This slows down response time but is perfect for development
  8 + # since you don't have to restart the web server when you make code changes.
  9 + config.cache_classes = false
  10 +
  11 + # Do not eager load code on boot.
  12 + config.eager_load = false
  13 +
  14 + # Show full error reports.
  15 + config.consider_all_requests_local = true
  16 +
  17 + # Enable/disable caching. By default caching is disabled.
  18 + # Run rails dev:cache to toggle caching.
  19 + if Rails.root.join('tmp', 'caching-dev.txt').exist?
  20 + config.cache_store = :memory_store
  21 + config.public_file_server.headers = {
  22 + 'Cache-Control' => "public, max-age=#{2.days.to_i}"
  23 + }
  24 + else
  25 + config.action_controller.perform_caching = false
  26 +
  27 + config.cache_store = :null_store
  28 + end
  29 +
  30 + # Store uploaded files on the local file system (see config/storage.yml for options).
  31 + config.active_storage.service = :local
  32 +
  33 + # Don't care if the mailer can't send.
  34 + config.action_mailer.raise_delivery_errors = false
  35 +
  36 + config.action_mailer.perform_caching = false
  37 +
  38 + # Print deprecation notices to the Rails logger.
  39 + config.active_support.deprecation = :log
  40 +
  41 + # Raise exceptions for disallowed deprecations.
  42 + config.active_support.disallowed_deprecation = :raise
  43 +
  44 + # Tell Active Support which deprecation messages to disallow.
  45 + config.active_support.disallowed_deprecation_warnings = []
  46 +
  47 + # Raise an error on page load if there are pending migrations.
  48 + config.active_record.migration_error = :page_load
  49 +
  50 + # Highlight code that triggered database queries in logs.
  51 + config.active_record.verbose_query_logs = true
  52 +
  53 +
  54 + # Raises error for missing translations.
  55 + # config.i18n.raise_on_missing_translations = true
  56 +
  57 + # Annotate rendered view with file names.
  58 + # config.action_view.annotate_rendered_view_with_filenames = true
  59 +
  60 + # Use an evented file watcher to asynchronously detect changes in source code,
  61 + # routes, locales, etc. This feature depends on the listen gem.
  62 + config.file_watcher = ActiveSupport::EventedFileUpdateChecker
  63 +
  64 + # Uncomment if you wish to allow Action Cable access from any origin.
  65 + # config.action_cable.disable_request_forgery_protection = true
  66 +end
  1 +require "active_support/core_ext/integer/time"
  2 +
  3 +Rails.application.configure do
  4 + # Settings specified here will take precedence over those in config/application.rb.
  5 +
  6 + # Code is not reloaded between requests.
  7 + config.cache_classes = true
  8 +
  9 + # Eager load code on boot. This eager loads most of Rails and
  10 + # your application in memory, allowing both threaded web servers
  11 + # and those relying on copy on write to perform better.
  12 + # Rake tasks automatically ignore this option for performance.
  13 + config.eager_load = true
  14 +
  15 + # Full error reports are disabled and caching is turned on.
  16 + config.consider_all_requests_local = false
  17 +
  18 + # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
  19 + # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
  20 + # config.require_master_key = true
  21 +
  22 + # Disable serving static files from the `/public` folder by default since
  23 + # Apache or NGINX already handles this.
  24 + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
  25 +
  26 + # Enable serving of images, stylesheets, and JavaScripts from an asset server.
  27 + # config.asset_host = 'http://assets.example.com'
  28 +
  29 + # Specifies the header that your server uses for sending files.
  30 + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
  31 + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
  32 +
  33 + # Store uploaded files on the local file system (see config/storage.yml for options).
  34 + config.active_storage.service = :local
  35 +
  36 + # Mount Action Cable outside main process or domain.
  37 + # config.action_cable.mount_path = nil
  38 + # config.action_cable.url = 'wss://example.com/cable'
  39 + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
  40 +
  41 + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  42 + # config.force_ssl = true
  43 +
  44 + # Include generic and useful information about system operation, but avoid logging too much
  45 + # information to avoid inadvertent exposure of personally identifiable information (PII).
  46 + config.log_level = :info
  47 +
  48 + # Prepend all log lines with the following tags.
  49 + config.log_tags = [ :request_id ]
  50 +
  51 + # Use a different cache store in production.
  52 + # config.cache_store = :mem_cache_store
  53 +
  54 + # Use a real queuing backend for Active Job (and separate queues per environment).
  55 + # config.active_job.queue_adapter = :resque
  56 + # config.active_job.queue_name_prefix = "auto_logs_api_production"
  57 +
  58 + config.action_mailer.perform_caching = false
  59 +
  60 + # Ignore bad email addresses and do not raise email delivery errors.
  61 + # Set this to true and configure the email server for immediate delivery to raise delivery errors.
  62 + # config.action_mailer.raise_delivery_errors = false
  63 +
  64 + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  65 + # the I18n.default_locale when a translation cannot be found).
  66 + config.i18n.fallbacks = true
  67 +
  68 + # Send deprecation notices to registered listeners.
  69 + config.active_support.deprecation = :notify
  70 +
  71 + # Log disallowed deprecations.
  72 + config.active_support.disallowed_deprecation = :log
  73 +
  74 + # Tell Active Support which deprecation messages to disallow.
  75 + config.active_support.disallowed_deprecation_warnings = []
  76 +
  77 + # Use default logging formatter so that PID and timestamp are not suppressed.
  78 + config.log_formatter = ::Logger::Formatter.new
  79 +
  80 + # Use a different logger for distributed setups.
  81 + # require "syslog/logger"
  82 + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
  83 +
  84 + if ENV["RAILS_LOG_TO_STDOUT"].present?
  85 + logger = ActiveSupport::Logger.new(STDOUT)
  86 + logger.formatter = config.log_formatter
  87 + config.logger = ActiveSupport::TaggedLogging.new(logger)
  88 + end
  89 +
  90 + # Do not dump schema after migrations.
  91 + config.active_record.dump_schema_after_migration = false
  92 +
  93 + # Inserts middleware to perform automatic connection switching.
  94 + # The `database_selector` hash is used to pass options to the DatabaseSelector
  95 + # middleware. The `delay` is used to determine how long to wait after a write
  96 + # to send a subsequent read to the primary.
  97 + #
  98 + # The `database_resolver` class is used by the middleware to determine which
  99 + # database is appropriate to use based on the time delay.
  100 + #
  101 + # The `database_resolver_context` class is used by the middleware to set
  102 + # timestamps for the last write to the primary. The resolver uses the context
  103 + # class timestamps to determine how long to wait before reading from the
  104 + # replica.
  105 + #
  106 + # By default Rails will store a last write timestamp in the session. The
  107 + # DatabaseSelector middleware is designed as such you can define your own
  108 + # strategy for connection switching and pass that into the middleware through
  109 + # these configuration options.
  110 + # config.active_record.database_selector = { delay: 2.seconds }
  111 + # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
  112 + # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
  113 +end
  1 +require "active_support/core_ext/integer/time"
  2 +
  3 +# The test environment is used exclusively to run your application's
  4 +# test suite. You never need to work with it otherwise. Remember that
  5 +# your test database is "scratch space" for the test suite and is wiped
  6 +# and recreated between test runs. Don't rely on the data there!
  7 +
  8 +Rails.application.configure do
  9 + # Settings specified here will take precedence over those in config/application.rb.
  10 +
  11 + config.cache_classes = false
  12 + config.action_view.cache_template_loading = true
  13 +
  14 + # Do not eager load code on boot. This avoids loading your whole application
  15 + # just for the purpose of running a single test. If you are using a tool that
  16 + # preloads Rails for running tests, you may have to set it to true.
  17 + config.eager_load = false
  18 +
  19 + # Configure public file server for tests with Cache-Control for performance.
  20 + config.public_file_server.enabled = true
  21 + config.public_file_server.headers = {
  22 + 'Cache-Control' => "public, max-age=#{1.hour.to_i}"
  23 + }
  24 +
  25 + # Show full error reports and disable caching.
  26 + config.consider_all_requests_local = true
  27 + config.action_controller.perform_caching = false
  28 + config.cache_store = :null_store
  29 +
  30 + # Raise exceptions instead of rendering exception templates.
  31 + config.action_dispatch.show_exceptions = false
  32 +
  33 + # Disable request forgery protection in test environment.
  34 + config.action_controller.allow_forgery_protection = false
  35 +
  36 + # Store uploaded files on the local file system in a temporary directory.
  37 + config.active_storage.service = :test
  38 +
  39 + config.action_mailer.perform_caching = false
  40 +
  41 + # Tell Action Mailer not to deliver emails to the real world.
  42 + # The :test delivery method accumulates sent emails in the
  43 + # ActionMailer::Base.deliveries array.
  44 + config.action_mailer.delivery_method = :test
  45 +
  46 + # Print deprecation notices to the stderr.
  47 + config.active_support.deprecation = :stderr
  48 +
  49 + # Raise exceptions for disallowed deprecations.
  50 + config.active_support.disallowed_deprecation = :raise
  51 +
  52 + # Tell Active Support which deprecation messages to disallow.
  53 + config.active_support.disallowed_deprecation_warnings = []
  54 +
  55 + # Raises error for missing translations.
  56 + # config.i18n.raise_on_missing_translations = true
  57 +
  58 + # Annotate rendered view with file names.
  59 + # config.action_view.annotate_rendered_view_with_filenames = true
  60 +end
  1 +# Be sure to restart your server when you modify this file.
  2 +
  3 +# ActiveSupport::Reloader.to_prepare do
  4 +# ApplicationController.renderer.defaults.merge!(
  5 +# http_host: 'example.org',
  6 +# https: false
  7 +# )
  8 +# end
  1 +# Be sure to restart your server when you modify this file.
  2 +
  3 +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
  4 +# Rails.backtrace_cleaner.add_silencer { |line| /my_noisy_library/.match?(line) }
  5 +
  6 +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code
  7 +# by setting BACKTRACE=1 before calling your invocation, like "BACKTRACE=1 ./bin/rails runner 'MyClass.perform'".
  8 +Rails.backtrace_cleaner.remove_silencers! if ENV["BACKTRACE"]
  1 +# Be sure to restart your server when you modify this file.
  2 +
  3 +# Avoid CORS issues when API is called from the frontend app.
  4 +# Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin AJAX requests.
  5 +
  6 +# Read more: https://github.com/cyu/rack-cors
  7 +
  8 +# Rails.application.config.middleware.insert_before 0, Rack::Cors do
  9 +# allow do
  10 +# origins 'example.com'
  11 +#
  12 +# resource '*',
  13 +# headers: :any,
  14 +# methods: [:get, :post, :put, :patch, :delete, :options, :head]
  15 +# end
  16 +# end
  1 +# Be sure to restart your server when you modify this file.
  2 +
  3 +# Configure sensitive parameters which will be filtered from the log file.
  4 +Rails.application.config.filter_parameters += [
  5 + :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
  6 +]
  1 +# Be sure to restart your server when you modify this file.
  2 +
  3 +# Add new inflection rules using the following format. Inflections
  4 +# are locale specific, and you may define rules for as many different
  5 +# locales as you wish. All of these examples are active by default:
  6 +# ActiveSupport::Inflector.inflections(:en) do |inflect|
  7 +# inflect.plural /^(ox)$/i, '\1en'
  8 +# inflect.singular /^(ox)en/i, '\1'
  9 +# inflect.irregular 'person', 'people'
  10 +# inflect.uncountable %w( fish sheep )
  11 +# end
  12 +
  13 +# These inflection rules are supported but not enabled by default:
  14 +# ActiveSupport::Inflector.inflections(:en) do |inflect|
  15 +# inflect.acronym 'RESTful'
  16 +# end
  1 +# Be sure to restart your server when you modify this file.
  2 +
  3 +# Add new mime types for use in respond_to blocks:
  4 +# Mime::Type.register "text/richtext", :rtf
  1 +# Be sure to restart your server when you modify this file.
  2 +
  3 +# This file contains settings for ActionController::ParamsWrapper which
  4 +# is enabled by default.
  5 +
  6 +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
  7 +ActiveSupport.on_load(:action_controller) do
  8 + wrap_parameters format: [:json]
  9 +end
  10 +
  11 +# To enable root element in JSON for ActiveRecord objects.
  12 +# ActiveSupport.on_load(:active_record) do
  13 +# self.include_root_in_json = true
  14 +# end
  1 +# Files in the config/locales directory are used for internationalization
  2 +# and are automatically loaded by Rails. If you want to use locales other
  3 +# than English, add the necessary files in this directory.
  4 +#
  5 +# To use the locales, use `I18n.t`:
  6 +#
  7 +# I18n.t 'hello'
  8 +#
  9 +# In views, this is aliased to just `t`:
  10 +#
  11 +# <%= t('hello') %>
  12 +#
  13 +# To use a different locale, set it with `I18n.locale`:
  14 +#
  15 +# I18n.locale = :es
  16 +#
  17 +# This would use the information in config/locales/es.yml.
  18 +#
  19 +# The following keys must be escaped otherwise they will not be retrieved by
  20 +# the default I18n backend:
  21 +#
  22 +# true, false, on, off, yes, no
  23 +#
  24 +# Instead, surround them with single quotes.
  25 +#
  26 +# en:
  27 +# 'true': 'foo'
  28 +#
  29 +# To learn more, please read the Rails Internationalization guide
  30 +# available at https://guides.rubyonrails.org/i18n.html.
  31 +
  32 +en:
  33 + hello: "Hello world"
  1 +# frozen_string_literal: true
  2 +
  3 +ENV['MYSQL_USERNAME'] = 'root'
  4 +ENV['MYSQL_USERNAME'] = 't325gh9QR'
  1 +# Puma can serve each request in a thread from an internal thread pool.
  2 +# The `threads` method setting takes two numbers: a minimum and maximum.
  3 +# Any libraries that use thread pools should be configured to match
  4 +# the maximum value specified for Puma. Default is set to 5 threads for minimum
  5 +# and maximum; this matches the default thread size of Active Record.
  6 +#
  7 +max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
  8 +min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
  9 +threads min_threads_count, max_threads_count
  10 +
  11 +# Specifies the `worker_timeout` threshold that Puma will use to wait before
  12 +# terminating a worker in development environments.
  13 +#
  14 +worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development"
  15 +
  16 +# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
  17 +#
  18 +port ENV.fetch("PORT") { 3000 }
  19 +
  20 +# Specifies the `environment` that Puma will run in.
  21 +#
  22 +environment ENV.fetch("RAILS_ENV") { "development" }
  23 +
  24 +# Specifies the `pidfile` that Puma will use.
  25 +pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
  26 +
  27 +# Specifies the number of `workers` to boot in clustered mode.
  28 +# Workers are forked web server processes. If using threads and workers together
  29 +# the concurrency of the application would be max `threads` * `workers`.
  30 +# Workers do not work on JRuby or Windows (both of which do not support
  31 +# processes).
  32 +#
  33 +# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
  34 +
  35 +# Use the `preload_app!` method when specifying a `workers` number.
  36 +# This directive tells Puma to first boot the application and load code
  37 +# before forking the application. This takes advantage of Copy On Write
  38 +# process behavior so workers use less memory.
  39 +#
  40 +# preload_app!
  41 +
  42 +# Allow puma to be restarted by `rails restart` command.
  43 +plugin :tmp_restart
  1 +Rails.application.routes.draw do
  2 + # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
  3 +end
  1 +Spring.watch(
  2 + ".ruby-version",
  3 + ".rbenv-vars",
  4 + "tmp/restart.txt",
  5 + "tmp/caching-dev.txt"
  6 +)
  1 +test:
  2 + service: Disk
  3 + root: <%= Rails.root.join("tmp/storage") %>
  4 +
  5 +local:
  6 + service: Disk
  7 + root: <%= Rails.root.join("storage") %>
  8 +
  9 +# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
  10 +# amazon:
  11 +# service: S3
  12 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
  13 +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
  14 +# region: us-east-1
  15 +# bucket: your_own_bucket
  16 +
  17 +# Remember not to checkin your GCS keyfile to a repository
  18 +# google:
  19 +# service: GCS
  20 +# project: your_project
  21 +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
  22 +# bucket: your_own_bucket
  23 +
  24 +# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
  25 +# microsoft:
  26 +# service: AzureStorage
  27 +# storage_account_name: your_account_name
  28 +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
  29 +# container: your_container_name
  30 +
  31 +# mirror:
  32 +# service: Mirror
  33 +# primary: local
  34 +# mirrors: [ amazon, google, microsoft ]
  1 +# This file should contain all the record creation needed to seed the database with its default values.
  2 +# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
  3 +#
  4 +# Examples:
  5 +#
  6 +# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
  7 +# Character.create(name: 'Luke', movie: movies.first)
  1 +# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
  1 +require "test_helper"
  2 +
  3 +class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
  4 + # test "connects with cookies" do
  5 + # cookies.signed[:user_id] = 42
  6 + #
  7 + # connect
  8 + #
  9 + # assert_equal connection.user_id, "42"
  10 + # end
  11 +end
  1 +ENV['RAILS_ENV'] ||= 'test'
  2 +require_relative "../config/environment"
  3 +require "rails/test_help"
  4 +
  5 +class ActiveSupport::TestCase
  6 + # Run tests in parallel with specified workers
  7 + parallelize(workers: :number_of_processors)
  8 +
  9 + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
  10 + fixtures :all
  11 +
  12 + # Add more helper methods to be used by all tests here...
  13 +end