anycable-rails 0.4.7 → 0.5.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +8 -0
- data/.travis.yml +3 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile +1 -0
- data/README.md +21 -0
- data/Rakefile +3 -1
- data/anycable-rails.gemspec +2 -1
- data/lib/anycable/rails.rb +1 -21
- data/lib/anycable/rails/actioncable/connection.rb +33 -2
- data/lib/anycable/rails/config.rb +5 -0
- data/lib/anycable/rails/engine.rb +21 -0
- data/lib/anycable/rails/version.rb +1 -1
- data/lib/generators/anycable/templates/script +1 -3
- metadata +24 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3dcb6dc5268c5322088c9da2d7925722eba8c12c
|
4
|
+
data.tar.gz: 218bc7ce31c10b0b42133cb6238d26a1b865010f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a924c25ad9a6e4ae08560c78ce260c4941dc5886c33e9e023c323e38df6c47fad0c400635b983d459e9188147667eaa7b8ddfad47d9100b85d7e8e7225743a0
|
7
|
+
data.tar.gz: b18363482cf9b6c3a0012c70382383339101495fe2854cd478a06d129b891894832f27c4a61db9b60d6def737b68c4bcd3ab3cfb5a48341ad1c6de734ae9db26
|
data/.rubocop.yml
CHANGED
@@ -10,6 +10,8 @@ AllCops:
|
|
10
10
|
- 'spec/dummy/**/*'
|
11
11
|
- 'tmp/**/*'
|
12
12
|
- 'bench/**/*'
|
13
|
+
- 'vendor/**/*'
|
14
|
+
- 'gemfiles/**/*'
|
13
15
|
- 'lib/anycable/rpc/**/*'
|
14
16
|
- 'Rakefile'
|
15
17
|
- 'Gemfile'
|
@@ -27,9 +29,15 @@ Style/Documentation:
|
|
27
29
|
Exclude:
|
28
30
|
- 'spec/**/*.rb'
|
29
31
|
|
32
|
+
Style/FormatString:
|
33
|
+
Enabled: false
|
34
|
+
|
30
35
|
Style/StringLiterals:
|
31
36
|
Enabled: false
|
32
37
|
|
38
|
+
Style/RegexpLiteral:
|
39
|
+
Enabled: false
|
40
|
+
|
33
41
|
Style/SpaceInsideStringInterpolation:
|
34
42
|
EnforcedStyle: no_space
|
35
43
|
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## master
|
4
|
+
|
5
|
+
- [#17](https://github.com/anycable/anycable-rails/issues/17) Refactor logging. ([@palkan][])
|
6
|
+
|
7
|
+
Use Rails logger everywhere.
|
8
|
+
|
9
|
+
Add access logs ([anycable/anycable#20](https://github.com/anycable/anycable/issues/20)).
|
10
|
+
|
3
11
|
## 0.4.7
|
4
12
|
|
5
13
|
- Minor fixes. ([@palkan][])
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -96,6 +96,27 @@ Don't forget to set cable url in your `config/environments/production.rb`:
|
|
96
96
|
config.action_cable.url = "ws://localhost:3334/cable"
|
97
97
|
```
|
98
98
|
|
99
|
+
### Logging
|
100
|
+
|
101
|
+
Anycable uses `Rails.logger` as `Anycable.logger` by default, thus Anycable _debug_ mode (`ANYCABLE_DEBUG=1`) is not available, you should configure Rails logger instead, e.g.:
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
# in Rails configuration
|
105
|
+
if Anycable.config.debug
|
106
|
+
config.logger = Logger.new(STDOUT)
|
107
|
+
config.log_level = :debug
|
108
|
+
end
|
109
|
+
```
|
110
|
+
|
111
|
+
You can also turn off access logging (`Started <request data>` / `Finished <request data>`):
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
# in anycable.yml
|
115
|
+
production:
|
116
|
+
access_logs_disabled: true
|
117
|
+
```
|
118
|
+
|
119
|
+
|
99
120
|
## ActionCable Compatibility
|
100
121
|
|
101
122
|
This is the compatibility list for the AnyCable gem, not for AnyCable servers (which may not support some of the features yet).
|
data/Rakefile
CHANGED
data/anycable-rails.gemspec
CHANGED
@@ -19,11 +19,12 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "rails", "~> 5"
|
22
|
-
spec.add_dependency "anycable", "
|
22
|
+
spec.add_dependency "anycable", "0.5.0.rc1"
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "rspec", ">= 3.4"
|
27
27
|
spec.add_development_dependency "simplecov", ">= 0.3.8"
|
28
|
+
spec.add_development_dependency "rubocop", ">= 0.50"
|
28
29
|
spec.add_development_dependency "pry-byebug"
|
29
30
|
end
|
data/lib/anycable/rails.rb
CHANGED
@@ -2,33 +2,13 @@
|
|
2
2
|
|
3
3
|
require "anycable"
|
4
4
|
require "anycable/rails/version"
|
5
|
+
require "anycable/rails/config"
|
5
6
|
|
6
7
|
module Anycable
|
7
8
|
# Rails handler for AnyCable
|
8
9
|
module Rails
|
9
|
-
# Use this proxy to quack like a TaggedLoggerProxy
|
10
|
-
class LoggerProxy
|
11
|
-
def initialize(logger)
|
12
|
-
@logger = logger
|
13
|
-
end
|
14
|
-
|
15
|
-
def add_tags(*_tags)
|
16
|
-
@logger.warn "Tagged logger is not supported by AnyCable. Skip"
|
17
|
-
end
|
18
|
-
|
19
|
-
%i[debug info warn error fatal unknown].each do |severity|
|
20
|
-
define_method(severity) do |message|
|
21
|
-
@logger.send severity, message
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
10
|
require "anycable/rails/engine"
|
27
11
|
require "anycable/rails/actioncable/server"
|
28
12
|
require "anycable/rails/actioncable/connection"
|
29
|
-
|
30
|
-
def self.logger
|
31
|
-
@logger ||= LoggerProxy.new(::Rails.logger)
|
32
|
-
end
|
33
13
|
end
|
34
14
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "action_cable/connection"
|
3
4
|
require "anycable/rails/refinements/subscriptions"
|
4
5
|
require "anycable/rails/actioncable/channel"
|
@@ -11,7 +12,7 @@ module ActionCable
|
|
11
12
|
attr_reader :socket
|
12
13
|
|
13
14
|
class << self
|
14
|
-
def
|
15
|
+
def call(socket, **options)
|
15
16
|
new(socket, **options)
|
16
17
|
end
|
17
18
|
|
@@ -39,13 +40,18 @@ module ActionCable
|
|
39
40
|
end
|
40
41
|
|
41
42
|
def handle_open
|
43
|
+
logger.info started_request_message if access_logs?
|
44
|
+
|
42
45
|
connect if respond_to?(:connect)
|
43
46
|
send_welcome_message
|
44
47
|
rescue ActionCable::Connection::Authorization::UnauthorizedError
|
48
|
+
logger.info finished_request_message('Rejected') if access_logs?
|
45
49
|
close
|
46
50
|
end
|
47
51
|
|
48
52
|
def handle_close
|
53
|
+
logger.info finished_request_message if access_logs?
|
54
|
+
|
49
55
|
subscriptions.unsubscribe_from_all
|
50
56
|
disconnect if respond_to?(:disconnect)
|
51
57
|
end
|
@@ -101,7 +107,32 @@ module ActionCable
|
|
101
107
|
end
|
102
108
|
|
103
109
|
def logger
|
104
|
-
Anycable
|
110
|
+
Anycable.logger
|
111
|
+
end
|
112
|
+
|
113
|
+
private
|
114
|
+
|
115
|
+
def started_request_message
|
116
|
+
'Started "%s"%s for %s at %s' % [
|
117
|
+
request.filtered_path,
|
118
|
+
" [Anycable]",
|
119
|
+
request.ip,
|
120
|
+
Time.now.to_s
|
121
|
+
]
|
122
|
+
end
|
123
|
+
|
124
|
+
def finished_request_message(reason = "Closed")
|
125
|
+
'Finished "%s"%s for %s at %s (%s)' % [
|
126
|
+
request.filtered_path,
|
127
|
+
" [Anycable]",
|
128
|
+
request.ip,
|
129
|
+
Time.now.to_s,
|
130
|
+
reason
|
131
|
+
]
|
132
|
+
end
|
133
|
+
|
134
|
+
def access_logs?
|
135
|
+
Anycable.config.access_logs_disabled == false
|
105
136
|
end
|
106
137
|
end
|
107
138
|
end
|
@@ -2,11 +2,32 @@
|
|
2
2
|
|
3
3
|
module Anycable
|
4
4
|
module Rails
|
5
|
+
# Use this proxy to quack like a TaggedLoggerProxy
|
6
|
+
class LoggerProxy
|
7
|
+
def initialize(logger)
|
8
|
+
@logger = logger
|
9
|
+
end
|
10
|
+
|
11
|
+
def add_tags(*_tags)
|
12
|
+
@logger.warn "Tagged logger is not supported by AnyCable. Skip"
|
13
|
+
end
|
14
|
+
|
15
|
+
%i[debug info warn error fatal unknown].each do |severity|
|
16
|
+
define_method(severity) do |message|
|
17
|
+
@logger.send severity, message
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
5
22
|
class Engine < ::Rails::Engine # :nodoc:
|
6
23
|
initializer "disable built-in Action Cable mount" do |app|
|
7
24
|
app.config.action_cable.mount_path = nil
|
8
25
|
end
|
9
26
|
|
27
|
+
initializer "set up logger" do |_app|
|
28
|
+
Anycable.logger = LoggerProxy.new(::Rails.logger)
|
29
|
+
end
|
30
|
+
|
10
31
|
initializer "release AR connections in RPC handler" do |_app|
|
11
32
|
ActiveSupport.on_load(:active_record) do
|
12
33
|
require "anycable/rails/activerecord/release_connection"
|
@@ -4,9 +4,7 @@
|
|
4
4
|
require ::File.expand_path('../../config/environment', __FILE__)
|
5
5
|
require "anycable-rails"
|
6
6
|
|
7
|
-
Anycable.
|
8
|
-
config.connection_factory = ActionCable.server.config.connection_class.call
|
9
|
-
end
|
7
|
+
Anycable.connection_factory = ActionCable.server.config.connection_class.call
|
10
8
|
|
11
9
|
Rails.application.eager_load!
|
12
10
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anycable-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- palkan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: anycable
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.5.0.rc1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.5.0.rc1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.3.8
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.50'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.50'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: pry-byebug
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +150,7 @@ files:
|
|
136
150
|
- lib/anycable/rails/actioncable/connection.rb
|
137
151
|
- lib/anycable/rails/actioncable/server.rb
|
138
152
|
- lib/anycable/rails/activerecord/release_connection.rb
|
153
|
+
- lib/anycable/rails/config.rb
|
139
154
|
- lib/anycable/rails/engine.rb
|
140
155
|
- lib/anycable/rails/refinements/subscriptions.rb
|
141
156
|
- lib/anycable/rails/version.rb
|
@@ -157,12 +172,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
157
172
|
version: '0'
|
158
173
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
174
|
requirements:
|
160
|
-
- - "
|
175
|
+
- - ">"
|
161
176
|
- !ruby/object:Gem::Version
|
162
|
-
version:
|
177
|
+
version: 1.3.1
|
163
178
|
requirements: []
|
164
179
|
rubyforge_project:
|
165
|
-
rubygems_version: 2.6.
|
180
|
+
rubygems_version: 2.6.13
|
166
181
|
signing_key:
|
167
182
|
specification_version: 4
|
168
183
|
summary: Rails adapter for AnyCable
|