anycable-rails 1.0.0.preview1 → 1.0.0.rc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +29 -121
 - data/MIT-LICENSE +1 -1
 - data/README.md +19 -34
 - data/lib/anycable/rails.rb +36 -2
 - data/lib/anycable/rails/actioncable/channel.rb +4 -0
 - data/lib/anycable/rails/actioncable/connection.rb +26 -35
 - data/lib/anycable/rails/actioncable/connection/persistent_session.rb +5 -1
 - data/lib/anycable/rails/actioncable/connection/serializable_identification.rb +42 -0
 - data/lib/anycable/rails/actioncable/remote_connections.rb +11 -0
 - data/lib/anycable/rails/actioncable/testing.rb +35 -0
 - data/lib/anycable/rails/channel_state.rb +46 -0
 - data/lib/anycable/rails/compatibility.rb +4 -7
 - data/lib/anycable/rails/compatibility/rubocop.rb +0 -1
 - data/lib/anycable/rails/compatibility/rubocop/config/default.yml +3 -0
 - data/lib/anycable/rails/compatibility/rubocop/cops/anycable/instance_vars.rb +1 -1
 - data/lib/anycable/rails/compatibility/rubocop/cops/anycable/stream_from.rb +4 -4
 - data/lib/anycable/rails/railtie.rb +26 -18
 - data/lib/anycable/rails/refinements/subscriptions.rb +5 -0
 - data/lib/anycable/rails/session_proxy.rb +19 -2
 - data/lib/anycable/rails/version.rb +1 -1
 - data/lib/generators/anycable/download/USAGE +14 -0
 - data/lib/generators/anycable/download/download_generator.rb +83 -0
 - data/lib/generators/anycable/setup/USAGE +2 -0
 - data/lib/{rails/generators → generators}/anycable/setup/setup_generator.rb +89 -90
 - data/lib/{rails/generators → generators}/anycable/setup/templates/Procfile.dev +0 -0
 - data/lib/{rails/generators → generators}/anycable/setup/templates/config/anycable.yml.tt +14 -3
 - data/lib/generators/anycable/setup/templates/config/cable.yml.tt +11 -0
 - data/lib/{rails/generators/anycable/setup/templates/config/initializers/anycable.rb → generators/anycable/setup/templates/config/initializers/anycable.rb.tt} +1 -1
 - data/lib/generators/anycable/with_os_helpers.rb +55 -0
 - metadata +27 -50
 - data/lib/anycable/rails/compatibility/rubocop/cops/anycable/remote_disconnect.rb +0 -31
 - data/lib/rails/generators/anycable/setup/templates/Procfile +0 -2
 - data/lib/rails/generators/anycable/setup/templates/bin/heroku-web +0 -7
 - data/lib/rails/generators/anycable/setup/templates/config/cable.yml.tt +0 -11
 
| 
         @@ -1,33 +1,23 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            require "generators/anycable/with_os_helpers"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
            module AnyCableRailsGenerators
         
     | 
| 
       4 
6 
     | 
    
         
             
              # Entry point for interactive installation
         
     | 
| 
       5 
7 
     | 
    
         
             
              class SetupGenerator < ::Rails::Generators::Base
         
     | 
| 
       6 
8 
     | 
    
         
             
                namespace "anycable:setup"
         
     | 
| 
       7 
9 
     | 
    
         
             
                source_root File.expand_path("templates", __dir__)
         
     | 
| 
       8 
10 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
                OS_NAMES = %w[linux darwin freebsd win].freeze
         
     | 
| 
       12 
     | 
    
         
            -
                CPU_NAMES = %w[amd64 arm64 386 arm].freeze
         
     | 
| 
      
 11 
     | 
    
         
            +
                DOCS_ROOT = "https://docs.anycable.io/v1/#"
         
     | 
| 
      
 12 
     | 
    
         
            +
                DEVELOPMENT_METHODS = %w[skip local docker].freeze
         
     | 
| 
       13 
13 
     | 
    
         
             
                SERVER_SOURCES = %w[skip brew binary].freeze
         
     | 
| 
       14 
     | 
    
         
            -
                DEFAULT_BIN_PATH = "/usr/local/bin"
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                class_option : 
     | 
| 
      
 15 
     | 
    
         
            +
                class_option :devenv,
         
     | 
| 
       17 
16 
     | 
    
         
             
                  type: :string,
         
     | 
| 
       18 
     | 
    
         
            -
                  desc: "Select your development environment (options: #{ 
     | 
| 
      
 17 
     | 
    
         
            +
                  desc: "Select your development environment (options: #{DEVELOPMENT_METHODS.join(", ")})"
         
     | 
| 
       19 
18 
     | 
    
         
             
                class_option :source,
         
     | 
| 
       20 
19 
     | 
    
         
             
                  type: :string,
         
     | 
| 
       21 
20 
     | 
    
         
             
                  desc: "Choose a way of installing AnyCable-Go server (options: #{SERVER_SOURCES.join(", ")})"
         
     | 
| 
       22 
     | 
    
         
            -
                class_option :bin_path,
         
     | 
| 
       23 
     | 
    
         
            -
                  type: :string,
         
     | 
| 
       24 
     | 
    
         
            -
                  desc: "Where to download AnyCable-Go server binary (default: #{DEFAULT_BIN_PATH})"
         
     | 
| 
       25 
     | 
    
         
            -
                class_option :os,
         
     | 
| 
       26 
     | 
    
         
            -
                  type: :string,
         
     | 
| 
       27 
     | 
    
         
            -
                  desc: "Specify the OS for AnyCable-Go server binary (options: #{OS_NAMES.join(", ")})"
         
     | 
| 
       28 
     | 
    
         
            -
                class_option :cpu,
         
     | 
| 
       29 
     | 
    
         
            -
                  type: :string,
         
     | 
| 
       30 
     | 
    
         
            -
                  desc: "Specify the CPU architecturefor AnyCable-Go server binary (options: #{CPU_NAMES.join(", ")})"
         
     | 
