From a4585f8bbfb38f3b2aea699d6ec0a55002ad9e3c Mon Sep 17 00:00:00 2001 From: Koza Date: Fri, 13 Dec 2024 13:34:11 +0100 Subject: [PATCH] Add Rails 8 to the CI --- .github/workflows/test.yml | 16 ++++++++++++++-- CHANGELOG.md | 1 + lib/axlsx_rails/action_controller.rb | 17 +++++++++++------ spec/gemfiles/Gemfile.rails-8.0 | 12 ++++++++++++ ...ec.rb => render_template_controller_spec.rb} | 2 +- spec/spec_helper.rb | 1 + 6 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 spec/gemfiles/Gemfile.rails-8.0 rename spec/rails_app/spec/requests/{render_templates_controller_spec.rb => render_template_controller_spec.rb} (95%) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b01f1ae..bb35ae5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,6 +17,7 @@ jobs: - "7.0" - "7.1" - "7.2" + - "8.0" ruby: - "2.6" @@ -25,8 +26,12 @@ jobs: - "3.1" - "3.2" - "3.3" + - "3.4" exclude: + - rails: "6.1" + ruby: "3.4" + - rails: "7.0" ruby: "2.6" @@ -35,13 +40,20 @@ jobs: - rails: "7.2" ruby: "2.6" - - rails: "7.2" ruby: "2.7" - - rails: "7.2" ruby: "3.0" + - rails: "8.0" + ruby: "2.6" + - rails: "8.0" + ruby: "2.7" + - rails: "8.0" + ruby: "3.0" + - rails: "8.0" + ruby: "3.1" + env: BUNDLE_GEMFILE: ${{ github.workspace }}/spec/gemfiles/Gemfile.rails-${{ matrix.rails }} diff --git a/CHANGELOG.md b/CHANGELOG.md index f37118e..e0f1fea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Drop support for Ruby < 2.6 and Rails < 6.1 - Require at least caxlsx 4.0 +- Add Rails 8.0 and Ruby 3.4 to the CI matrix **June 18, 2024**: 0.6.4 release diff --git a/lib/axlsx_rails/action_controller.rb b/lib/axlsx_rails/action_controller.rb index 48f9e20..09bcf42 100644 --- a/lib/axlsx_rails/action_controller.rb +++ b/lib/axlsx_rails/action_controller.rb @@ -2,9 +2,7 @@ require 'action_controller' -unless Mime[:xlsx] - Mime::Type.register 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', :xlsx -end +Mime::Type.register 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', :xlsx unless Mime[:xlsx] ActionController::Renderers.add :xlsx do |filename, options| # @@ -22,14 +20,21 @@ # render 'controller/diff_action' # end # - options[:template] = filename.gsub(/^.*\//,'') if options[:template] == action_name + if options[:template].nil? + options[:template] ||= action_name + options[:prefixes] ||= self.class.ancestors + .take_while { |a| a.respond_to?(:controller_path) } + .map(&:controller_path) + end + + options[:template] = filename.gsub(%r{^.*/}, '') if options[:template] == action_name # force layout false options[:layout] = false # disposition / filename disposition = options.delete(:disposition) || 'attachment' - file_name = options.delete(:filename) || "#{filename.gsub(/^.*\//,'')}.xlsx" + file_name = options.delete(:filename) || "#{filename.gsub(%r{^.*/}, '')}.xlsx" file_name = "#{file_name}.xlsx" unless file_name =~ /\.xlsx$/ # alternate settings @@ -51,7 +56,7 @@ def to_xlsx if @default_response @default_response.call(options) else - controller.render({xlsx: controller.action_name}.merge(options)) + controller.render({ xlsx: controller.action_name }.merge(options)) end end end diff --git a/spec/gemfiles/Gemfile.rails-8.0 b/spec/gemfiles/Gemfile.rails-8.0 new file mode 100644 index 0000000..55ad7de --- /dev/null +++ b/spec/gemfiles/Gemfile.rails-8.0 @@ -0,0 +1,12 @@ +source "http://rubygems.org" + +gemspec path: '../../' + +gem 'rails', '~> 8.0.0' +gem 'puma' +gem 'responders', '~> 3.0' +gem 'sqlite3' +gem 'sprockets', '~> 4.0' +gem 'capybara', '~> 3.0' + +gem 'debug' diff --git a/spec/rails_app/spec/requests/render_templates_controller_spec.rb b/spec/rails_app/spec/requests/render_template_controller_spec.rb similarity index 95% rename from spec/rails_app/spec/requests/render_templates_controller_spec.rb rename to spec/rails_app/spec/requests/render_template_controller_spec.rb index 53130f5..3a50982 100644 --- a/spec/rails_app/spec/requests/render_templates_controller_spec.rb +++ b/spec/rails_app/spec/requests/render_template_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Examples::RespondToController do +describe Examples::RenderTemplateController do let(:path) { "/examples/render_template/#{variant}.xlsx" } shared_examples_for 'responds properly' do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 94fbbcb..1635b9c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -24,6 +24,7 @@ config.use_transactional_fixtures = false config.infer_base_class_for_anonymous_controllers = false config.order = "random" + config.filter_run_when_matching :focus end # TODO: move to the support folder