Skip to content

Commit

Permalink
Workflows / CI: updated to Rails 7
Browse files Browse the repository at this point in the history
Updated _dummy_ application to Rails 7.2.
Loading process has changed in Rails 7.
  • Loading branch information
Alexander-Senko committed Oct 3, 2024
1 parent cc5e477 commit 356d69c
Show file tree
Hide file tree
Showing 24 changed files with 403 additions and 169 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ jobs:
- 3.2
- 3.1
rails:
- 6.1 # TODO: move to 7.2
- 7.2
include:
# Edge
- { ruby: 'head', rails: 'edge', allow-fail: true }
# Outdated
- { ruby: '3.0', rails: '6.1' } # TODO: move to 7.1
- { ruby: '3.0', rails: '7.1' }
- { ruby: '2.7', rails: '6' } # RSpec AR Expectations support Rails 7.1 since Ruby 3.0
- { ruby: '2.6', rails: '6' }
- { ruby: '2.5', rails: '6' }
Expand Down
3 changes: 1 addition & 2 deletions .rspec
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
--color
--order rand
--format progress
8 changes: 5 additions & 3 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ gem 'puma'

platforms :ruby do
if RUBY_VERSION >= "2.5.0"
gem 'sqlite3', '~> 1.4'
gem 'sqlite3'
else
gem 'sqlite3', '~> 1.3.6'
end
Expand All @@ -17,8 +17,6 @@ platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
end

gem 'mongoid'

case rails_version = ENV['RAILS_VERSION']
when nil
gem 'rails'
Expand All @@ -28,6 +26,10 @@ else
gem 'rails', "~> #{rails_version}.0"
end

gem 'mongoid' unless
rails_version == 'edge'
gem 'active_model_serializers'

case RUBY_VERSION
when '2.6'...'3.0'
gem "turbo-rails", "<= 2.0.7"
Expand Down
1 change: 0 additions & 1 deletion draper.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ Gem::Specification.new do |s|
s.add_development_dependency 'rspec-activerecord-expectations'
s.add_development_dependency 'minitest-rails'
s.add_development_dependency 'capybara'
s.add_development_dependency 'active_model_serializers', '>= 0.10'
s.add_development_dependency 'rubocop'
s.add_development_dependency 'simplecov'
end
1 change: 0 additions & 1 deletion spec/dummy/.rspec
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
--color
--format progress
4 changes: 1 addition & 3 deletions spec/dummy/app/decorators/mongoid_post_decorator.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
if defined?(Mongoid)
class MongoidPostDecorator < Draper::Decorator
end
class MongoidPostDecorator < Draper::Decorator
end
6 changes: 2 additions & 4 deletions spec/dummy/app/models/admin.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
if defined?(Devise)
class Admin
extend Devise::Models
end
class Admin
extend Devise::Models if defined? Devise
end
6 changes: 2 additions & 4 deletions spec/dummy/app/models/mongoid_post.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
if defined?(Mongoid)
class MongoidPost
include Mongoid::Document
end
class MongoidPost
include Mongoid::Document if defined? Mongoid
end
2 changes: 0 additions & 2 deletions spec/dummy/app/models/post.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'turbo/broadcastable' if defined? Turbo::Broadcastable # HACK: looks weird, but works

class Post < ApplicationRecord
# attr_accessible :title, :body

Expand Down
6 changes: 2 additions & 4 deletions spec/dummy/app/models/user.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
if defined?(Devise)
class User
extend Devise::Models
end
class User
extend Devise::Models if defined? Devise
end
74 changes: 22 additions & 52 deletions spec/dummy/config/application.rb
Original file line number Diff line number Diff line change
@@ -1,64 +1,34 @@
require File.expand_path('../boot', __FILE__)

def attempt_require(file)
require file
rescue LoadError
end
require_relative 'boot'

require 'rails/all'
require 'draper'
attempt_require 'mongoid'
attempt_require 'devise'
attempt_require 'turbo-rails'
require 'active_model_serializers'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Kernel.silence_warnings do
Bundler.require(*Rails.groups)
end

module Dummy
class Application < Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)

# Only load the plugins named here, in the order given (default is alphabetical).
# :all can be used as a placeholder for all plugins not explicitly named.
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]

# Activate observers that should always be running.
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer

# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# config.time_zone = 'Central Time (US & Canada)'

# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
# config.i18n.default_locale = :de

# Configure the default encoding used in templates for Ruby 1.9.
config.encoding = "utf-8"

# Enable escaping HTML in JSON.
config.active_support.escape_html_entities_in_json = true

# Use SQL instead of Active Record's schema dumper when creating the database.
# This is necessary if your schema can't be completely dumped by the schema dumper,
# like if you have constraints or database-specific column types
# config.active_record.schema_format = :sql
config.load_defaults Rails::VERSION::STRING.to_f

# Enforce whitelist mode for mass assignment.
# This will create an empty whitelist of attributes available for mass-assignment for all models
# in your app. As such, your models will need to explicitly whitelist or blacklist accessible
# parameters by using an attr_accessible or attr_protected declaration.
# config.active_record.whitelist_attributes = true
# For compatibility with applications that use this config
# config.action_controller.include_all_helpers = false # FIXME

# Enable the asset pipeline
# config.assets.enabled = true
# Please, add to the `ignore` list any other `lib` subdirectories that do
# not contain `.rb` files, or that should not be reloaded or eager loaded.
# Common ones are `templates`, `generators`, or `middleware`, for example.
config.try :autoload_lib, ignore: %w[assets tasks] # HACK for Rails below 7

# Version of your assets, change this if you want to expire all your assets
# config.assets.version = '1.0'
# Configuration for the application, engines, and railties goes here.
#
# These settings can be overridden in specific environments using the files
# in config/environments, which are processed later.
#
# config.time_zone = "Central Time (US & Canada)"
# config.eager_load_paths << Rails.root.join("extras")

# HACK: allows testing in production & development environments
# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
Expand Down
87 changes: 65 additions & 22 deletions spec/dummy/config/environments/development.rb
Original file line number Diff line number Diff line change
@@ -1,35 +1,78 @@
Dummy::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
require "active_support/core_ext/integer/time"

# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
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
config.enable_reloading = true

# Do not eager load code on boot.
config.eager_load = false

# Show full error reports.
config.consider_all_requests_local = true

# Enable server timing.
config.server_timing = true

# Show full error reports and disable caching
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Enable/disable caching. By default caching is disabled.
# Run rails dev:cache to toggle caching.
if Rails.root.join("tmp/caching-dev.txt").exist?
config.action_controller.perform_caching = true
config.action_controller.enable_fragment_cache_logging = true

config.cache_store = :memory_store
config.public_file_server.headers = { "Cache-Control" => "public, max-age=#{2.days.to_i}" }
else
config.action_controller.perform_caching = false

config.cache_store = :null_store
end

# Store uploaded files on the local file system (see config/storage.yml for options).
config.active_storage.service = :local

# Print deprecation notices to the Rails logger
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false

# Disable caching for Action Mailer templates even if Action Controller
# caching is enabled.
config.action_mailer.perform_caching = false

config.action_mailer.default_url_options = { host: "localhost", port: 3000 }

# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log

# Only use best-standards-support built into browsers
config.action_dispatch.best_standards_support = :builtin
# Raise exceptions for disallowed deprecations.
config.active_support.disallowed_deprecation = :raise

config.eager_load = false
# Tell Active Support which deprecation messages to disallow.
config.active_support.disallowed_deprecation_warnings = []

# Raise exception on mass assignment protection for Active Record models
# config.active_record.mass_assignment_sanitizer = :strict
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load

# Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL)
# config.active_record.auto_explain_threshold_in_seconds = 0.5
# Highlight code that triggered database queries in logs.
config.active_record.verbose_query_logs = true

# Do not compress assets
# config.assets.compress = false
# Highlight code that enqueued background job in logs.
# config.active_job.verbose_enqueue_logs = true

# Expands the lines which load the assets
# config.assets.debug = true
# Suppress logger output for asset requests.
# config.assets.quiet = true

config.active_storage.service = :local
# Raises error for missing translations.
# config.i18n.raise_on_missing_translations = true

# Annotate rendered view with file names.
# config.action_view.annotate_rendered_view_with_filenames = true

# Uncomment if you wish to allow Action Cable access from any origin.
# config.action_cable.disable_request_forgery_protection = true

# Raise error when a before_action's only/except options reference missing actions.
# config.action_controller.raise_on_missing_callback_actions = true
end
Loading

0 comments on commit 356d69c

Please sign in to comment.