anycable 1.0.0.preview1 → 1.0.0.preview2

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: 65d07fe802d850f89351ed8c054d2cba9c393b36f7a5aa318183362f09d53e58
4
- data.tar.gz: b4167ba77ce930ddcb77a9e38d205215fb3ec085a93bfd3876f2bf8a5e669373
3
+ metadata.gz: 61d002d899e5ef0c6c8e17b131a569dee4e93d948a9a2d401e20c764ee573ae2
4
+ data.tar.gz: 20743c021aa6c79177cd727d31468b1823ed492c11da1967513fa7cd5bc18f0a
5
5
  SHA512:
6
- metadata.gz: 456af4dd28de6d32a8436ce8702ddb3ba5523b25b531bce8dac00c5bf6cd181e79c57e4d4a89d1a2c1ff3e21eda1108be3f023c65edcf1bbf5790594216ae971
7
- data.tar.gz: b25fa2a291a6cd6bbf4734c9c59dcf991dead19c0e25c004ac696ec524e6de63bb5ea4251f8d06ce1d21699a44e178a7e445bfedcd4d70179535c6648ed67854
6
+ metadata.gz: a5d8ce6d031bfa1b65e12cbe49a1bb2813267997d090126a09fe55d30dc7e44a62c5315bf3e1f430bb6c8a67909245db2a9e03d3654ac7922cc08d6d09a7c14a
7
+ data.tar.gz: eb9ecd34150e474fbb8c914d3f0b95e3c23752fe141fc6acf5819fefbaface12d27103bc0a62487d42ec3d76e2228c43f0c3e9b3c34423fc71ce422ad0200131
@@ -22,9 +22,13 @@ Now you can access `request` object in channels, too (e.g., to read headers/cook
22
22
 
23
23
  See [#71](https://github.com/anycable/anycable/pull/71).
24
24
 
25
+ ## 0.6.5 (2020-04-01)
26
+
27
+ - Relax `anyway_config` dependency. ([@palkan][])
28
+
25
29
  ## 0.6.4 (2020-01-24)
26
30
 
27
- - Fix Ruby 2.7 warnings. ([@palkan])
31
+ - Fix Ruby 2.7 warnings. ([@palkan][])
28
32
 
29
33
  – Add `REMOTE_ADDR` socket env variable using a synthetic header passed from a websocket
30
34
  server. ([@sponomarev][])
@@ -33,7 +37,7 @@ Recreating a request object in your custom connection factory using `Rack::Reque
33
37
  `ActionDispatch::Request` (already implemented in [anycable-rails](https://github.com/anycable/anycable-rails))
34
38
  gives you an access to `request.ip` with the properly set IP address.
35
39
 
36
- - Align socket env to be more compatibile with Rack Spec ([@sponomarev][])
40
+ - Align socket env to be more compatible with Rack Spec ([@sponomarev][])
37
41
 
38
42
  Provide as much env details as possible to be able to reconstruct the full
39
43
  request object in a custom connection factory.
@@ -71,7 +75,7 @@ in future versions.
71
75
 
72
76
  Server is fully managed by the binary itself.
73
77
 
74
- ```
78
+ ```sh
75
79
  # Start anycable daemon
76
80
  $ bundle exec anycabled start
77
81
 
@@ -129,7 +133,7 @@ You can omit it if you want to load an app form `./config/environment.rb` (e.g.
129
133
  AnyCable CLI also allows you to run a separate command (process) from within a RPC server:
130
134
 
131
135
  ```sh
132
- $ bundle exec anycable --server-command "anycable-go -p 3334"
136
+ bundle exec anycable --server-command "anycable-go -p 3334"
133
137
  ```
134
138
 
135
139
  #### Configuration
@@ -144,6 +148,7 @@ AnyCable.configure do |config|
144
148
  # etc
145
149
  end
146
150
  ```
151
+
147
152
  - `REDIS_URL` env is used by default if present (and no `ANYCABLE_REDIS_URL` specified)
148
153
  - Make HTTP health check url configurable
149
154
  - Add ability to pass Redis Sentinel config as array of string.
@@ -184,7 +189,6 @@ end
184
189
 
185
190
  - `AnyCable::Server.start` is deprecated
186
191
 
187
-
188
192
  ## 0.5.2 (2018-09-06)
189
193
 
190
194
  - [#48](https://github.com/anycable/anycable/pull/48) Add HTTP health server ([@DarthSim][])
@@ -205,9 +209,9 @@ Previously we hardcoded only "Cookie" header. Now we add all passed headers by W
205
209
 
206
210
  Now RPC responses has 3 statuses:
207
211
 
208
- - `SUCCESS` – successful request, operation succeed
209
- - `FAILURE` – successful request, operation failed (e.g. authentication failed)
210
- - `ERROR` – request failed (exception raised).
212
+ 1) `SUCCESS` – successful request, operation succeed
213
+ 2) `FAILURE` – successful request, operation failed (e.g. authentication failed)
214
+ 3) `ERROR` – request failed (exception raised).
211
215
 
