anycable-rails 1.0.2 → 1.1.0.pre1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1c58ca24c6710071b8a90eee6a0d84ba9ec3069d0fb86fecebdab3cfba9fe1d3
4
- data.tar.gz: f6ca1937e8cf821d3ded458db84cbfc83840ad45af266c04f32388e2ecec621d
3
+ metadata.gz: '087189f7948c52bb58e4e1d558c6952620ddbeb7b9a7150f6a8a75e10b305fd7'
4
+ data.tar.gz: 2c8c1d0b355dc447d73df3fbc98b1afb7c12d15bed3556300888cb7ccd5ac7b5
5
5
  SHA512:
6
- metadata.gz: 2ffbcc289fe4be6092c67b9953074f57a976f4375b1ac91408723043e9140e041f2fae83d7c3ac7234aa05651db48be4a663a2812b8a6bf2919fa9fc3c127494
7
- data.tar.gz: b22cc5e90dfdc39369efef3feb46628635397313b203e645a042e810342bdbbe7da85ad900f3626a1d99ee85da8b4e9629be398aa68970758aeea78ff8fa95b5
6
+ metadata.gz: 69a9672b864a8a7cb606e3b066900bc3c39df59e357a4b95f28426d22207766ed914061b686974c56b41dc3eae3da3e39017e0bfe34701ab7a89b4ae5ec9c9a1
7
+ data.tar.gz: 25439b57367b5f61671e778324b46aadb96190c4a5d27f75a4872a7003b03c589fcbcdbafc346885e45ad2ce6c58f241e4a54578c636b71b1eae4a10ffc6db6d
data/CHANGELOG.md CHANGED
@@ -2,6 +2,37 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 1.1.0-dev
6
+
7
+ - **Ruby >= 2.6** is required.
8
+ - **Rails >= 6.0** is required.
9
+
10
+ ## 1.0.7 (2021-03-05)
11
+
12
+ - Ruby 3 compatibility. ([@palkan][])
13
+
14
+ ## 1.0.6 (2021-02-25)
15
+
16
+ - Keep an explicit list of instance vars to ignore in compatibility checks. ([@palkan][])
17
+
18
+ You can ignore custom vars by adding them to the list: `AnyCable::Compatibility::IGNORE_INSTANCE_VARS << :@my_var`.
19
+
20
+ ## 1.0.5 (2021-02-24)
21
+
22
+ - Fixed bug with compatibility false negatives in development. ([@palkan][])
23
+
24
+ See [#151](https://github.com/anycable/anycable-rails/issues/151).
25
+
26
+ ## 1.0.4 (2020-10-02)
27
+
28
+ - Relax Rails dependencies. ([@palkan][])
29
+
30
+ Only add `actioncable` and `globalid` as runtime dependencies, not the whole `rails`.
31
+
32
+ ## 1.0.3 (2020-09-16)
33
+
34
+ - Fixed bug with building a request object when session store is absent. ([@palkan][])
35
+
5
36
  ## 1.0.2 (2020-09-08)
6
37
 
7
38
  - Added missing channel state support to `#unsubscribed` callbacks. ([@palkan][])
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2017-2020 palkan
1
+ Copyright 2017-2021 palkan
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,4 +1,3 @@
1
- [![GitPitch](https://gitpitch.com/assets/badge.svg)](https://gitpitch.com/anycable/anycable/master?grs=github)
2
1
  [![Gem Version](https://badge.fury.io/rb/anycable-rails.svg)](https://rubygems.org/gems/anycable-rails)
3
2
  [![Build](https://github.com/anycable/anycable-rails/workflows/Build/badge.svg)](https://github.com/anycable/anycable-rails/actions)
4
3
  [![Gitter](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/anycable/Lobby)
@@ -12,8 +11,6 @@ With AnyCable you can use channels, client-side JS, broadcasting - (almost) all
12
11
 
13
12
  You can even use Action Cable in development and not be afraid of [compatibility issues](#compatibility).
14
13
 
15
- **Important** This is a readme for the upcoming v1.0 release. For v0.6.x see the readme from the [0-6-stable](https://github.com/anycable/anycable-rails/tree/0-6-stable) branch.
16
-
17
14
  💾 [Example Application](https://github.com/anycable/anycable_rails_demo)
18
15
 
19
16
  📑 [Documentation](https://docs.anycable.io/#/rails/getting_started).
@@ -23,8 +20,8 @@ You can even use Action Cable in development and not be afraid of [compatibility
23
20
 
24
21
  ## Requirements
25
22
 
26
- - Ruby >= 2.5
27
- - Rails >= 5.2
23
+ - Ruby >= 2.6
24
+ - Rails >= 6.0
28
25
  - Redis (see [other options](https://github.com/anycable/anycable/issues/2) for broadcasting)
29
26
 
30
27
  ## Usage
@@ -65,7 +62,7 @@ and specify AnyCable WebSocket server URL:
65
62
  # For development it's likely the localhost
66
63
 
67
64
  # config/environments/development.rb
68
- config.action_cable.url = "ws://localhost:3334/cable"
65
+ config.action_cable.url = "ws://localhost:8080/cable"
69
66
 
70
67
  # For production it's likely to have a sub-domain and secure connection
71
68
 
@@ -86,7 +83,7 @@ $ RAILS_ENV=production bundle exec anycable
86
83
  And, finally, run AnyCable WebSocket server, e.g. [anycable-go](https://docs.anycable.io/#/v1/anycable-go/getting_started):
87
84
 
88
85
  ```sh
89
- anycable-go --host=localhost --port=3334
86
+ anycable-go --host=localhost --port=8080
90
87
  ```
91
88
 
92
89
  See [documentation](https://docs.anycable.io/#/rails/getting_started) for more information on AnyCable + Rails usage.
@@ -99,10 +96,6 @@ See [documentation](https://docs.anycable.io/#/rails/compatibility).
99
96
 
100
97
  Bug reports and pull requests are welcome on GitHub at [https://github.com/anycable/anycable-rails](https://github.com/anycable/anycable-rails).
101
98
 
102
- ## Development
103
-
104
- If you are familiar with Docker, you can use [DIP](https://github.com/bibendi/dip) to start developing the gem quickly.
105
-
106
99
  ## License
107
100
 
108
101
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -5,7 +5,7 @@ require "action_cable/channel"
5
5
  module ActionCable
6
6
  module Channel
7
7
  class Base # :nodoc:
8
- alias handle_subscribe subscribe_to_channel
8
+ alias_method :handle_subscribe, :subscribe_to_channel
9
9
 
10
10
  public :handle_subscribe, :subscription_rejected?
11
11
 
@@ -21,13 +21,13 @@ module ActionCable
21
21
 
22
22
  attr_reader :socket
23
23
 
24
- alias anycable_socket socket
24
+ alias_method :anycable_socket, :socket
25
25
 
26
26
  delegate :env, :session, to: :request
27
27
 
28
28
  class << self
29
29
  def call(socket, **options)
30
- new(socket, nil, options)
30
+ new(socket, nil, **options)
31
31
  end
32
32
  end
33
33
 
@@ -12,15 +12,13 @@ end
12
12
 
13
13
  ActionCable::Channel::ChannelStub.prepend(Module.new do
14
14
  def subscribe_to_channel
15
- # allocate @streams
16
- streams
17
15
  handle_subscribe
18
16
  end
19
17
  end)
20
18
 
21
19
  ActionCable::Channel::ConnectionStub.prepend(Module.new do
22
20
  def socket
23
- @socket ||= AnyCable::Socket.new(env: {})
21
+ @socket ||= AnyCable::Socket.new(env: AnyCable::Env.new(url: "http://test.host", headers: {}))
24
22
  end
25
23
 
26
24
  alias_method :anycable_socket, :socket
@@ -4,6 +4,11 @@ module AnyCable
4
4
  class CompatibilityError < StandardError; end
5
5
 
6
6
  module Compatibility # :nodoc:
7
+ IGNORE_INSTANCE_VARS = %i[
8
+ @active_periodic_timers
9
+ @_streams
10
+ ]
11
+
7
12
  ActionCable::Channel::Base.prepend(Module.new do
8
13
  def stream_from(broadcasting, callback = nil, coder: nil)
9
14
  if coder.present? && coder != ActiveSupport::JSON
@@ -31,7 +36,7 @@ module AnyCable
31
36
  def __anycable_check_ivars__
32
37
  was_ivars = instance_variables
33
38
  res = yield
34
- diff = instance_variables - was_ivars
39
+ diff = instance_variables - was_ivars - IGNORE_INSTANCE_VARS
35
40
 
36
41
  if self.class.respond_to?(:channel_state_attributes)
37
42
  diff.delete(:@__istate__)
@@ -38,16 +38,16 @@ module AnyCable
38
38
  config = ::Rails.application.config
39
39
 
40
40
  ActionDispatch::MiddlewareStack.new do |middleware|
41
- middleware.use(config.session_store, config.session_options)
41
+ middleware.use(config.session_store, config.session_options) if config.session_store
42
42
  end
43
43
  end
44
44
 
45
45
  def self.app
46
46
  @rack_app || app_build_lock.synchronize do
47
- @rack_app ||= begin
48
- stack = default_middleware_stack
49
- @middleware = middleware.merge_into(stack)
50
- middleware.build { [-1, {}, []] }
47
+ @rack_app ||= default_middleware_stack.yield_self do |stack|
48
+ middleware.merge_into(stack)
49
+ end.yield_self do |stack|
50
+ stack.build { [-1, {}, []] }
51
51
  end
52
52
  end
53
53
  end
@@ -18,8 +18,8 @@ module AnyCable
18
18
  AnyCable.logger = ActiveSupport::TaggedLogging.new(::ActionCable.server.config.logger)
19
19
  # Broadcast server logs to STDOUT in development
20
20
  if ::Rails.env.development? &&
21
- !ActiveSupport::Logger.logger_outputs_to?(::Rails.logger, STDOUT)
22
- console = ActiveSupport::Logger.new(STDOUT)
21
+ !ActiveSupport::Logger.logger_outputs_to?(::Rails.logger, $stdout)
22
+ console = ActiveSupport::Logger.new($stdout)
23
23
  console.formatter = ::Rails.logger.formatter
24
24
  console.level = ::Rails.logger.level
25
25
  AnyCable.logger.extend(ActiveSupport::Logger.broadcast(console))
@@ -21,8 +21,8 @@ module AnyCable
21
21
  CODE
22
22
  end
23
23
 
24
- alias include? has_key?
25
- alias key? has_key?
24
+ alias_method :include?, :has_key?
25
+ alias_method :key?, :has_key?
26
26
 
27
27
  %i[update merge! to_hash].each do |mid|
28
28
  class_eval <<~CODE, __FILE__, __LINE__ + 1
@@ -33,7 +33,7 @@ module AnyCable
33
33
  CODE
34
34
  end
35
35
 
36
- alias to_h to_hash
36
+ alias_method :to_h, :to_hash
37
37
 
38
38
  def keys
39
39
  rack_session.keys + socket_session.keys
@@ -2,6 +2,6 @@
2
2
 
3
3
  module AnyCable
4
4
  module Rails
5
- VERSION = "1.0.2"
5
+ VERSION = "1.1.0.pre1"
6
6
  end
7
7
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Add Warden middkeware to AnyCable stack to allow accessing
3
+ # Add Warden middleware to AnyCable stack to allow accessing
4
4
  # Devise current user via `env["warden"].user`.
5
5
  #
6
6
  # See <%= DOCS_ROOT %>/ruby/authentication
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anycable-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-08 00:00:00.000000000 Z
11
+ date: 2021-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: anycable
14
+ name: anycable-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.1.0.pre1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.1.0.pre1
27
+ - !ruby/object:Gem::Dependency
28
+ name: actioncable
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - ">="
18
32
  - !ruby/object:Gem::Version
19
- version: 1.0.0
33
+ version: '6'
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: 1.0.0
40
+ version: '6'
27
41
  - !ruby/object:Gem::Dependency
28
- name: rails
42
+ name: globalid
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '5'
47
+ version: '0'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '5'
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: ammeter
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -175,7 +189,7 @@ metadata:
175
189
  documentation_uri: https://docs.anycable.io/#/using_with_rails
176
190
  homepage_uri: https://anycable.io/
177
191
  source_code_uri: http://github.com/anycable/anycable-rails
178
- post_install_message:
192
+ post_install_message:
179
193
  rdoc_options: []
180
194
  require_paths:
181
195
  - lib
@@ -183,15 +197,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
183
197
  requirements:
184
198
  - - ">="
185
199
  - !ruby/object:Gem::Version
186
- version: '2.5'
200
+ version: '2.6'
187
201
  required_rubygems_version: !ruby/object:Gem::Requirement
188
202
  requirements:
189
- - - ">="
203
+ - - ">"
190
204
  - !ruby/object:Gem::Version
191
- version: '0'
205
+ version: 1.3.1
192
206
  requirements: []
193
- rubygems_version: 3.0.6
194
- signing_key:
207
+ rubygems_version: 3.2.15
208
+ signing_key:
195
209
  specification_version: 4
196
210
  summary: Rails adapter for AnyCable
197
211
  test_files: []