Sha256: 185f35743c2277eed22c728b66c85e493099b522748c1da4a9a4225f9341c25a

Contents?: true

Size: 1.22 KB

Versions: 5

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

require "stimulus_reflex/installer"

initializer = action_cable_initializer_working_path.read

if gemfile.match?(/gem ['"]permessage_deflate['"]/)
  say "⏩ permessage_deflate already present in Gemfile. Skipping."
else
  add_gem "permessage_deflate@>= 0.1"
end

# add permessage_deflate config to Action Cable initializer
if initializer.exclude? "PermessageDeflate.configure"
  create_or_append(action_cable_initializer_working_path, verbose: false) do
    <<~RUBY
      module ActionCable
        module Connection
          class ClientSocket
            alias_method :old_initialize, :initialize
            def initialize(env, event_target, event_loop, protocols)
              old_initialize(env, event_target, event_loop, protocols)
              @driver.add_extension(
                PermessageDeflate.configure(
                  level: Zlib::BEST_COMPRESSION,
                  max_window_bits: 13
                )
              )
            end
          end
        end
      end
    RUBY
  end

  say "✅ Action Cable initializer patched to deflate websocket traffic"
else
  say "⏩ Action Cable initializer is already patched to deflate websocket traffic. Skipping."
end

complete_step :compression

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
stimulus_reflex-3.5.0.rc4 lib/install/compression.rb
stimulus_reflex-3.5.0.rc3 lib/install/compression.rb
stimulus_reflex-3.5.0.rc2 lib/install/compression.rb
stimulus_reflex-3.5.0.rc1 lib/install/compression.rb
stimulus_reflex-3.5.0.pre10 lib/install/compression.rb