| 
       31 
21 
     | 
    
         
             
                class_option :skip_heroku,
         
     | 
| 
       32 
22 
     | 
    
         
             
                  type: :boolean,
         
     | 
| 
       33 
23 
     | 
    
         
             
                  desc: "Do not copy Heroku configs"
         
     | 
| 
         @@ -35,6 +25,15 @@ module AnyCableRailsGenerators 
     | 
|
| 
       35 
25 
     | 
    
         
             
                  type: :boolean,
         
     | 
| 
       36 
26 
     | 
    
         
             
                  desc: "Do not create Procfile.dev"
         
     | 
| 
       37 
27 
     | 
    
         | 
| 
      
 28 
     | 
    
         
            +
                include WithOSHelpers
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                class_option :bin_path,
         
     | 
| 
      
 31 
     | 
    
         
            +
                  type: :string,
         
     | 
| 
      
 32 
     | 
    
         
            +
                  desc: "Where to download AnyCable-Go server binary (default: #{DEFAULT_BIN_PATH})"
         
     | 
| 
      
 33 
     | 
    
         
            +
                class_option :version,
         
     | 
| 
      
 34 
     | 
    
         
            +
                  type: :string,
         
     | 
| 
      
 35 
     | 
    
         
            +
                  desc: "Specify the AnyCable-Go version (defaults to latest release)"
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
       38 
37 
     | 
    
         
             
                def welcome
         
     | 
| 
       39 
38 
     | 
    
         
             
                  say "👋 Welcome to AnyCable interactive installer."
         
     | 
| 
       40 
39 
     | 
    
         
             
                end
         
     | 
| 
         @@ -50,32 +49,36 @@ module AnyCableRailsGenerators 
     | 
|
| 
       50 
49 
     | 
    
         
             
                  environment(nil, env: :development) do
         
     | 
| 
       51 
50 
     | 
    
         
             
                    <<~SNIPPET
         
     | 
| 
       52 
51 
     | 
    
         
             
                      # Specify AnyCable WebSocket server URL to use by JS client
         
     | 
| 
       53 
     | 
    
         
            -
                      config. 
     | 
| 
      
 52 
     | 
    
         
            +
                      config.after_initialize do
         
     | 
| 
      
 53 
     | 
    
         
            +
                        config.action_cable.url = ActionCable.server.config.url = ENV.fetch("CABLE_URL", "ws://localhost:8080/cable") if AnyCable::Rails.enabled?
         
     | 
| 
      
 54 
     | 
    
         
            +
                      end
         
     | 
| 
       54 
55 
     | 
    
         
             
                    SNIPPET
         
     | 
| 
       55 
56 
     | 
    
         
             
                  end
         
     | 
| 
       56 
57 
     | 
    
         | 
| 
       57 
58 
     | 
    
         
             
                  environment(nil, env: :production) do
         
     | 
| 
       58 
59 
     | 
    
         
             
                    <<~SNIPPET
         
     | 
| 
       59 
60 
     | 
    
         
             
                      # Specify AnyCable WebSocket server URL to use by JS client
         
     | 
| 
       60 
     | 
    
         
            -
                      config. 
     | 
| 
      
 61 
     | 
    
         
            +
                      config.after_initialize do
         
     | 
| 
      
 62 
     | 
    
         
            +
                        config.action_cable.url = ActionCable.server.config.url = ENV.fetch("CABLE_URL") if AnyCable::Rails.enabled?
         
     | 
| 
      
 63 
     | 
    
         
            +
                      end
         
     | 
| 
       61 
64 
     | 
    
         
             
                    SNIPPET
         
     | 
| 
       62 
65 
     | 
    
         
             
                  end
         
     | 
| 
       63 
66 
     | 
    
         | 
| 
       64 
67 
     | 
    
         
             
                  say_status :info, "✅ 'config.action_cable.url' has been configured"
         
     | 
| 
       65 
     | 
    
         
            -
                  say_status :help, "⚠️ 
     | 
| 
      
 68 
     | 
    
         
            +
                  say_status :help, "⚠️  If you're using JS client make sure you have " \
         
     | 
| 
       66 
69 
     | 
    
         
             
                                    "`action_cable_meta_tag` included before any <script> tag in your application.html"
         
     | 
| 
       67 
70 
     | 
    
         
             
                end
         
     | 
| 
       68 
71 
     | 
    
         | 
| 
       69 
72 
     | 
    
         
             
                def development_method
         
     | 
| 
       70 
     | 
    
         
            -
                  answer =  
     | 
| 
      
 73 
     | 
    
         
            +
                  answer = DEVELOPMENT_METHODS.index(options[:devenv]) || 99
         
     | 
| 
       71 
74 
     | 
    
         | 
| 
       72 
     | 
    
         
            -
                  until  
     | 
| 
      
 75 
     | 
    
         
            +
                  until DEVELOPMENT_METHODS[answer.to_i]
         
     | 
| 
       73 
76 
     | 
    
         
             
                    answer = ask "Which environment do you use for development? (1) Local, (2) Docker, (0) Skip"
         
     | 
| 
       74 
77 
     | 
    
         
             
                  end
         
     | 
| 
       75 
78 
     | 
    
         | 
| 
       76 
     | 
    
         
            -
                  case env =  
     | 
| 
      
 79 
     | 
    
         
            +
                  case env = DEVELOPMENT_METHODS[answer.to_i]
         
     | 
| 
       77 
80 
     | 
    
         
             
                  when "skip"
         
     | 
| 
       78 
     | 
    
         
            -
                    say_status :help, "⚠️ 
     | 
| 
      
 81 
     | 
    
         
            +
                    say_status :help, "⚠️  Please, read this guide on how to install AnyCable-Go server 👉 #{DOCS_ROOT}/anycable-go/getting_started", :yellow
         
     | 
| 
       79 