212
216
  We provide `error_msg` only when request status is `ERROR`.
213
217
 
@@ -252,7 +256,7 @@ Add `Socket#subscribe`, `unsubscribe` and `unsubscribe_from_all` methods.
252
256
 
253
257
  - Make commands handling more abstract. ([@palkan][])
254
258
 
255
- We now do not explicitly call channels action but use the only one entrypoing for all commands:
259
+ We now do not explicitly call channels action but use the only one entrypoint for all commands:
256
260
 
257
261
  ```ruby
258
262
  connection.handle_channel_command(identifier, command, data)
@@ -268,7 +272,7 @@ Replace `Subscribe`, `Unsubscribe` and `Perform` methods with `Command` method.
268
272
 
269
273
  - Extract Rails functionality to separate gem. ([@palkan][])
270
274
 
271
- All Rails specifics now live here https://github.com/anycable/anycable-rails.
275
+ All Rails specifics now live here [https://github.com/anycable/anycable-rails](https://github.com/anycable/anycable-rails).
272
276
 
273
277
  ## 0.3.0 (2016-12-28)
274
278
 
@@ -281,3 +285,4 @@ Implement `Disconnect` handler, which invokes `Connection#disconnect` (along wit
281
285
  [@accessd]: https://github.com/accessd
282
286
  [@DarthSim]: https://github.com/DarthSim
283
287
  [@sponomarev]: https://github.com/sponomarev
