| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| #!/usr/bin/env bash | ||
|
|
||
| foreman start -f Procfile.dev |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| #!/usr/bin/env ruby | ||
| APP_PATH = File.expand_path('../config/application', __dir__) | ||
| require_relative "../config/boot" | ||
| require "rails/commands" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| #!/usr/bin/env ruby | ||
| require_relative "../config/boot" | ||
| require "rake" | ||
| Rake.application.run |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| 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 "sprockets/railtie" | ||
| 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 Railsdevs | ||
| class Application < Rails::Application | ||
| # Initialize configuration defaults for originally generated Rails version. | ||
| config.load_defaults 6.1 | ||
|
|
||
| # 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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) | ||
|
|
||
| require "bundler/setup" # Set up gems listed in the Gemfile. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| V0Xl7xy06XYZTqrgQ74nktKwJdHu+DnJbIkTfMbj8y1A5sqbZDX4n9lScczfupKGF4Nu71TZ2808OHaIrwZPIHmGFPoOEmcLQhDrUDMiZ2PxUOKj703GyZX2JK6e73rReNZMbU/dhvu5aoH6wsekjvHrTk62CNzaoBdO+jRnIi97jylrrLcnsFkCTl6nKy1p+KLGWILdLmuxO3M3y6HcrPH/2V14jIIvtMjsBzTl85zi3summH3HQf7ro168HgLw/u+bN8oRBzidnZIKwAh5KHUGa3IeHA/pdv57IlnqY/2pDIqXbYk9QS2nYjaMcwCfUcXKLcf9mA8oHRiUkBf+Y8V/koJWi95jj5KYQ4OPqU/N/w7IJ4CztySJCEy5L0qDhy+w2Oblvdz6xSUZh+zampP9o4hYr1IBukmg--SszxIJ1RgPj3GERr--t9mB5EkpwFxPo6bsyZc4UA== |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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: railsdevs_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: railsdevs | ||
|
|
||
| # 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: railsdevs_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: railsdevs_production | ||
| username: railsdevs | ||
| password: <%= ENV['RAILSDEVS_DATABASE_PASSWORD'] %> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| # Load the Rails application. | ||
| require_relative "application" | ||
|
|
||
| # Initialize the Rails application. | ||
| Rails.application.initialize! |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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/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 | ||
|
|
||
| # 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 | ||
|
|
||
| # 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.i18n.raise_on_missing_translations = true | ||
|
|
||
| # Annotate rendered view with file names. | ||
| # config.action_view.annotate_rendered_view_with_filenames = 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 | ||
|
|
||
| # Uncomment if you wish to allow Action Cable access from any origin. | ||
| # config.action_cable.disable_request_forgery_protection = true | ||
| end |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,102 @@ | ||
| 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? | ||
|
|
||
| # 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.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 | ||
|
|
||
| # 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 | ||
|
|
||
| # 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 | ||
|
|
||
| # Log disallowed deprecations. | ||
| config.active_support.disallowed_deprecation = :log | ||
|
|
||
| # Tell Active Support which deprecation messages to disallow. | ||
| config.active_support.disallowed_deprecation_warnings = [] | ||
|
|
||
| # 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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,49 @@ | ||
| 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. | ||
|
|
||
| config.cache_classes = 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 | ||
|
|
||
| # 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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| # 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| /my_noisy_library/.match?(line) } | ||
|
|
||
| # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code | ||
| # by setting BACKTRACE=1 before calling your invocation, like "BACKTRACE=1 ./bin/rails runner 'MyClass.perform'". | ||
| Rails.backtrace_cleaner.remove_silencers! if ENV["BACKTRACE"] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| # 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 | ||
|
|
||
| # # 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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| # 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 += [ | ||
| :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn | ||
| ] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 `rails restart` command. | ||
| plugin :tmp_restart |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| Rails.application.routes.draw do | ||
| root "home#show" | ||
|
|
||
| resource :home, only: :show | ||
| end |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| { | ||
| "name": "app", | ||
| "private": "true", | ||
| "dependencies": { | ||
| "autoprefixer": "^10.3.7", | ||
| "esbuild": "^0.13.8", | ||
| "postcss": "^8.3.11", | ||
| "tailwindcss": "^2.2.17" | ||
| }, | ||
| "scripts": { | ||
| "build": "esbuild app/javascript/*.* --bundle --outdir=app/assets/builds", | ||
| "build:css": "tailwindcss -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application.css" | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| # See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| const colors = require("tailwindcss/colors") | ||
|
|
||
| module.exports = { | ||
| mode: "jit", | ||
| purge: [ | ||
| "./app/views/**/*.html.erb", | ||
| "./app/helpers/**/*.rb", | ||
| "./app/javascript/**/*.js" | ||
| ], | ||
| theme: { | ||
| colors: { | ||
| gray: colors.coolGray, | ||
| blue: colors.lightBlue, | ||
| red: colors.rose, | ||
| pink: colors.fuchsia, | ||
| }, | ||
| fontFamily: { | ||
| sans: ["Graphik", "sans-serif"], | ||
| serif: ["Merriweather", "serif"], | ||
| } | ||
| }, | ||
| variants: { | ||
| extend: { | ||
| borderColor: ["focus-visible"], | ||
| opacity: ["disabled"], | ||
| } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |