From 7fa4456212235ee493661f3fffafbb93ac51378e Mon Sep 17 00:00:00 2001 From: Julian Rubisch Date: Thu, 28 Mar 2024 16:27:20 +0100 Subject: [PATCH 1/4] chore: Update package.json version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2afd638..00c5b7e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@minthesize/cubism", - "version": "0.1.0", + "version": "0.1.1", "description": "Lightweight Resource-Based Presence Solution with CableReady.", "main": "./dist/cubism.umd.min.js", "module": "./dist/cubism.min.js", From 1b0fd5060a04322ce9b64b27df716498b7ec2323 Mon Sep 17 00:00:00 2001 From: Julian Rubisch Date: Thu, 28 Mar 2024 16:28:56 +0100 Subject: [PATCH 2/4] chore: Update test matrix --- .github/workflows/tests.yml | 4 ++-- gemfiles/rails_7_1.gemfile | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 gemfiles/rails_7_1.gemfile diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5836531..7fd4853 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,8 +14,8 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: [2.7.2, 3.0.3, 3.1.0] - rails-version: ['6_0', '6_1', '7_0'] + ruby-version: [3.1.4, 3.2.3, 3.3.0] + rails-version: ['6_0', '6_1', '7_0', '7_1'] env: BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/rails_${{ matrix.rails-version }}.gemfile steps: diff --git a/gemfiles/rails_7_1.gemfile b/gemfiles/rails_7_1.gemfile new file mode 100644 index 0000000..9e66ee8 --- /dev/null +++ b/gemfiles/rails_7_1.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "pry", group: [:development, :test] +gem "rails", "7.1.3.2" +gem "sqlite3", "~> 1.4" + +gemspec path: "../" From f685bdf127b4c45d119700bd90982b4288830a1f Mon Sep 17 00:00:00 2001 From: Julian Rubisch Date: Thu, 28 Mar 2024 17:05:58 +0100 Subject: [PATCH 3/4] fix: Resurrect Erubi.evaluate --- lib/cubism/preprocessor.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/cubism/preprocessor.rb b/lib/cubism/preprocessor.rb index d53f7d4..82c9735 100644 --- a/lib/cubism/preprocessor.rb +++ b/lib/cubism/preprocessor.rb @@ -14,6 +14,7 @@ def process begin do_parse rescue NameError + # TODO we need a better way to handle this, leads to false negatives # we ignore any name errors from unset instance variables or local assigns here end @@ -23,11 +24,21 @@ def process private def do_parse - ActionView::Template::Handlers::ERB::Erubi.new(@source).evaluate(@view_context) + erubi = ActionView::Template::Handlers::ERB::Erubi.new(@source) + + evaluate_view(erubi, @view_context) rescue SyntaxError end_at_end = /(<%\s+end\s+%>)\z/.match(@source) @source = end_at_end ? @source[..-(end_at_end[0].length + 1)] : @source[..-2] do_parse end + + def evaluate_view(erubi, view_context) + view = Class.new(ActionView::Base) { + include view_context._routes.url_helpers + class_eval("define_method(:_template) { |local_assigns, output_buffer| #{erubi.src} }", erubi.filename.nil? ? "(erubi)" : erubi.filename, 0) + }.empty + view._run(:_template, nil, {}, ActionView::OutputBuffer.new) + end end end From 9043b8051df38e4ef317d0c7ac485d47eca81afd Mon Sep 17 00:00:00 2001 From: Julian Rubisch Date: Thu, 28 Mar 2024 17:06:23 +0100 Subject: [PATCH 4/4] fix: Rescue not existing user in channel --- app/channels/cubism/presence_channel.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/channels/cubism/presence_channel.rb b/app/channels/cubism/presence_channel.rb index 8ad6bea..d3c53a5 100644 --- a/app/channels/cubism/presence_channel.rb +++ b/app/channels/cubism/presence_channel.rb @@ -21,10 +21,14 @@ def unsubscribed def appear resource.set_present_users_for_scope(resource.present_users_for_scope(scope).add(user.id), scope) if scope + rescue ActiveRecord::RecordNotFound + # do nothing if the user wasn't found end def disappear resource.set_present_users_for_scope(resource.present_users_for_scope(scope).delete(user.id), scope) if scope + rescue ActiveRecord::RecordNotFound + # do nothing if the user wasn't found end private