82 
     | 
    
         
             
                  else
         
     | 
| 
       80 
83 
     | 
    
         
             
                    send "install_for_#{env}"
         
     | 
| 
       81 
84 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -83,15 +86,21 @@ module AnyCableRailsGenerators 
     | 
|
| 
       83 
86 
     | 
    
         | 
| 
       84 
87 
     | 
    
         
             
                def heroku
         
     | 
| 
       85 
88 
     | 
    
         
             
                  if options[:skip_heroku].nil?
         
     | 
| 
       86 
     | 
    
         
            -
                    return unless yes? "Do you use Heroku for deployment?"
         
     | 
| 
      
 89 
     | 
    
         
            +
                    return unless yes? "Do you use Heroku for deployment? [Yn]"
         
     | 
| 
       87 
90 
     | 
    
         
             
                  elsif options[:skip_heroku]
         
     | 
| 
       88 
91 
     | 
    
         
             
                    return
         
     | 
| 
       89 
92 
     | 
    
         
             
                  end
         
     | 
| 
       90 
93 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
                   
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
      
 94 
     | 
    
         
            +
                  in_root do
         
     | 
| 
      
 95 
     | 
    
         
            +
                    next unless File.file?("Procfile")
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                    contents = File.read("Procfile")
         
     | 
| 
      
 98 
     | 
    
         
            +
                    contents.sub!(/^web: (.*)$/, %q(web: [[ "$ANYCABLE_DEPLOYMENT" == "true" ]] && bundle exec anycable --server-command="anycable-go" || \1))
         
     | 
| 
      
 99 
     | 
    
         
            +
                    File.write("Procfile", contents)
         
     | 
| 
      
 100 
     | 
    
         
            +
                    say_status :info, "✅ Procfile updated"
         
     | 
| 
      
 101 
     | 
    
         
            +
                  end
         
     | 
| 
       93 
102 
     | 
    
         | 
| 
       94 
     | 
    
         
            -
                  say_status :help, "️️⚠️ 
     | 
| 
      
 103 
     | 
    
         
            +
                  say_status :help, "️️⚠️  Please, read the required steps to configure Heroku applications 👉 #{DOCS_ROOT}/deployment/heroku", :yellow
         
     | 
| 
       95 
104 
     | 
    
         
             
                end
         
     | 
| 
       96 
105 
     | 
    
         | 
| 
       97 
106 
     | 
    
         
             
                def devise
         
     | 
| 
         @@ -106,6 +115,20 @@ module AnyCableRailsGenerators 
     | 
|
| 
       106 
115 
     | 
    
         
             
                  say_status :info, "✅ config/initializers/anycable.rb with Devise configuration has been added"
         
     | 
| 
       107 
116 
     | 
    
         
             
                end
         
     | 
| 
       108 
117 
     | 
    
         | 
| 
      
 118 
     | 
    
         
            +
                def stimulus_reflex
         
     | 
| 
      
 119 
     | 
    
         
            +
                  return unless stimulus_reflex?
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                  say_status :help, "⚠️  Please, check out the documentation on using AnyCable with Stimulus Reflex: https://docs.anycable.io/v1/#/ruby/stimulus_reflex"
         
     | 
| 
      
 122 
     | 
    
         
            +
                end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                def rubocop_compatibility
         
     | 
| 
      
 125 
     | 
    
         
            +
                  return unless rubocop?
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                  say_status :info, "🤖 Running static compatibility checks with RuboCop"
         
     | 
| 
      
 128 
     | 
    
         
            +
                  res = run "bundle exec rubocop -r 'anycable/rails/compatibility/rubocop' --only AnyCable/InstanceVars,AnyCable/PeriodicalTimers,AnyCable/InstanceVars"
         
     | 
| 
      
 129 
     | 
    
         
            +
                  say_status :help, "⚠️  Please, take a look at the icompatibilities above and fix them. See https://docs.anycable.io/v1/#/ruby/compatibility" unless res
         
     | 
| 
      
 130 
     | 
    
         
            +
                end
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
       109 
132 
     | 
    
         
             
                def finish
         
     | 
| 
       110 
133 
     | 
    
         
             
                  say_status :info, "✅ AnyCable has been configured successfully!"
         
     | 
| 
       111 
134 
     | 
    
         
             
                end
         
     | 
| 
         @@ -113,7 +136,15 @@ module AnyCableRailsGenerators 
     | 
|
| 
       113 
136 
     | 
    
         
             
                private
         
     | 
| 
       114 
137 
     | 
    
         | 
| 
       115 
138 
     | 
    
         
             
                def stimulus_reflex?
         
     | 
| 
       116 
     | 
    
         
            -
                   
     | 
| 
      
 139 
     | 
    
         
            +
                  !!gemfile_lock&.match?(/^\s+stimulus_reflex\b/)
         
     | 
| 
      
 140 
     | 
    
         
            +
                end
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
                def redis?
         
     | 
| 
      
 143 
     | 
    
         
            +
                  !!gemfile_lock&.match?(/^\s+redis\b/)
         
     | 
| 
      
 144 
     | 
    
         
            +
                end
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
                def rubocop?
         
     | 
| 
      
 147 
     | 
    
         
            +
                  !!gemfile_lock&.match?(/^\s+rubocop\b/)
         
     | 
| 
       117 
148 
     | 
    
         
             
                end
         
     | 
| 
       118 
149 
     | 
    
         | 
| 
       119 
150 
     | 
    
         
             
                def gemfile_lock
         
     | 
| 
         @@ -128,32 +159,41 @@ module AnyCableRailsGenerators 
     | 
|
| 
       128 
159 
     | 
    
         
             
                end
         
     | 
| 
       129 
160 
     | 
    
         | 
| 
       130 
161 
     | 
    
         
             
                def install_for_docker
         
     | 
| 
       131 
     | 
    
         
            -
                   
     | 
| 
      
 162 
     | 
    
         
            +
                  # Remove localhost from configuraiton
         
     | 
