From 82baf9813578c97a1ae02a8ee84f087f5932e1f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Mon, 12 Sep 2022 17:49:08 +0200 Subject: [PATCH] wip upgrade to rails 7 --- .ruby-version | 2 +- Gemfile | 4 +- Gemfile.lock | 147 +++++++------ .../blobs/redirect_controller.rb | 2 +- .../representations/redirect_controller.rb | 2 +- bin/rails | 3 +- bin/rake | 1 - bin/setup | 22 +- config/application.rb | 1 + config/boot.rb | 2 +- config/environments/development.rb | 7 +- config/environments/production.rb | 31 +-- config/environments/test.rb | 14 +- config/initializers/active_storage.rb | 1 + config/initializers/assets.rb | 2 +- .../initializers/content_security_policy.rb | 47 ++--- .../initializers/filter_parameter_logging.rb | 4 +- config/initializers/inflections.rb | 9 +- .../new_framework_defaults_7_0.rb | 135 ++++++++++++ ..._to_active_storage_blobs.active_storage.rb | 22 ++ ..._storage_variant_records.active_storage.rb | 27 +++ ...e_storage_blobs_checksum.active_storage.rb | 8 + db/schema.rb | 197 +++++++++--------- 23 files changed, 442 insertions(+), 248 deletions(-) create mode 100644 config/initializers/new_framework_defaults_7_0.rb create mode 100644 db/migrate/20220912133216_add_service_name_to_active_storage_blobs.active_storage.rb create mode 100644 db/migrate/20220912133217_create_active_storage_variant_records.active_storage.rb create mode 100644 db/migrate/20220912133218_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb diff --git a/.ruby-version b/.ruby-version index 49cdd668e..ef538c281 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.6 +3.1.2 diff --git a/Gemfile b/Gemfile index 36d27bb11..a8cae442b 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } -ruby '2.7.6' +ruby '3.1.2' # Infrastructure gem 'angularjs-rails' @@ -37,7 +37,7 @@ gem 'omniauth-rails_csrf_protection', '~> 1.0' gem 'omniauth-saml', '~> 2.0' gem 'pg', '~> 1.1' gem 'puma' -gem 'rails', '~> 6.1' +gem 'rails', '~> 7.0' gem 'rails-i18n' gem 'roo', "~> 2.9" gem 'sanitize' diff --git a/Gemfile.lock b/Gemfile.lock index c6465bb47..20670cc74 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -21,65 +21,71 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.1.6.1) - actionpack (= 6.1.6.1) - activesupport (= 6.1.6.1) + actioncable (7.0.4) + actionpack (= 7.0.4) + activesupport (= 7.0.4) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.6.1) - actionpack (= 6.1.6.1) - activejob (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionmailbox (7.0.4) + actionpack (= 7.0.4) + activejob (= 7.0.4) + activerecord (= 7.0.4) + activestorage (= 7.0.4) + activesupport (= 7.0.4) mail (>= 2.7.1) - actionmailer (6.1.6.1) - actionpack (= 6.1.6.1) - actionview (= 6.1.6.1) - activejob (= 6.1.6.1) - activesupport (= 6.1.6.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.4) + actionpack (= 7.0.4) + actionview (= 7.0.4) + activejob (= 7.0.4) + activesupport (= 7.0.4) mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp rails-dom-testing (~> 2.0) - actionpack (6.1.6.1) - actionview (= 6.1.6.1) - activesupport (= 6.1.6.1) - rack (~> 2.0, >= 2.0.9) + actionpack (7.0.4) + actionview (= 7.0.4) + activesupport (= 7.0.4) + rack (~> 2.0, >= 2.2.0) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.6.1) - actionpack (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + actiontext (7.0.4) + actionpack (= 7.0.4) + activerecord (= 7.0.4) + activestorage (= 7.0.4) + activesupport (= 7.0.4) + globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (6.1.6.1) - activesupport (= 6.1.6.1) + actionview (7.0.4) + activesupport (= 7.0.4) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (6.1.6.1) - activesupport (= 6.1.6.1) + activejob (7.0.4) + activesupport (= 7.0.4) globalid (>= 0.3.6) - activemodel (6.1.6.1) - activesupport (= 6.1.6.1) - activerecord (6.1.6.1) - activemodel (= 6.1.6.1) - activesupport (= 6.1.6.1) - activestorage (6.1.6.1) - actionpack (= 6.1.6.1) - activejob (= 6.1.6.1) - activerecord (= 6.1.6.1) - activesupport (= 6.1.6.1) + activemodel (7.0.4) + activesupport (= 7.0.4) + activerecord (7.0.4) + activemodel (= 7.0.4) + activesupport (= 7.0.4) + activestorage (7.0.4) + actionpack (= 7.0.4) + activejob (= 7.0.4) + activerecord (= 7.0.4) + activesupport (= 7.0.4) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.6.1) + activesupport (7.0.4) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) tzinfo (~> 2.0) - zeitwerk (~> 2.3) addressable (2.8.1) public_suffix (>= 2.0.2, < 6.0) angularjs-rails (1.8.0) @@ -89,8 +95,8 @@ GEM autoprefixer-rails (10.4.7.0) execjs (~> 2) aws-eventstream (1.2.0) - aws-partitions (1.624.0) - aws-sdk-core (3.138.0) + aws-partitions (1.628.0) + aws-sdk-core (3.144.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) @@ -163,6 +169,7 @@ GEM warden (~> 1.2.3) devise-i18n (1.10.2) devise (>= 4.8.0) + digest (3.1.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) encryptor (3.0.0) @@ -288,6 +295,20 @@ GEM mustermann (2.0.2) ruby2_keywords (~> 0.0.1) nesty (1.0.2) + net-imap (0.2.3) + digest + net-protocol + strscan + net-pop (0.1.1) + digest + net-protocol + timeout + net-protocol (0.1.3) + timeout + net-smtp (0.3.1) + digest + net-protocol + timeout nio4r (2.5.8) nokogiri (1.13.8-arm64-darwin) racc (~> 1.4) @@ -301,7 +322,7 @@ GEM multi_json (~> 1.3) multi_xml (~> 0.5) rack (>= 1.2, < 3) - octokit (5.4.0) + octokit (5.5.0) faraday (>= 1, < 3) sawyer (~> 0.9) omniauth (2.1.0) @@ -328,21 +349,20 @@ GEM rack rack-test (2.0.2) rack (>= 1.3) - rails (6.1.6.1) - actioncable (= 6.1.6.1) - actionmailbox (= 6.1.6.1) - actionmailer (= 6.1.6.1) - actionpack (= 6.1.6.1) - actiontext (= 6.1.6.1) - actionview (= 6.1.6.1) - activejob (= 6.1.6.1) - activemodel (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + rails (7.0.4) + actioncable (= 7.0.4) + actionmailbox (= 7.0.4) + actionmailer (= 7.0.4) + actionpack (= 7.0.4) + actiontext (= 7.0.4) + actionview (= 7.0.4) + activejob (= 7.0.4) + activemodel (= 7.0.4) + activerecord (= 7.0.4) + activestorage (= 7.0.4) + activesupport (= 7.0.4) bundler (>= 1.15.0) - railties (= 6.1.6.1) - sprockets-rails (>= 2.0.0) + railties (= 7.0.4) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) @@ -351,12 +371,13 @@ GEM rails-i18n (7.0.5) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) - railties (6.1.6.1) - actionpack (= 6.1.6.1) - activesupport (= 6.1.6.1) + railties (7.0.4) + actionpack (= 7.0.4) + activesupport (= 7.0.4) method_source rake (>= 12.2) thor (~> 1.0) + zeitwerk (~> 2.5) rake (13.0.6) randexp (0.1.7) rb-fsevent (0.11.2) @@ -426,10 +447,12 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) + strscan (3.0.4) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) thor (1.2.1) tilt (2.0.11) + timeout (0.3.0) typhoeus (1.4.0) ethon (>= 0.9.0) tzinfo (2.0.5) @@ -511,7 +534,7 @@ DEPENDENCIES pg (~> 1.1) puma rack-mini-profiler (~> 2.0) - rails (~> 6.1) + rails (~> 7.0) rails-i18n roo (~> 2.9) sanitize @@ -533,7 +556,7 @@ DEPENDENCIES webmock RUBY VERSION - ruby 2.7.6p219 + ruby 3.1.2p20 BUNDLED WITH - 2.3.12 + 2.3.11 diff --git a/app/controllers/active_storage/blobs/redirect_controller.rb b/app/controllers/active_storage/blobs/redirect_controller.rb index 906eade46..b1f42fe83 100644 --- a/app/controllers/active_storage/blobs/redirect_controller.rb +++ b/app/controllers/active_storage/blobs/redirect_controller.rb @@ -13,7 +13,7 @@ class ActiveStorage::Blobs::RedirectController < ActiveStorage::BaseController def show expires_in ActiveStorage.service_urls_expire_in - redirect_to @blob.url(disposition: params[:disposition]) + redirect_to @blob.url(disposition: params[:disposition]), allow_other_host: true end end diff --git a/app/controllers/active_storage/representations/redirect_controller.rb b/app/controllers/active_storage/representations/redirect_controller.rb index a4c71baaf..b20c94c7a 100644 --- a/app/controllers/active_storage/representations/redirect_controller.rb +++ b/app/controllers/active_storage/representations/redirect_controller.rb @@ -12,7 +12,7 @@ class ActiveStorage::Representations::RedirectController < ActiveStorage::Repres def show expires_in ActiveStorage.service_urls_expire_in - redirect_to @representation.url(disposition: params[:disposition]) + redirect_to @representation.url(disposition: params[:disposition]), allow_other_host: true end end diff --git a/bin/rails b/bin/rails index 21d3e02d8..efc037749 100755 --- a/bin/rails +++ b/bin/rails @@ -1,5 +1,4 @@ #!/usr/bin/env ruby -load File.expand_path("spring", __dir__) -APP_PATH = File.expand_path('../config/application', __dir__) +APP_PATH = File.expand_path("../config/application", __dir__) require_relative "../config/boot" require "rails/commands" diff --git a/bin/rake b/bin/rake index 7327f471e..4fbf10b96 100755 --- a/bin/rake +++ b/bin/rake @@ -1,5 +1,4 @@ #!/usr/bin/env ruby -load File.expand_path("spring", __dir__) require_relative "../config/boot" require "rake" Rake.application.run diff --git a/bin/setup b/bin/setup index 310e9886a..441c59bae 100755 --- a/bin/setup +++ b/bin/setup @@ -2,7 +2,7 @@ require "fileutils" # path to your application root. -APP_ROOT = File.expand_path('..', __dir__) +APP_ROOT = File.expand_path("..", __dir__) def system!(*args) system(*args) || abort("\n== Command #{args} failed ==") @@ -13,27 +13,27 @@ FileUtils.chdir APP_ROOT do # 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 "== Installing dependencies ==" + system! "gem install bundler --conservative" + system("bundle check") || system!("bundle install") # Install JavaScript dependencies - system! 'bin/yarn' + system! "bin/yarn" puts "\n== Copying sample files ==" - unless File.exist?('config/application.yml') - FileUtils.cp 'config/application.yml.sample', 'config/application.yml' + unless File.exist?("config/application.yml") + FileUtils.cp "config/application.yml.sample", "config/application.yml" end puts "\n== Preparing database ==" - system! 'bin/rails db:prepare' + system! "bin/rails db:prepare" puts "\n== Seeding database ==" - system! 'bin/rails db:seed' + system! "bin/rails db:seed" puts "\n== Removing old logs and tempfiles ==" - system! 'bin/rails log:clear tmp:clear' + system! "bin/rails log:clear tmp:clear" puts "\n== Restarting application server ==" - system! 'bin/rails restart' + system! "bin/rails restart" end diff --git a/config/application.rb b/config/application.rb index 1759bf440..2b1b29a97 100644 --- a/config/application.rb +++ b/config/application.rb @@ -21,6 +21,7 @@ Bundler.require(*Rails.groups) module Osuny class Application < Rails::Application + # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.1 config.time_zone = 'Europe/Paris' diff --git a/config/boot.rb b/config/boot.rb index 3cda23b4d..988a5ddc4 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,4 +1,4 @@ -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) +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. diff --git a/config/environments/development.rb b/config/environments/development.rb index 6968ff7e0..cb234a732 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -16,15 +16,18 @@ Rails.application.configure do config.hosts.clear + # 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? + 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}" + "Cache-Control" => "public, max-age=#{2.days.to_i}" } else config.action_controller.perform_caching = false diff --git a/config/environments/production.rb b/config/environments/production.rb index 4d007d7f9..1b0e68fab 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -22,7 +22,7 @@ Rails.application.configure do # 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? + config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present? # Compress CSS using a preprocessor. # config.assets.css_compressor = :sass @@ -31,11 +31,11 @@ Rails.application.configure do config.assets.compile = false # Enable serving of images, stylesheets, and JavaScripts from an asset server. - # config.asset_host = 'http://assets.example.com' + # 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 + # 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 = :scaleway @@ -81,7 +81,7 @@ Rails.application.configure do # Use a different logger for distributed setups. # require "syslog/logger" - # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name") if ENV["RAILS_LOG_TO_STDOUT"].present? logger = ActiveSupport::Logger.new(STDOUT) @@ -91,25 +91,4 @@ Rails.application.configure do # 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 diff --git a/config/environments/test.rb b/config/environments/test.rb index 93ed4f1b7..6ea4d1e70 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -8,18 +8,18 @@ require "active_support/core_ext/integer/time" Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. - config.cache_classes = false - config.action_view.cache_template_loading = true + # Turn false under Spring and add config.action_view.cache_template_loading = true. + 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 + # 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}" + "Cache-Control" => "public, max-age=#{1.hour.to_i}" } # Show full error reports and disable caching. diff --git a/config/initializers/active_storage.rb b/config/initializers/active_storage.rb index 89b6ff7a9..ddc32d906 100644 --- a/config/initializers/active_storage.rb +++ b/config/initializers/active_storage.rb @@ -1,3 +1,4 @@ +require 'active_storage/record' require 'active_storage/attachment' require 'active_storage/filename' diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index be3e6588a..c148bcf30 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -1,7 +1,7 @@ # 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' +Rails.application.config.assets.version = "1.0" # Add additional assets to the asset load path. # Rails.application.config.assets.paths << Emoji.images_path diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb index 35d0f26fc..54f47cf15 100644 --- a/config/initializers/content_security_policy.rb +++ b/config/initializers/content_security_policy.rb @@ -1,30 +1,25 @@ # 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 +# 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.config.content_security_policy do |policy| -# policy.default_src :self, :https -# policy.font_src :self, :https, :data -# policy.img_src :self, :https, :data -# policy.object_src :none -# policy.script_src :self, :https -# policy.style_src :self, :https -# # If you are using webpack-dev-server then specify webpack-dev-server host -# policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development? - -# # Specify URI for violation reports -# # policy.report_uri "/csp-violation-report-endpoint" +# 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 - -# 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 diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb index 4b34a0366..adc6568ce 100644 --- a/config/initializers/filter_parameter_logging.rb +++ b/config/initializers/filter_parameter_logging.rb @@ -1,6 +1,8 @@ # Be sure to restart your server when you modify this file. -# Configure sensitive parameters which will be filtered from the log 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 ] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb index e01ebddbf..b343adcee 100644 --- a/config/initializers/inflections.rb +++ b/config/initializers/inflections.rb @@ -4,14 +4,15 @@ # 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.uncountable %w( fish sheep ) +# inflect.plural /^(ox)$/i, "\\1en" +# inflect.singular /^(ox)en/i, "\\1" +# inflect.irregular "person", "people" +# inflect.uncountable %w( fish sheep ) inflect.irregular 'axis', 'axes' inflect.irregular 'alumnus', 'alumni' end # These inflection rules are supported but not enabled by default: # ActiveSupport::Inflector.inflections(:en) do |inflect| -# inflect.acronym 'RESTful' +# inflect.acronym "RESTful" # end diff --git a/config/initializers/new_framework_defaults_7_0.rb b/config/initializers/new_framework_defaults_7_0.rb new file mode 100644 index 000000000..1bf3d84d9 --- /dev/null +++ b/config/initializers/new_framework_defaults_7_0.rb @@ -0,0 +1,135 @@ +# Be sure to restart your server when you modify this file. +# +# This file eases your Rails 7.0 framework defaults upgrade. +# +# Uncomment each configuration one by one to switch to the new default. +# Once your application is ready to run with all new defaults, you can remove +# this file and set the `config.load_defaults` to `7.0`. +# +# Read the Guide for Upgrading Ruby on Rails for more info on each option. +# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html + +# `button_to` view helper will render `<button>` element, regardless of whether +# or not the content is passed as the first argument or as a block. +Rails.application.config.action_view.button_to_generates_button_tag = true + +# `stylesheet_link_tag` view helper will not render the media attribute by default. +Rails.application.config.action_view.apply_stylesheet_media_default = false + +# Change the digest class for the key generators to `OpenSSL::Digest::SHA256`. +# Changing this default means invalidate all encrypted messages generated by +# your application and, all the encrypted cookies. Only change this after you +# rotated all the messages using the key rotator. +# +# See upgrading guide for more information on how to build a rotator. +# https://guides.rubyonrails.org/v7.0/upgrading_ruby_on_rails.html +Rails.application.config.active_support.key_generator_hash_digest_class = OpenSSL::Digest::SHA256 + +# Change the digest class for ActiveSupport::Digest. +# Changing this default means that for example Etags change and +# various cache keys leading to cache invalidation. +Rails.application.config.active_support.hash_digest_class = OpenSSL::Digest::SHA256 + +# Don't override ActiveSupport::TimeWithZone.name and use the default Ruby +# implementation. +Rails.application.config.active_support.remove_deprecated_time_with_zone_name = true + +# Calls `Rails.application.executor.wrap` around test cases. +# This makes test cases behave closer to an actual request or job. +# Several features that are normally disabled in test, such as Active Record query cache +# and asynchronous queries will then be enabled. +Rails.application.config.active_support.executor_around_test_case = true + +# Define the isolation level of most of Rails internal state. +# If you use a fiber based server or job processor, you should set it to `:fiber`. +# Otherwise the default of `:thread` if preferable. +Rails.application.config.active_support.isolation_level = :thread + +# Set both the `:open_timeout` and `:read_timeout` values for `:smtp` delivery method. +Rails.application.config.action_mailer.smtp_timeout = 5 + +# The ActiveStorage video previewer will now use scene change detection to generate +# better preview images (rather than the previous default of using the first frame +# of the video). +Rails.application.config.active_storage.video_preview_arguments = + "-vf 'select=eq(n\\,0)+eq(key\\,1)+gt(scene\\,0.015),loop=loop=-1:size=2,trim=start_frame=1' -frames:v 1 -f image2" + +# Automatically infer `inverse_of` for associations with a scope. +Rails.application.config.active_record.automatic_scope_inversing = true + +# Raise when running tests if fixtures contained foreign key violations +Rails.application.config.active_record.verify_foreign_keys_for_fixtures = true + +# Disable partial inserts. +# This default means that all columns will be referenced in INSERT queries +# regardless of whether they have a default or not. +Rails.application.config.active_record.partial_inserts = false + +# Protect from open redirect attacks in `redirect_back_or_to` and `redirect_to`. +Rails.application.config.action_controller.raise_on_open_redirects = true + +# Change the variant processor for Active Storage. +# Changing this default means updating all places in your code that +# generate variants to use image processing macros and ruby-vips +# operations. See the upgrading guide for detail on the changes required. +# The `:mini_magick` option is not deprecated; it's fine to keep using it. +Rails.application.config.active_storage.variant_processor = :mini_magick + +# Enable parameter wrapping for JSON. +# Previously this was set in an initializer. It's fine to keep using that initializer if you've customized it. +# To disable parameter wrapping entirely, set this config to `false`. +Rails.application.config.action_controller.wrap_parameters_by_default = true + +# Specifies whether generated namespaced UUIDs follow the RFC 4122 standard for namespace IDs provided as a +# `String` to `Digest::UUID.uuid_v3` or `Digest::UUID.uuid_v5` method calls. +# +# See https://guides.rubyonrails.org/configuring.html#config-active-support-use-rfc4122-namespaced-uuids for +# more information. +Rails.application.config.active_support.use_rfc4122_namespaced_uuids = true + +# Change the default headers to disable browsers' flawed legacy XSS protection. +Rails.application.config.action_dispatch.default_headers = { + "X-Frame-Options" => "SAMEORIGIN", + "X-XSS-Protection" => "0", + "X-Content-Type-Options" => "nosniff", + "X-Download-Options" => "noopen", + "X-Permitted-Cross-Domain-Policies" => "none", + "Referrer-Policy" => "strict-origin-when-cross-origin" +} + + +# ** Please read carefully, this must be configured in config/application.rb ** +# Change the format of the cache entry. +# Changing this default means that all new cache entries added to the cache +# will have a different format that is not supported by Rails 6.1 applications. +# Only change this value after your application is fully deployed to Rails 7.0 +# and you have no plans to rollback. +# When you're ready to change format, add this to `config/application.rb` (NOT this file): +# config.active_support.cache_format_version = 7.0 + + +# Cookie serializer: 2 options +# +# If you're upgrading and haven't set `cookies_serializer` previously, your cookie serializer +# is `:marshal`. The default for new apps is `:json`. +# +# Rails.application.config.action_dispatch.cookies_serializer = :json +# +# +# To migrate an existing application to the `:json` serializer, use the `:hybrid` option. +# +# Rails transparently deserializes existing (Marshal-serialized) cookies on read and +# re-writes them in the JSON format. +# +# It is fine to use `:hybrid` long term; you should do that until you're confident *all* your cookies +# have been converted to JSON. To keep using `:hybrid` long term, move this config to its own +# initializer or to `config/application.rb`. +# +# Rails.application.config.action_dispatch.cookies_serializer = :hybrid +# +# +# If your cookies can't yet be serialized to JSON, keep using `:marshal` for backward-compatibility. +# +# If you have configured the serializer elsewhere, you can remove this section of the file. +# +# See https://guides.rubyonrails.org/action_controller_overview.html#cookies for more information. diff --git a/db/migrate/20220912133216_add_service_name_to_active_storage_blobs.active_storage.rb b/db/migrate/20220912133216_add_service_name_to_active_storage_blobs.active_storage.rb new file mode 100644 index 000000000..a15c6ce8e --- /dev/null +++ b/db/migrate/20220912133216_add_service_name_to_active_storage_blobs.active_storage.rb @@ -0,0 +1,22 @@ +# This migration comes from active_storage (originally 20190112182829) +class AddServiceNameToActiveStorageBlobs < ActiveRecord::Migration[6.0] + def up + return unless table_exists?(:active_storage_blobs) + + unless column_exists?(:active_storage_blobs, :service_name) + add_column :active_storage_blobs, :service_name, :string + + if configured_service = ActiveStorage::Blob.service.name + ActiveStorage::Blob.unscoped.update_all(service_name: configured_service) + end + + change_column :active_storage_blobs, :service_name, :string, null: false + end + end + + def down + return unless table_exists?(:active_storage_blobs) + + remove_column :active_storage_blobs, :service_name + end +end diff --git a/db/migrate/20220912133217_create_active_storage_variant_records.active_storage.rb b/db/migrate/20220912133217_create_active_storage_variant_records.active_storage.rb new file mode 100644 index 000000000..94ac83af0 --- /dev/null +++ b/db/migrate/20220912133217_create_active_storage_variant_records.active_storage.rb @@ -0,0 +1,27 @@ +# This migration comes from active_storage (originally 20191206030411) +class CreateActiveStorageVariantRecords < ActiveRecord::Migration[6.0] + def change + return unless table_exists?(:active_storage_blobs) + + # Use Active Record's configured type for primary key + create_table :active_storage_variant_records, id: primary_key_type, if_not_exists: true do |t| + t.belongs_to :blob, null: false, index: false, type: blobs_primary_key_type + t.string :variation_digest, null: false + + t.index %i[ blob_id variation_digest ], name: "index_active_storage_variant_records_uniqueness", unique: true + t.foreign_key :active_storage_blobs, column: :blob_id + end + end + + private + def primary_key_type + config = Rails.configuration.generators + config.options[config.orm][:primary_key_type] || :primary_key + end + + def blobs_primary_key_type + pkey_name = connection.primary_key(:active_storage_blobs) + pkey_column = connection.columns(:active_storage_blobs).find { |c| c.name == pkey_name } + pkey_column.bigint? ? :bigint : pkey_column.type + end +end diff --git a/db/migrate/20220912133218_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb b/db/migrate/20220912133218_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb new file mode 100644 index 000000000..93c8b85ad --- /dev/null +++ b/db/migrate/20220912133218_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb @@ -0,0 +1,8 @@ +# This migration comes from active_storage (originally 20211119233751) +class RemoveNotNullOnActiveStorageBlobsChecksum < ActiveRecord::Migration[6.0] + def change + return unless table_exists?(:active_storage_blobs) + + change_column_null(:active_storage_blobs, :checksum, true) + end +end diff --git a/db/schema.rb b/db/schema.rb index feaba49d2..04949200a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,8 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_09_01_160808) do - +ActiveRecord::Schema[7.0].define(version: 2022_09_12_133218) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" enable_extension "plpgsql" @@ -22,8 +21,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.text "body" t.string "record_type", null: false t.uuid "record_id", null: false - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["record_type", "record_id", "name"], name: "index_action_text_rich_texts_uniqueness", unique: true end @@ -32,7 +31,7 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "record_type", null: false t.uuid "record_id", null: false t.uuid "blob_id", null: false - t.datetime "created_at", null: false + t.datetime "created_at", precision: nil, null: false t.index ["blob_id"], name: "index_active_storage_attachments_on_blob_id" t.index ["record_type", "record_id", "name", "blob_id"], name: "index_active_storage_attachments_uniqueness", unique: true end @@ -44,8 +43,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.text "metadata" t.string "service_name", null: false t.bigint "byte_size", null: false - t.string "checksum", null: false - t.datetime "created_at", null: false + t.string "checksum" + t.datetime "created_at", precision: nil, null: false t.uuid "university_id" t.index ["key"], name: "index_active_storage_blobs_on_key", unique: true t.index ["university_id"], name: "index_active_storage_blobs_on_university_id" @@ -61,8 +60,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.integer "number" t.text "name" t.text "description" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end create_table "administration_qualiopi_indicators", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| @@ -73,8 +72,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.text "proof" t.text "requirement" t.text "non_conformity" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.text "glossary" t.index ["criterion_id"], name: "index_administration_qualiopi_indicators_on_criterion_id" end @@ -86,8 +85,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.integer "template_kind", default: 0, null: false t.jsonb "data" t.integer "position", default: 0, null: false - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "title" t.boolean "published", default: true t.index ["about_type", "about_id"], name: "index_communication_website_blocks_on_about" @@ -98,8 +97,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "name" t.uuid "university_id", null: false t.string "domain" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "about_type" t.uuid "about_id" t.index ["about_type", "about_id"], name: "index_communication_extranets_on_about" @@ -112,8 +111,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "name" t.text "description" t.integer "position" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "slug" t.uuid "parent_id" t.text "github_path" @@ -141,8 +140,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "about_type", null: false t.uuid "about_id", null: false t.uuid "website_id", null: false - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "previous_sha" t.index ["about_type", "about_id"], name: "index_communication_website_github_files_on_about" t.index ["website_id"], name: "index_communication_website_git_files_on_website_id" @@ -157,8 +156,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "slug" t.string "identifier" t.jsonb "data" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["author_id"], name: "idx_communication_website_imported_auth_on_author" t.index ["university_id"], name: "idx_communication_website_imported_auth_on_university" t.index ["website_id"], name: "idx_communication_website_imported_auth_on_website" @@ -174,8 +173,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "slug" t.string "url" t.string "parent" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.jsonb "data" t.index ["category_id"], name: "idx_communication_website_imported_cat_on_category" t.index ["university_id"], name: "idx_communication_website_imported_cat_on_university" @@ -186,8 +185,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "identifier" t.jsonb "data" t.text "file_url" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", precision: nil + t.datetime "updated_at", precision: nil t.uuid "university_id", null: false t.uuid "website_id", null: false t.string "filename" @@ -202,8 +201,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "website_id", null: false t.uuid "page_id" t.integer "status", default: 0 - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "title" t.text "content" t.text "path" @@ -231,10 +230,10 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.text "content" t.text "path" t.text "url" - t.datetime "published_at" + t.datetime "published_at", precision: nil t.string "identifier" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.text "slug" t.jsonb "data" t.uuid "featured_medium_id" @@ -250,8 +249,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "university_id", null: false t.uuid "website_id", null: false t.integer "status", default: 0 - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["university_id"], name: "index_communication_website_imported_websites_on_university_id" t.index ["website_id"], name: "index_communication_website_imported_websites_on_website_id" end @@ -266,8 +265,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "parent_id" t.string "about_type" t.uuid "about_id" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.text "url" t.index ["about_type", "about_id"], name: "index_communication_website_menu_items_on_about" t.index ["menu_id"], name: "index_communication_website_menu_items_on_menu_id" @@ -281,8 +280,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "communication_website_id", null: false t.string "title" t.string "identifier" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.text "github_path" t.index ["communication_website_id"], name: "idx_comm_website_menus_on_communication_website_id" t.index ["university_id"], name: "index_communication_website_menus_on_university_id" @@ -297,8 +296,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.text "path" t.uuid "parent_id" t.integer "position", default: 0, null: false - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.boolean "published", default: false t.text "github_path" t.string "featured_image_alt" @@ -323,9 +322,9 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "title" t.text "description" t.boolean "published", default: false - t.datetime "published_at" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "published_at", precision: nil + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.text "slug" t.text "github_path" t.uuid "author_id" @@ -345,8 +344,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "university_id", null: false t.string "name" t.string "url" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "access_token" t.string "repository" t.string "about_type" @@ -378,21 +377,21 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.integer "attempts", default: 0, null: false t.text "handler", null: false t.text "last_error" - t.datetime "run_at" - t.datetime "locked_at" - t.datetime "failed_at" + t.datetime "run_at", precision: nil + t.datetime "locked_at", precision: nil + t.datetime "failed_at", precision: nil t.string "locked_by" t.string "queue" - t.datetime "created_at", precision: 6 - t.datetime "updated_at", precision: 6 + t.datetime "created_at" + t.datetime "updated_at" t.index ["priority", "run_at"], name: "delayed_jobs_priority" end create_table "education_academic_years", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| t.uuid "university_id", null: false t.integer "year" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["university_id"], name: "index_education_academic_years_on_university_id" end @@ -408,8 +407,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "program_id", null: false t.uuid "academic_year_id", null: false t.string "name" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["academic_year_id"], name: "index_education_cohorts_on_academic_year_id" t.index ["program_id"], name: "index_education_cohorts_on_program_id" t.index ["university_id"], name: "index_education_cohorts_on_university_id" @@ -428,8 +427,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.integer "level", default: 0 t.string "slug" t.uuid "university_id", null: false - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.integer "ects" t.text "duration" t.index ["university_id"], name: "index_education_diplomas_on_university_id" @@ -441,8 +440,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.integer "level" t.integer "capacity" t.boolean "continuing" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.uuid "parent_id" t.integer "position", default: 0 t.string "slug" @@ -504,8 +503,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "country" t.float "latitude" t.float "longitude" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "phone" t.index ["university_id"], name: "index_education_schools_on_university_id" end @@ -517,8 +516,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.integer "status", default: 0 t.uuid "university_id", null: false t.uuid "user_id", null: false - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["university_id"], name: "index_imports_on_university_id" t.index ["user_id"], name: "index_imports_on_user_id" end @@ -526,18 +525,18 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do create_table "languages", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| t.string "name" t.string "iso_code" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end create_table "research_journal_papers", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| t.string "title" - t.datetime "published_at" + t.datetime "published_at", precision: nil t.uuid "university_id", null: false t.uuid "research_journal_id", null: false t.uuid "research_journal_volume_id" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.uuid "updated_by_id" t.text "abstract" t.text "references" @@ -565,9 +564,9 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "research_journal_id", null: false t.string "title" t.integer "number" - t.datetime "published_at" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "published_at", precision: nil + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.text "description" t.text "keywords" t.string "slug" @@ -583,8 +582,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "university_id", null: false t.string "title" t.text "description" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "access_token" t.string "repository" t.string "issn" @@ -598,8 +597,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "zipcode" t.string "city" t.string "country" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["university_id"], name: "index_research_laboratories_on_university_id" end @@ -609,8 +608,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "name" t.text "description" t.integer "position" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "short_name" t.text "text" t.index ["research_laboratory_id"], name: "index_research_laboratory_axes_on_research_laboratory_id" @@ -627,8 +626,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.date "started_at" t.boolean "completed", default: false t.date "completed_at" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["author_id"], name: "index_research_theses_on_author_id" t.index ["director_id"], name: "index_research_theses_on_director_id" t.index ["research_laboratory_id"], name: "index_research_theses_on_research_laboratory_id" @@ -643,8 +642,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "city" t.string "country" t.boolean "private" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "mail_from_name" t.string "mail_from_address" t.string "sms_sender_name" @@ -674,8 +673,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.boolean "active", default: true t.string "siren" t.integer "kind", default: 10 - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "slug" t.text "text" t.string "nic" @@ -691,8 +690,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.boolean "is_researcher" t.boolean "is_teacher" t.boolean "is_administration" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "phone_mobile" t.string "email" t.text "description" @@ -725,8 +724,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.text "description" t.integer "from_year" t.integer "to_year" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["organization_id"], name: "index_university_person_experiences_on_organization_id" t.index ["person_id"], name: "index_university_person_experiences_on_person_id" t.index ["university_id"], name: "index_university_person_experiences_on_university_id" @@ -740,8 +739,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "target_id", null: false t.text "description" t.integer "position" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["person_id"], name: "index_university_person_involvements_on_person_id" t.index ["target_type", "target_id"], name: "index_university_person_involvements_on_target" t.index ["university_id"], name: "index_university_person_involvements_on_university_id" @@ -753,8 +752,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.uuid "target_id" t.text "description" t.integer "position" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["target_type", "target_id"], name: "index_university_roles_on_target" t.index ["university_id"], name: "index_university_roles_on_university_id" end @@ -767,22 +766,22 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" - t.datetime "reset_password_sent_at" - t.datetime "remember_created_at" + t.datetime "reset_password_sent_at", precision: nil + t.datetime "remember_created_at", precision: nil t.integer "sign_in_count", default: 0, null: false - t.datetime "current_sign_in_at" - t.datetime "last_sign_in_at" + t.datetime "current_sign_in_at", precision: nil + t.datetime "last_sign_in_at", precision: nil t.string "current_sign_in_ip" t.string "last_sign_in_ip" t.string "confirmation_token" - t.datetime "confirmed_at" - t.datetime "confirmation_sent_at" + t.datetime "confirmed_at", precision: nil + t.datetime "confirmation_sent_at", precision: nil t.string "unconfirmed_email" t.integer "failed_attempts", default: 0, null: false t.string "unlock_token" - t.datetime "locked_at" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false + t.datetime "locked_at", precision: nil + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.uuid "language_id" t.string "mobile_phone" t.integer "second_factor_attempts_count", default: 0 @@ -790,8 +789,8 @@ ActiveRecord::Schema.define(version: 2022_09_01_160808) do t.string "encrypted_otp_secret_key_iv" t.string "encrypted_otp_secret_key_salt" t.string "direct_otp" - t.datetime "direct_otp_sent_at" - t.datetime "totp_timestamp" + t.datetime "direct_otp_sent_at", precision: nil + t.datetime "totp_timestamp", precision: nil t.string "session_token" t.string "picture_url" t.string "direct_otp_delivery_method" -- GitLab