288
+ [@bibendi]: https://github.com/bibendi
@@ -1,4 +1,4 @@
1
- Copyright 2017-2019 Vladimir Dementyev
1
+ Copyright 2017-2020 Vladimir Dementyev
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,6 @@
1
- [![GitPitch](https://gitpitch.com/assets/badge.svg)](https://gitpitch.com/anycable/anycable/master?grs=github) [![Gem Version](https://badge.fury.io/rb/anycable.svg)](https://rubygems.org/gems/anycable) [![Build Status](https://travis-ci.org/anycable/anycable.svg?branch=master)](https://travis-ci.org/anycable/anycable)
1
+ [![GitPitch](https://gitpitch.com/assets/badge.svg)](https://gitpitch.com/anycable/anycable/master?grs=github)
2
+ [![Gem Version](https://badge.fury.io/rb/anycable.svg)](https://rubygems.org/gems/anycable)
3
+ [![Build](https://github.com/anycable/anycable/workflows/Build/badge.svg)](https://github.com/anycable/anycable/actions)
2
4
  [![Gitter](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/anycable/Lobby)
3
5
  [![Documentation](https://img.shields.io/badge/docs-link-brightgreen.svg)](https://docs.anycable.io)
4
6
 
@@ -75,4 +77,4 @@ The gem is available as open source under the terms of the [MIT License](http://
75
77
 
76
78
  ## Security Contact
77
79
 
78
- To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
80
+ To report a security vulnerability, please contact us at `anycable@evilmartians.com`. We will coordinate the fix and disclosure.
@@ -43,19 +43,33 @@ module AnyCable
43
43
  ignore_options :rpc_server_args
44
44
  flag_options :log_grpc, :debug
45
45
 
46
- def log_level
47
- debug ? :debug : @log_level
48
- end
46
+ # Support both anyway_config 1.4 and 2.0.
47
+ # DEPRECATE: Drop <2.0 support in 1.1
48
+ if respond_to?(:on_load)
49
+ on_load { self.debug = debug != false }
49
50
 
50
- def log_grpc
51
- debug || @log_grpc
52
- end
51
+ def log_level
52
+ debug? ? :debug : super
53
+ end
53
54
 
54
- def debug
55
- @debug != false
56
- end
55
+ def log_grpc
56
+ debug? || super
57
+ end
58
+ else
59
+ def log_level
60
+ debug ? :debug : @log_level
61
+ end
57
62
 
58
- alias debug? debug
63
+ def log_grpc
64
+ debug || @log_grpc
65
+ end
66
+
67
+ def debug
68
+ @debug != false
69
+ end
70
+
71
+ alias debug? debug
72
+ end
59
73
 
60
74
  def http_health_port_provided?
61
75
  !http_health_port.nil? && http_health_port != ""
@@ -106,17 +106,17 @@ module AnyCable
106
106
  uri = URI.parse(request_env.url)
107
107
 
108
108
  env = base_rack_env
109
- env.merge!(
109
+ env.merge!({
110
110
  "PATH_INFO" => uri.path,
111
111
  "QUERY_STRING" => uri.query,
112
112
  "SERVER_NAME" => uri.host,
113
- "SERVER_PORT" => uri.port.to_s,
113
+ "SERVER_PORT" => uri.port,
114
114
  "HTTP_HOST" => uri.host,
115
115
  "REMOTE_ADDR" => request_env.headers.delete("REMOTE_ADDR"),
116
- "rack.url_scheme" => uri.scheme,
116
+ "rack.url_scheme" => uri.scheme&.sub(/^ws/, "http"),
117
117
  # AnyCable specific fields
118
118
  "anycable.raw_cstate" => request_env.cstate&.to_h
119
- )
119
+ }.delete_if { |_k, v| v.nil? })
120
120
 
121
121
  env.merge!(build_headers(request_env.headers))
122
122
  end
@@ -125,6 +125,7 @@ module AnyCable
125
125
  # Minimum required variables according to Rack Spec
126
126
  # (not all of them though, just those enough for Action Cable to work)
127
127
  # See https://rubydoc.info/github/rack/rack/master/file/SPEC
128
+ # and https://github.com/rack/rack/blob/master/lib/rack/lint.rb
128
129
  {
129
130
  "REQUEST_METHOD" => "GET",
130
131
  "SCRIPT_NAME" => "",
@@ -133,7 +134,13 @@ module AnyCable
133
134
  "SERVER_NAME" => "",
134
135
  "SERVER_PORT" => "80",
135
136
  "rack.url_scheme" => "http",
136
- "rack.input" => ""
137
+ "rack.input" => StringIO.new("", "r").tap { |io| io.set_encoding(Encoding::ASCII_8BIT) },
138
+ "rack.version" => Rack::VERSION,
139
+ "rack.errors" => StringIO.new("").tap { |io| io.set_encoding(Encoding::ASCII_8BIT) },
140
+ "rack.multithread" => true,
141
+ "rack.multiprocess" => false,
142
+ "rack.run_once" => false,
143
+ "rack.hijack?" => false
137
144
  }
138
145
  end
139
146
 
@@ -7,7 +7,7 @@ RSpec.shared_context "anycable:rpc:stub" do
7
7
 
8
8
  let(:service) { @service }
9
9
 
10
- let(:url) { "example.com/cable" }
10
+ let(:url) { "ws://example.anycable.com/cable" }
11
11
  let(:headers) { {} }
12
12
  let(:env) { AnyCable::Env.new(url: url, headers: headers) }
13
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AnyCable
4
- VERSION = "1.0.0.preview1"
4
+ VERSION = "1.0.0.preview2"
5
5
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anycable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.preview1
4
+ version: 1.0.0.preview2
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-19 00:00:00.000000000 Z
11
+ date: 2020-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: anyway_config
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.4.2
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
26
  version: 1.4.2
27
27
  - !ruby/object:Gem::Dependency
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
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: '10.0'
82
+ version: '13.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rack
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,48 +108,6 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '3.5'
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop-md
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.3'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.3'
125
- - !ruby/object:Gem::Dependency
126
- name: simplecov
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: 0.3.8
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: 0.3.8
139
- - !ruby/object:Gem::Dependency
140
- name: standard
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: 0.1.7
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: 0.1.7
153
111
  description: AnyCable is a polyglot replacement for ActionCable-compatible servers
154
112
  email:
155
113
  - dementiev.vm@gmail.com