| 
      
 163 
     | 
    
         
            +
                  gsub_file "config/anycable.yml", /^.*redis_url:.*localhost[^\n]+\n/, ""
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
                  say_status :help, "️️⚠️  Docker development configuration could vary", :yellow
         
     | 
| 
       132 
166 
     | 
    
         | 
| 
       133 
167 
     | 
    
         
             
                  say "Here is an example snippet for docker-compose.yml:"
         
     | 
| 
       134 
168 
     | 
    
         
             
                  say <<~YML
         
     | 
| 
       135 
169 
     | 
    
         
             
                    ─────────────────────────────────────────
         
     | 
| 
       136 
     | 
    
         
            -
                     
     | 
| 
       137 
     | 
    
         
            -
                      image: anycable/anycable-go: 
     | 
| 
      
 170 
     | 
    
         
            +
                    ws:
         
     | 
| 
      
 171 
     | 
    
         
            +
                      image: anycable/anycable-go:1.0
         
     | 
| 
       138 
172 
     | 
    
         
             
                      ports:
         
     | 
| 
       139 
     | 
    
         
            -
                        - ' 
     | 
| 
      
 173 
     | 
    
         
            +
                        - '8080:8080'
         
     | 
| 
       140 
174 
     | 
    
         
             
                      environment:
         
     | 
| 
       141 
     | 
    
         
            -
                         
     | 
| 
      
 175 
     | 
    
         
            +
                        ANYCABLE_HOST: "0.0.0.0"
         
     | 
| 
       142 
176 
     | 
    
         
             
                        ANYCABLE_REDIS_URL: redis://redis:6379/0
         
     | 
| 
       143 
     | 
    
         
            -
                        ANYCABLE_RPC_HOST: anycable 
     | 
| 
      
 177 
     | 
    
         
            +
                        ANYCABLE_RPC_HOST: anycable:50051
         
     | 
| 
      
 178 
     | 
    
         
            +
                        ANYCABLE_DEBUG: 1
         
     | 
| 
       144 
179 
     | 
    
         
             
                      depends_on:
         
     | 
| 
       145 
     | 
    
         
            -
                         
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
      
 180 
     | 
    
         
            +
                        redis:
         
     | 
| 
      
 181 
     | 
    
         
            +
                          condition: service_healthy
         
     | 
| 
       147 
182 
     | 
    
         | 
| 
       148 
     | 
    
         
            -
                    anycable 
     | 
| 
      
 183 
     | 
    
         
            +
                    anycable:
         
     | 
| 
       149 
184 
     | 
    
         
             
                      <<: *backend
         
     | 
| 
       150 
185 
     | 
    
         
             
                      command: bundle exec anycable
         
     | 
| 
       151 
186 
     | 
    
         
             
                      environment:
         
     | 
| 
       152 
187 
     | 
    
         
             
                        <<: *backend_environment
         
     | 
| 
       153 
188 
     | 
    
         
             
                        ANYCABLE_REDIS_URL: redis://redis:6379/0
         
     | 
| 
       154 
189 
     | 
    
         
             
                        ANYCABLE_RPC_HOST: 0.0.0.0:50051
         
     | 
| 
      
 190 
     | 
    
         
            +
                        ANYCABLE_DEBUG: 1
         
     | 
| 
       155 
191 
     | 
    
         
             
                      ports:
         
     | 
| 
       156 
192 
     | 
    
         
             
                        - '50051'
         
     | 
| 
      
 193 
     | 
    
         
            +
                      depends_on:
         
     | 
| 
      
 194 
     | 
    
         
            +
                        <<: *backend_depends_on
         
     | 
| 
      
 195 
     | 
    
         
            +
                        ws:
         
     | 
| 
      
 196 
     | 
    
         
            +
                          condition: service_started
         
     | 
| 
       157 
197 
     | 
    
         
             
                    ─────────────────────────────────────────
         
     | 
| 
       158 
198 
     | 
    
         
             
                  YML
         
     | 
| 
       159 
199 
     | 
    
         
             
                end
         
     | 
| 
         @@ -172,7 +212,7 @@ module AnyCableRailsGenerators 
     | 
|
| 
       172 
212 
     | 
    
         | 
| 
       173 
213 
     | 
    
         
             
                  case answer.to_i
         
     | 
| 
       174 
214 
     | 
    
         
             
                  when 0
         
     | 
| 
       175 
     | 
    
         
            -
                    say_status :help, "⚠️ 
     | 
| 
      
 215 
     | 
    
         
            +
                    say_status :help, "⚠️  Please, read this guide on how to install AnyCable-Go server 👉 #{DOCS_ROOT}/anycable-go/getting_started", :yellow
         
     | 
| 
       176 
216 
     | 
    
         
             
                    return
         
     | 
| 
       177 
217 
     | 
    
         
             
                  else
         
     | 
| 
       178 
218 
     | 
    
         
             
                    return unless send("install_from_#{SERVER_SOURCES[answer.to_i]}")
         
     | 
| 
         @@ -205,63 +245,22 @@ module AnyCableRailsGenerators 
     | 
|
| 
       205 
245 
     | 
    
         
             
                end
         
     | 
| 
       206 
246 
     | 
    
         | 
| 
       207 
247 
     | 
    
         
             
                def install_from_binary
         
     | 
| 
       208 
     | 
    
         
            -
                   
     | 
| 
       209 
     | 
    
         
            -
                   
     | 
| 
       210 
     | 
    
         
            -
                  out ||= ask "Please, enter the path to download the AnyCable-Go binary to", default: DEFAULT_BIN_PATH, path: true
         
     | 
| 
       211 
     | 
    
         
            -
             
     | 
| 
       212 
     | 
    
         
            -
                  os_name = options[:os] ||
         
     | 
| 
       213 
     | 
    
         
            -
                    OS_NAMES.find(&Gem::Platform.local.os.method(:==)) ||
         
     | 
