anycable 1.0.0.preview1 → 1.0.0.preview2

Sign up to get free protection for your applications and to get access to all the features.
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