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 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