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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7b9447d2754976500f75cf5544947ed086b3259
4
- data.tar.gz: 306070a5d753988544515a876a271ddf7d1032cd
3
+ metadata.gz: 3dcb6dc5268c5322088c9da2d7925722eba8c12c
4
+ data.tar.gz: 218bc7ce31c10b0b42133cb6238d26a1b865010f
5
5
  SHA512:
6
- metadata.gz: 2b3cdb613732eeec3f2a6c3c1bea1f14ac9cd4fd2037a026075dc0ddd41b6150abeb21bcc4fdd31f5af1f09a9860b7af60fc1a7de2485a7cff9aca97d335e713
7
- data.tar.gz: 022af2cb8de1cb703c91e0f7fb8312098b40af99bf819b73088108822121a5c473001a2f5c10f9c6e802fcfb46c4bcb718ae7628fa16c3eb622d3c3558713e92
6
+ metadata.gz: 0a924c25ad9a6e4ae08560c78ce260c4941dc5886c33e9e023c323e38df6c47fad0c400635b983d459e9188147667eaa7b8ddfad47d9100b85d7e8e7225743a0
7
+ data.tar.gz: b18363482cf9b6c3a0012c70382383339101495fe2854cd478a06d129b891894832f27c4a61db9b60d6def737b68c4bcd3ab3cfb5a48341ad1c6de734ae9db26
@@ -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
 
@@ -1,6 +1,9 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
 
4
+ notifications:
5
+ email: false
6
+
4
7
  rvm: 2.3.3
5
8
 
6
9
  matrix:
@@ -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
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
+
2
3
  gemspec
3
4
 
4
5
  local_gemfile = "#{File.dirname(__FILE__)}/Gemfile.local"
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
@@ -1,6 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require "rubocop/rake_task"
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
6
+ RuboCop::RakeTask.new
5
7
 
6
- task default: :spec
8
+ task default: [:rubocop, :spec]
@@ -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", "~>0.4.4"
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
@@ -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 create(socket, **options)
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::Rails.logger
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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Extend Anycable configuration with
4
+ # `access_logs_disabled` options (defaults to false)
5
+ Anycable::Config.attr_config access_logs_disabled: false
@@ -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"
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Anycable
4
4
  module Rails
5
- VERSION = "0.4.7"
5
+ VERSION = "0.5.0.rc1"
6
6
  end
7
7
  end
@@ -4,9 +4,7 @@
4
4
  require ::File.expand_path('../../config/environment', __FILE__)
5
5
  require "anycable-rails"
6
6
 
7
- Anycable.configure do |config|
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.7
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-09-04 00:00:00.000000000 Z
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.4.4
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.4.4
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: '0'
177
+ version: 1.3.1
163
178
  requirements: []
164
179
  rubyforge_project:
165
- rubygems_version: 2.6.11
180
+ rubygems_version: 2.6.13
166
181
  signing_key:
167
182
  specification_version: 4
168
183
  summary: Rails adapter for AnyCable