| 
       214 
     | 
    
         
            -
                    ask("What is your OS name?", limited_to: OS_NAMES)
         
     | 
| 
      
 248 
     | 
    
         
            +
                  bin_path ||= DEFAULT_BIN_PATH if options[:devenv] # User don't want interactive mode
         
     | 
| 
      
 249 
     | 
    
         
            +
                  bin_path ||= ask "Please, enter the path to download the AnyCable-Go binary to", default: DEFAULT_BIN_PATH, path: true
         
     | 
| 
       215 
250 
     | 
    
         | 
| 
       216 
     | 
    
         
            -
                   
     | 
| 
       217 
     | 
    
         
            -
                    CPU_NAMES.find(¤t_cpu.method(:==)) ||
         
     | 
| 
       218 
     | 
    
         
            -
                    ask("What is your CPU architecture?", limited_to: CPU_NAMES)
         
     | 
| 
       219 
     | 
    
         
            -
             
     | 
| 
       220 
     | 
    
         
            -
                  download_exe(
         
     | 
| 
       221 
     | 
    
         
            -
                    "https://github.com/anycable/anycable-go/releases/download/#{SERVER_VERSION}/" \
         
     | 
| 
       222 
     | 
    
         
            -
                    "anycable-go-#{SERVER_VERSION}-#{os_name}-#{cpu_name}",
         
     | 
| 
       223 
     | 
    
         
            -
                    to: out,
         
     | 
| 
       224 
     | 
    
         
            -
                    file_name: "anycable-go"
         
     | 
| 
       225 
     | 
    
         
            -
                  )
         
     | 
| 
      
 251 
     | 
    
         
            +
                  generate "anycable:download", download_options(bin_path: bin_path)
         
     | 
| 
       226 
252 
     | 
    
         | 
| 
       227 
253 
     | 
    
         
             
                  true
         
     | 
| 
       228 
254 
     | 
    
         
             
                end
         
     | 
| 
       229 
255 
     | 
    
         | 
| 
       230 
     | 
    
         
            -
                def  
     | 
| 
       231 
     | 
    
         
            -
                   
     | 
| 
       232 
     | 
    
         
            -
             
     | 
| 
       233 
     | 
    
         
            -
             
     | 
| 
       234 
     | 
    
         
            -
             
     | 
| 
       235 
     | 
    
         
            -
             
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
       237 
     | 
    
         
            -
             
     | 
| 
       238 
     | 
    
         
            -
                def sudo!(path)
         
     | 
| 
       239 
     | 
    
         
            -
                  sudo = ""
         
     | 
| 
       240 
     | 
    
         
            -
                  unless File.writable?(path)
         
     | 
| 
       241 
     | 
    
         
            -
                    if yes? "Path is not writable 😕. Do you have sudo privileges?"
         
     | 
| 
       242 
     | 
    
         
            -
                      sudo = "sudo "
         
     | 
| 
       243 
     | 
    
         
            -
                    else
         
     | 
| 
       244 
     | 
    
         
            -
                      say_status :error, "❌ Failed to install AnyCable-Go WebSocket server", :red
         
     | 
| 
       245 
     | 
    
         
            -
                      raise StandardError, "Path #{path} is not writable!"
         
     | 
| 
       246 
     | 
    
         
            -
                    end
         
     | 
| 
       247 
     | 
    
         
            -
                  end
         
     | 
| 
       248 
     | 
    
         
            -
             
     | 
| 
       249 
     | 
    
         
            -
                  sudo
         
     | 
| 
       250 
     | 
    
         
            -
                end
         
     | 
| 
       251 
     | 
    
         
            -
             
     | 
| 
       252 
     | 
    
         
            -
                def current_cpu
         
     | 
| 
       253 
     | 
    
         
            -
                  case Gem::Platform.local.cpu
         
     | 
| 
       254 
     | 
    
         
            -
                  when "x86_64", "x64"
         
     | 
| 
       255 
     | 
    
         
            -
                    "amd64"
         
     | 
| 
       256 
     | 
    
         
            -
                  when "x86_32", "x86", "i386", "i486", "i686"
         
     | 
| 
       257 
     | 
    
         
            -
                    "i386"
         
     | 
| 
       258 
     | 
    
         
            -
                  when "aarch64", "aarch64_be", /armv8/
         
     | 
| 
       259 
     | 
    
         
            -
                    "arm64"
         
     | 
| 
       260 
     | 
    
         
            -
                  when "arm", /armv7/, /armv6/
         
     | 
| 
       261 
     | 
    
         
            -
                    "arm"
         
     | 
| 
       262 
     | 
    
         
            -
                  else
         
     | 
| 
       263 
     | 
    
         
            -
                    "unknown"
         
     | 
| 
       264 
     | 
    
         
            -
                  end
         
     | 
| 
      
 256 
     | 
    
         
            +
                def download_options(**params)
         
     | 
| 
      
 257 
     | 
    
         
            +
                  opts = options.merge(params)
         
     | 
| 
      
 258 
     | 
    
         
            +
                  [].tap do |args|
         
     | 
| 
      
 259 
     | 
    
         
            +
                    args << "--os #{opts[:os]}" if opts[:os]
         
     | 
| 
      
 260 
     | 
    
         
            +
                    args << "--cpu #{opts[:cpu]}" if opts[:cpu]
         
     | 
| 
      
 261 
     | 
    
         
            +
                    args << "--bin-path=#{opts[:bin_path]}" if opts[:bin_path]
         
     | 
| 
      
 262 
     | 
    
         
            +
                    args << "--version #{opts[:version]}" if opts[:version]
         
     | 
| 
      
 263 
     | 
    
         
            +
                  end.join(" ")
         
     | 
| 
       265 
264 
     | 
    
         
             
                end
         
     | 
| 
       266 
265 
     | 
    
         
             
              end
         
     | 
| 
       267 
266 
     | 
    
         
             
            end
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -7,19 +7,26 @@ 
     | 
