anycable-rails 0.4.7 → 0.5.0.rc1
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/.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
|