|
| 
       7 
7 
     | 
    
         
             
            # Note that AnyCable recognizes REDIS_URL env variable for Redis pub/sub adapter. If you want to
         
     | 
| 
       8 
8 
     | 
    
         
             
            # use another Redis instance for AnyCable, provide ANYCABLE_REDIS_URL variable.
         
     | 
| 
       9 
9 
     | 
    
         
             
            #
         
     | 
| 
       10 
     | 
    
         
            -
            # Read more about AnyCable configuration here:  
     | 
| 
      
 10 
     | 
    
         
            +
            # Read more about AnyCable configuration here: <%= DOCS_ROOT %>/ruby/configuration
         
     | 
| 
       11 
11 
     | 
    
         
             
            #
         
     | 
| 
       12 
12 
     | 
    
         
             
            default: &default
         
     | 
| 
       13 
13 
     | 
    
         
             
              # Turn on/off access logs ("Started..." and "Finished...")
         
     | 
| 
       14 
14 
     | 
    
         
             
              access_logs_disabled: false
         
     | 
| 
       15 
     | 
    
         
            -
              # Persist "dirty" session between RPC calls (might be required for  
     | 
| 
       16 
     | 
    
         
            -
              persistent_session_enabled:  
     | 
| 
      
 15 
     | 
    
         
            +
              # Persist "dirty" session between RPC calls (might be required for apps using stimulus_reflex <3.0)
         
     | 
| 
      
 16 
     | 
    
         
            +
              # persistent_session_enabled: true
         
     | 
| 
       17 
17 
     | 
    
         
             
              # This is the host and the port to run AnyCable RPC server on.
         
     | 
| 
       18 
18 
     | 
    
         
             
              # You must configure your WebSocket server to connect to it, e.g.:
         
     | 
| 
       19 
19 
     | 
    
         
             
              #   $ anycable-go --rpc-host="<rpc hostname>:50051"
         
     | 
| 
       20 
20 
     | 
    
         
             
              rpc_host: "127.0.0.1:50051"
         
     | 
| 
       21 
21 
     | 
    
         
             
              # Whether to enable gRPC level logging or not
         
     | 
| 
       22 
22 
     | 
    
         
             
              log_grpc: false
         
     | 
| 
      
 23 
     | 
    
         
            +
              <%- if redis? -%>
         
     | 
| 
      
 24 
     | 
    
         
            +
              # Use Redis to broadcast messages to AnyCable server
         
     | 
| 
      
 25 
     | 
    
         
            +
              broadcast_adapter: redis
         
     | 
| 
      
 26 
     | 
    
         
            +
              <%- else -%>
         
     | 
| 
      
 27 
     | 
    
         
            +
              # Use HTTP adapter for a quick start (since redis gem is not present in the project)
         
     | 
| 
      
 28 
     | 
    
         
            +
              broadcast_adapter: http
         
     | 
| 
      
 29 
     | 
    
         
            +
              <%- end -%>
         
     | 
| 
       23 
30 
     | 
    
         
             
              # Use the same channel name for WebSocket server, e.g.:
         
     | 
| 
       24 
31 
     | 
    
         
             
              #   $ anycable-go --redis-channel="__anycable__"
         
     | 
| 
       25 
32 
     | 
    
         
             
              redis_channel: "__anycable__"
         
     | 
| 
         @@ -30,3 +37,7 @@ development: 
     | 
|
| 
       30 
37 
     | 
    
         | 
| 
       31 
38 
     | 
    
         
             
            production:
         
     | 
| 
       32 
39 
     | 
    
         
             
              <<: *default
         
     | 
| 
      
 40 
     | 
    
         
            +
              <%- if !redis? -%>
         
     | 
| 
      
 41 
     | 
    
         
            +
              # Use Redis in production
         
     | 
| 
      
 42 
     | 
    
         
            +
              broadcast_adapter: redis
         
     | 
| 
      
 43 
     | 
    
         
            +
              <%- end -%>
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Make it possible to switch adapters by passing the ACTION_CABLE_ADAPTER env variable.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # For example, you can use it fallback to the standard Action Cable in staging/review
         
     | 
| 
      
 3 
     | 
    
         
            +
            # environments (by setting `ACTION_CABLE_ADAPTER=redis`).
         
     | 
| 
      
 4 
     | 
    
         
            +
            development:
         
     | 
| 
      
 5 
     | 
    
         
            +
              adapter: <%%= ENV.fetch("ACTION_CABLE_ADAPTER", "any_cable") %>
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            test:
         
     | 
| 
      
 8 
     | 
    
         
            +
              adapter: test
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            production:
         
     | 
| 
      
 11 
     | 
    
         
            +
              adapter: <%%= ENV.fetch("ACTION_CABLE_ADAPTER", "any_cable") %>
         
     | 
| 
         @@ -3,7 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            # Add Warden middkeware to AnyCable stack to allow accessing
         
     | 
| 
       4 
4 
     | 
    
         
             
            # Devise current user via `env["warden"].user`.
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
     | 
    
         
            -
            # See  
     | 
| 
      
 6 
     | 
    
         
            +
            # See <%= DOCS_ROOT %>/ruby/authentication
         
     | 
| 
       7 
7 
     | 
    
         
             
            AnyCable::Rails::Rack.middleware.use Warden::Manager do |config|
         
     | 
| 
       8 
8 
     | 
    
         
             
              Devise.warden_config = config
         
     | 
| 
       9 
9 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,55 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module AnyCableRailsGenerators
         
     | 
| 
      
 4 
     | 
    
         
            +
              module WithOSHelpers
         
     | 
| 
      
 5 
     | 
    
         
            +
                OS_NAMES = %w[linux darwin freebsd win].freeze
         
     | 
| 
      
 6 
     | 
    
         
            +
                CPU_NAMES = %w[amd64 arm64 386 arm].freeze
         
     | 
| 
      
 7 
     | 
    
         
            +
                DEFAULT_BIN_PATH = "/usr/local/bin"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def self.included(base)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  base.class_option :os,
         
     | 
| 
      
 11 
     | 
    
         
            +
                    type: :string,
         
     | 
| 
      
 12 
     | 
    
         
            +
                    desc: "Specify the OS for AnyCable-Go server binary (options: #{OS_NAMES.join(", ")})"
         
     | 
| 
      
 13 
     | 
    
         
            +
                  base.class_option :cpu,
         
     | 
| 
      
 14 
     | 
    
         
            +
                    type: :string,
         
     | 
| 
      
 15 
     | 
    
         
            +
                    desc: "Specify the CPU architecturefor AnyCable-Go server binary (options: #{CPU_NAMES.join(", ")})"
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  private :current_cpu, :supported_current_cpu, :supported_current_os
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def current_cpu
         
     | 
| 
      
 21 
     | 
    
         
            +
                  case Gem::Platform.local.cpu
         
     | 
| 
      
 22 
     | 
    
         
            +
                  when "x86_64", "x64"
         
     | 
| 
      
 23 
     | 
    
         
            +
                    "amd64"
         
     | 
| 
      
 24 
     | 
    
         
            +
                  when "x86_32", "x86", "i386", "i486", "i686"
         
     | 
| 
      
 25 
     | 
    
         
            +
                    "i386"
         
     | 
| 
      
 26 
     | 
    
         
            +
                  when "aarch64", "aarch64_be", /armv8/
         
     | 
| 
      
 27 
     | 
    
         
            +
                    "arm64"
         
     | 
| 
      
 28 
     | 
    
         
            +
                  when "arm", /armv7/, /armv6/
         
     | 
| 
      
 29 
     | 
    
         
            +
                    "arm"
         
     | 
| 
      
 30 
     | 
    
         
            +
                  else
         
     | 
| 
      
 31 
     | 
    
         
            +
                    "unknown"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def os_name
         
     | 
| 
      
 36 
     | 
    
         
            +
                  options[:os] ||
         
     | 
| 
      
 37 
     | 
    
         
            +
                    supported_current_os ||
         
     | 
| 
      
 38 
     | 
    
         
            +
                    ask("What is your OS name?", limited_to: OS_NAMES)
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                def cpu_name
         
     | 
| 
      
 42 
     | 
    
         
            +
                  options[:cpu] ||
         
     | 
| 
      
 43 
     | 
    
         
            +
                    supported_current_cpu ||
         
     | 
| 
      
 44 
     | 
    
         
            +
                    ask("What is your CPU architecture?", limited_to: CPU_NAMES)
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                def supported_current_cpu
         
     | 
| 
      
 48 
     | 
    
         
            +
                  CPU_NAMES.find(¤t_cpu.method(:==))
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                def supported_current_os
         
     | 
| 
      
 52 
     | 
    
         
            +
                  OS_NAMES.find(&Gem::Platform.local.os.method(:==))
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,29 +1,29 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: anycable-rails
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0.rc4
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - palkan
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2020- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-06-24 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: anycable
         
     | 
| 
       15 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - -  
     | 
| 
      
 17 
     | 
    
         
            +
                - - '='
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: 1.0.0. 
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 1.0.0.rc2
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
     | 
    
         
            -
                - -  
     | 
| 
      
 24 
     | 
    
         
            +
                - - '='
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: 1.0.0. 
     | 
| 
      
 26 
     | 
    
         
            +
                    version: 1.0.0.rc2
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
28 
     | 
    
         
             
              name: rails
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -72,70 +72,42 @@ dependencies: 
     | 
|
| 
       72 
72 
     | 
    
         
             
                requirements:
         
     | 
| 
       73 
73 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       74 
74 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 75 
     | 
    
         
            +
                    version: '13.0'
         
     | 
| 
       76 
76 
     | 
    
         
             
              type: :development
         
     | 
| 
       77 
77 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       78 
78 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
79 
     | 
    
         
             
                requirements:
         
     | 
| 
       80 
80 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       81 
81 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 82 
     | 
    
         
            +
                    version: '13.0'
         
     | 
| 
       83 
83 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
     | 
    
         
            -
              name: rspec
         
     | 
| 
      
 84 
     | 
    
         
            +
              name: rspec-rails
         
     | 
| 
       85 
85 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
86 
     | 
    
         
             
                requirements:
         
     | 
| 
       87 
87 
     | 
    
         
             
                - - ">="
         
     | 
| 
       88 
88 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       89 
     | 
    
         
            -
                    version:  
     | 
| 
      
 89 
     | 
    
         
            +
                    version: 4.0.0
         
     | 
| 
       90 
90 
     | 
    
         
             
              type: :development
         
     | 
| 
       91 
91 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       92 
92 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       93 
93 
     | 
    
         
             
                requirements:
         
     | 
| 
       94 
94 
     | 
    
         
             
                - - ">="
         
     | 
| 
       95 
95 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       96 
     | 
    
         
            -
                    version:  
     | 
| 
       97 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       98 
     | 
    
         
            -
              name: rubocop-md
         
     | 
| 
       99 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       100 
     | 
    
         
            -
                requirements:
         
     | 
| 
       101 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       102 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       103 
     | 
    
         
            -
                    version: '0.3'
         
     | 
| 
       104 
     | 
    
         
            -
              type: :development
         
     | 
| 
       105 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       106 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       107 
     | 
    
         
            -
                requirements:
         
     | 
| 
       108 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       109 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       110 
     | 
    
         
            -
                    version: '0.3'
         
     | 
| 
      
 96 
     | 
    
         
            +
                    version: 4.0.0
         
     | 
| 
       111 
97 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       112 
     | 
    
         
            -
              name:  
     | 
| 
      
 98 
     | 
    
         
            +
              name: rubocop
         
     | 
| 
       113 
99 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       114 
100 
     | 
    
         
             
                requirements:
         
     | 
| 
       115 
101 
     | 
    
         
             
                - - ">="
         
     | 
| 
       116 
102 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       117 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 103 
     | 
    
         
            +
                    version: '0.80'
         
     | 
| 
       118 
104 
     | 
    
         
             
              type: :development
         
     | 
| 
       119 
105 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       120 
106 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       121 
107 
     | 
    
         
             
                requirements:
         
     | 
| 
       122 
108 
     | 
    
         
             
                - - ">="
         
     | 
| 
       123 
109 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       124 
     | 
    
         
            -
                    version: 0. 
     | 
| 
       125 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       126 
     | 
    
         
            -
              name: standard
         
     | 
| 
       127 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       128 
     | 
    
         
            -
                requirements:
         
     | 
| 
       129 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       130 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       131 
     | 
    
         
            -
                    version: 0.1.7
         
     | 
| 
       132 
     | 
    
         
            -
              type: :development
         
     | 
| 
       133 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       134 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       135 
     | 
    
         
            -
                requirements:
         
     | 
| 
       136 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       137 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       138 
     | 
    
         
            -
                    version: 0.1.7
         
     | 
| 
      
 110 
     | 
    
         
            +
                    version: '0.80'
         
     | 
| 
       139 
111 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       140 
112 
     | 
    
         
             
              name: warden
         
     | 
| 
       141 
113 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -167,12 +139,15 @@ files: 
     | 
|
| 
       167 
139 
     | 
    
         
             
            - lib/anycable/rails/actioncable/channel.rb
         
     | 
| 
       168 
140 
     | 
    
         
             
            - lib/anycable/rails/actioncable/connection.rb
         
     | 
| 
       169 
141 
     | 
    
         
             
            - lib/anycable/rails/actioncable/connection/persistent_session.rb
         
     | 
| 
      
 142 
     | 
    
         
            +
            - lib/anycable/rails/actioncable/connection/serializable_identification.rb
         
     | 
| 
      
 143 
     | 
    
         
            +
            - lib/anycable/rails/actioncable/remote_connections.rb
         
     | 
| 
      
 144 
     | 
    
         
            +
            - lib/anycable/rails/actioncable/testing.rb
         
     | 
| 
      
 145 
     | 
    
         
            +
            - lib/anycable/rails/channel_state.rb
         
     | 
| 
       170 
146 
     | 
    
         
             
            - lib/anycable/rails/compatibility.rb
         
     | 
| 
       171 
147 
     | 
    
         
             
            - lib/anycable/rails/compatibility/rubocop.rb
         
     | 
| 
       172 
148 
     | 
    
         
             
            - lib/anycable/rails/compatibility/rubocop/config/default.yml
         
     | 
| 
       173 
149 
     | 
    
         
             
            - lib/anycable/rails/compatibility/rubocop/cops/anycable/instance_vars.rb
         
     | 
| 
       174 
150 
     | 
    
         
             
            - lib/anycable/rails/compatibility/rubocop/cops/anycable/periodical_timers.rb
         
     | 
| 
       175 
     | 
    
         
            -
            - lib/anycable/rails/compatibility/rubocop/cops/anycable/remote_disconnect.rb
         
     | 
| 
       176 
151 
     | 
    
         
             
            - lib/anycable/rails/compatibility/rubocop/cops/anycable/stream_from.rb
         
     | 
| 
       177 
152 
     | 
    
         
             
            - lib/anycable/rails/config.rb
         
     | 
| 
       178 
153 
     | 
    
         
             
            - lib/anycable/rails/middlewares/executor.rb
         
     | 
| 
         @@ -182,13 +157,15 @@ files: 
     | 
|
| 
       182 
157 
     | 
    
         
             
            - lib/anycable/rails/refinements/subscriptions.rb
         
     | 
| 
       183 
158 
     | 
    
         
             
            - lib/anycable/rails/session_proxy.rb
         
     | 
| 
       184 
159 
     | 
    
         
             
            - lib/anycable/rails/version.rb
         
     | 
| 
       185 
     | 
    
         
            -
            - lib/ 
     | 
| 
       186 
     | 
    
         
            -
            - lib/ 
     | 
| 
       187 
     | 
    
         
            -
            - lib/ 
     | 
| 
       188 
     | 
    
         
            -
            - lib/ 
     | 
| 
       189 
     | 
    
         
            -
            - lib/ 
     | 
| 
       190 
     | 
    
         
            -
            - lib/ 
     | 
| 
       191 
     | 
    
         
            -
            - lib/ 
     | 
| 
      
 160 
     | 
    
         
            +
            - lib/generators/anycable/download/USAGE
         
     | 
| 
      
 161 
     | 
    
         
            +
            - lib/generators/anycable/download/download_generator.rb
         
     | 
| 
      
 162 
     | 
    
         
            +
            - lib/generators/anycable/setup/USAGE
         
     | 
| 
      
 163 
     | 
    
         
            +
            - lib/generators/anycable/setup/setup_generator.rb
         
     | 
| 
      
 164 
     | 
    
         
            +
            - lib/generators/anycable/setup/templates/Procfile.dev
         
     | 
| 
      
 165 
     | 
    
         
            +
            - lib/generators/anycable/setup/templates/config/anycable.yml.tt
         
     | 
| 
      
 166 
     | 
    
         
            +
            - lib/generators/anycable/setup/templates/config/cable.yml.tt
         
     | 
| 
      
 167 
     | 
    
         
            +
            - lib/generators/anycable/setup/templates/config/initializers/anycable.rb.tt
         
     | 
| 
      
 168 
     | 
    
         
            +
            - lib/generators/anycable/with_os_helpers.rb
         
     | 
| 
       192 
169 
     | 
    
         
             
            homepage: http://github.com/anycable/anycable-rails
         
     | 
| 
       193 
170 
     | 
    
         
             
            licenses:
         
     | 
| 
       194 
171 
     | 
    
         
             
            - MIT
         
     |