anycable-rails 1.0.0.preview1 → 1.0.0.rc4
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/CHANGELOG.md +29 -121
- data/MIT-LICENSE +1 -1
- data/README.md +19 -34
- data/lib/anycable/rails.rb +36 -2
- data/lib/anycable/rails/actioncable/channel.rb +4 -0
- data/lib/anycable/rails/actioncable/connection.rb +26 -35
- data/lib/anycable/rails/actioncable/connection/persistent_session.rb +5 -1
- data/lib/anycable/rails/actioncable/connection/serializable_identification.rb +42 -0
- data/lib/anycable/rails/actioncable/remote_connections.rb +11 -0
- data/lib/anycable/rails/actioncable/testing.rb +35 -0
- data/lib/anycable/rails/channel_state.rb +46 -0
- data/lib/anycable/rails/compatibility.rb +4 -7
- data/lib/anycable/rails/compatibility/rubocop.rb +0 -1
- data/lib/anycable/rails/compatibility/rubocop/config/default.yml +3 -0
- data/lib/anycable/rails/compatibility/rubocop/cops/anycable/instance_vars.rb +1 -1
- data/lib/anycable/rails/compatibility/rubocop/cops/anycable/stream_from.rb +4 -4
- data/lib/anycable/rails/railtie.rb +26 -18
- data/lib/anycable/rails/refinements/subscriptions.rb +5 -0
- data/lib/anycable/rails/session_proxy.rb +19 -2
- data/lib/anycable/rails/version.rb +1 -1
- data/lib/generators/anycable/download/USAGE +14 -0
- data/lib/generators/anycable/download/download_generator.rb +83 -0
- data/lib/generators/anycable/setup/USAGE +2 -0
- data/lib/{rails/generators → generators}/anycable/setup/setup_generator.rb +89 -90
- data/lib/{rails/generators → generators}/anycable/setup/templates/Procfile.dev +0 -0
- data/lib/{rails/generators → generators}/anycable/setup/templates/config/anycable.yml.tt +14 -3
- data/lib/generators/anycable/setup/templates/config/cable.yml.tt +11 -0
- data/lib/{rails/generators/anycable/setup/templates/config/initializers/anycable.rb → generators/anycable/setup/templates/config/initializers/anycable.rb.tt} +1 -1
- data/lib/generators/anycable/with_os_helpers.rb +55 -0
- metadata +27 -50
- data/lib/anycable/rails/compatibility/rubocop/cops/anycable/remote_disconnect.rb +0 -31
- data/lib/rails/generators/anycable/setup/templates/Procfile +0 -2
- data/lib/rails/generators/anycable/setup/templates/bin/heroku-web +0 -7
- data/lib/rails/generators/anycable/setup/templates/config/cable.yml.tt +0 -11
@@ -1,33 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "generators/anycable/with_os_helpers"
|
4
|
+
|
3
5
|
module AnyCableRailsGenerators
|
4
6
|
# Entry point for interactive installation
|
5
7
|
class SetupGenerator < ::Rails::Generators::Base
|
6
8
|
namespace "anycable:setup"
|
7
9
|
source_root File.expand_path("templates", __dir__)
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
OS_NAMES = %w[linux darwin freebsd win].freeze
|
12
|
-
CPU_NAMES = %w[amd64 arm64 386 arm].freeze
|
11
|
+
DOCS_ROOT = "https://docs.anycable.io/v1/#"
|
12
|
+
DEVELOPMENT_METHODS = %w[skip local docker].freeze
|
13
13
|
SERVER_SOURCES = %w[skip brew binary].freeze
|
14
|
-
DEFAULT_BIN_PATH = "/usr/local/bin"
|
15
14
|
|
16
|
-
class_option :
|
15
|
+
class_option :devenv,
|
17
16
|
type: :string,
|
18
|
-
desc: "Select your development environment (options: #{
|
17
|
+
desc: "Select your development environment (options: #{DEVELOPMENT_METHODS.join(", ")})"
|
19
18
|
class_option :source,
|
20
19
|
type: :string,
|
21
20
|
desc: "Choose a way of installing AnyCable-Go server (options: #{SERVER_SOURCES.join(", ")})"
|
22
|
-
class_option :bin_path,
|
23
|
-
type: :string,
|
24
|
-
desc: "Where to download AnyCable-Go server binary (default: #{DEFAULT_BIN_PATH})"
|
25
|
-
class_option :os,
|
26
|
-
type: :string,
|
27
|
-
desc: "Specify the OS for AnyCable-Go server binary (options: #{OS_NAMES.join(", ")})"
|
28
|
-
class_option :cpu,
|
29
|
-
type: :string,
|
30
|
-
desc: "Specify the CPU architecturefor AnyCable-Go server binary (options: #{CPU_NAMES.join(", ")})"
|
31
21
|
class_option :skip_heroku,
|
32
22
|
type: :boolean,
|
33
23
|
desc: "Do not copy Heroku configs"
|
@@ -35,6 +25,15 @@ module AnyCableRailsGenerators
|
|
35
25
|
type: :boolean,
|
36
26
|
desc: "Do not create Procfile.dev"
|
37
27
|
|
28
|
+
include WithOSHelpers
|
29
|
+
|
30
|
+
class_option :bin_path,
|
31
|
+
type: :string,
|
32
|
+
desc: "Where to download AnyCable-Go server binary (default: #{DEFAULT_BIN_PATH})"
|
33
|
+
class_option :version,
|
34
|
+
type: :string,
|
35
|
+
desc: "Specify the AnyCable-Go version (defaults to latest release)"
|
36
|
+
|
38
37
|
def welcome
|
39
38
|
say "👋 Welcome to AnyCable interactive installer."
|
40
39
|
end
|
@@ -50,32 +49,36 @@ module AnyCableRailsGenerators
|
|
50
49
|
environment(nil, env: :development) do
|
51
50
|
<<~SNIPPET
|
52
51
|
# Specify AnyCable WebSocket server URL to use by JS client
|
53
|
-
config.
|
52
|
+
config.after_initialize do
|
53
|
+
config.action_cable.url = ActionCable.server.config.url = ENV.fetch("CABLE_URL", "ws://localhost:8080/cable") if AnyCable::Rails.enabled?
|
54
|
+
end
|
54
55
|
SNIPPET
|
55
56
|
end
|
56
57
|
|
57
58
|
environment(nil, env: :production) do
|
58
59
|
<<~SNIPPET
|
59
60
|
# Specify AnyCable WebSocket server URL to use by JS client
|
60
|
-
config.
|
61
|
+
config.after_initialize do
|
62
|
+
config.action_cable.url = ActionCable.server.config.url = ENV.fetch("CABLE_URL") if AnyCable::Rails.enabled?
|
63
|
+
end
|
61
64
|
SNIPPET
|
62
65
|
end
|
63
66
|
|
64
67
|
say_status :info, "✅ 'config.action_cable.url' has been configured"
|
65
|
-
say_status :help, "⚠️
|
68
|
+
say_status :help, "⚠️ If you're using JS client make sure you have " \
|
66
69
|
"`action_cable_meta_tag` included before any <script> tag in your application.html"
|
67
70
|
end
|
68
71
|
|
69
72
|
def development_method
|
70
|
-
answer =
|
73
|
+
answer = DEVELOPMENT_METHODS.index(options[:devenv]) || 99
|
71
74
|
|
72
|
-
until
|
75
|
+
until DEVELOPMENT_METHODS[answer.to_i]
|
73
76
|
answer = ask "Which environment do you use for development? (1) Local, (2) Docker, (0) Skip"
|
74
77
|
end
|
75
78
|
|
76
|
-
case env =
|
79
|
+
case env = DEVELOPMENT_METHODS[answer.to_i]
|
77
80
|
when "skip"
|
78
|
-
say_status :help, "⚠️
|
81
|
+
say_status :help, "⚠️ Please, read this guide on how to install AnyCable-Go server 👉 #{DOCS_ROOT}/anycable-go/getting_started", :yellow
|
79
82
|
else
|
80
83
|
send "install_for_#{env}"
|
81
84
|
end
|
@@ -83,15 +86,21 @@ module AnyCableRailsGenerators
|
|
83
86
|
|
84
87
|
def heroku
|
85
88
|
if options[:skip_heroku].nil?
|
86
|
-
return unless yes? "Do you use Heroku for deployment?"
|
89
|
+
return unless yes? "Do you use Heroku for deployment? [Yn]"
|
87
90
|
elsif options[:skip_heroku]
|
88
91
|
return
|
89
92
|
end
|
90
93
|
|
91
|
-
|
92
|
-
|
94
|
+
in_root do
|
95
|
+
next unless File.file?("Procfile")
|
96
|
+
|
97
|
+
contents = File.read("Procfile")
|
98
|
+
contents.sub!(/^web: (.*)$/, %q(web: [[ "$ANYCABLE_DEPLOYMENT" == "true" ]] && bundle exec anycable --server-command="anycable-go" || \1))
|
99
|
+
File.write("Procfile", contents)
|
100
|
+
say_status :info, "✅ Procfile updated"
|
101
|
+
end
|
93
102
|
|
94
|
-
say_status :help, "️️⚠️
|
103
|
+
say_status :help, "️️⚠️ Please, read the required steps to configure Heroku applications 👉 #{DOCS_ROOT}/deployment/heroku", :yellow
|
95
104
|
end
|
96
105
|
|
97
106
|
def devise
|
@@ -106,6 +115,20 @@ module AnyCableRailsGenerators
|
|
106
115
|
say_status :info, "✅ config/initializers/anycable.rb with Devise configuration has been added"
|
107
116
|
end
|
108
117
|
|
118
|
+
def stimulus_reflex
|
119
|
+
return unless stimulus_reflex?
|
120
|
+
|
121
|
+
say_status :help, "⚠️ Please, check out the documentation on using AnyCable with Stimulus Reflex: https://docs.anycable.io/v1/#/ruby/stimulus_reflex"
|
122
|
+
end
|
123
|
+
|
124
|
+
def rubocop_compatibility
|
125
|
+
return unless rubocop?
|
126
|
+
|
127
|
+
say_status :info, "🤖 Running static compatibility checks with RuboCop"
|
128
|
+
res = run "bundle exec rubocop -r 'anycable/rails/compatibility/rubocop' --only AnyCable/InstanceVars,AnyCable/PeriodicalTimers,AnyCable/InstanceVars"
|
129
|
+
say_status :help, "⚠️ Please, take a look at the icompatibilities above and fix them. See https://docs.anycable.io/v1/#/ruby/compatibility" unless res
|
130
|
+
end
|
131
|
+
|
109
132
|
def finish
|
110
133
|
say_status :info, "✅ AnyCable has been configured successfully!"
|
111
134
|
end
|
@@ -113,7 +136,15 @@ module AnyCableRailsGenerators
|
|
113
136
|
private
|
114
137
|
|
115
138
|
def stimulus_reflex?
|
116
|
-
|
139
|
+
!!gemfile_lock&.match?(/^\s+stimulus_reflex\b/)
|
140
|
+
end
|
141
|
+
|
142
|
+
def redis?
|
143
|
+
!!gemfile_lock&.match?(/^\s+redis\b/)
|
144
|
+
end
|
145
|
+
|
146
|
+
def rubocop?
|
147
|
+
!!gemfile_lock&.match?(/^\s+rubocop\b/)
|
117
148
|
end
|
118
149
|
|
119
150
|
def gemfile_lock
|
@@ -128,32 +159,41 @@ module AnyCableRailsGenerators
|
|
128
159
|
end
|
129
160
|
|
130
161
|
def install_for_docker
|
131
|
-
|
162
|
+
# Remove localhost from configuraiton
|
163
|
+
gsub_file "config/anycable.yml", /^.*redis_url:.*localhost[^\n]+\n/, ""
|
164
|
+
|
165
|
+
say_status :help, "️️⚠️ Docker development configuration could vary", :yellow
|
132
166
|
|
133
167
|
say "Here is an example snippet for docker-compose.yml:"
|
134
168
|
say <<~YML
|
135
169
|
─────────────────────────────────────────
|
136
|
-
|
137
|
-
image: anycable/anycable-go:
|
170
|
+
ws:
|
171
|
+
image: anycable/anycable-go:1.0
|
138
172
|
ports:
|
139
|
-
- '
|
173
|
+
- '8080:8080'
|
140
174
|
environment:
|
141
|
-
|
175
|
+
ANYCABLE_HOST: "0.0.0.0"
|
142
176
|
ANYCABLE_REDIS_URL: redis://redis:6379/0
|
143
|
-
ANYCABLE_RPC_HOST: anycable
|
177
|
+
ANYCABLE_RPC_HOST: anycable:50051
|
178
|
+
ANYCABLE_DEBUG: 1
|
144
179
|
depends_on:
|
145
|
-
|
146
|
-
|
180
|
+
redis:
|
181
|
+
condition: service_healthy
|
147
182
|
|
148
|
-
anycable
|
183
|
+
anycable:
|
149
184
|
<<: *backend
|
150
185
|
command: bundle exec anycable
|
151
186
|
environment:
|
152
187
|
<<: *backend_environment
|
153
188
|
ANYCABLE_REDIS_URL: redis://redis:6379/0
|
154
189
|
ANYCABLE_RPC_HOST: 0.0.0.0:50051
|
190
|
+
ANYCABLE_DEBUG: 1
|
155
191
|
ports:
|
156
192
|
- '50051'
|
193
|
+
depends_on:
|
194
|
+
<<: *backend_depends_on
|
195
|
+
ws:
|
196
|
+
condition: service_started
|
157
197
|
─────────────────────────────────────────
|
158
198
|
YML
|
159
199
|
end
|
@@ -172,7 +212,7 @@ module AnyCableRailsGenerators
|
|
172
212
|
|
173
213
|
case answer.to_i
|
174
214
|
when 0
|
175
|
-
say_status :help, "⚠️
|
215
|
+
say_status :help, "⚠️ Please, read this guide on how to install AnyCable-Go server 👉 #{DOCS_ROOT}/anycable-go/getting_started", :yellow
|
176
216
|
return
|
177
217
|
else
|
178
218
|
return unless send("install_from_#{SERVER_SOURCES[answer.to_i]}")
|
@@ -205,63 +245,22 @@ module AnyCableRailsGenerators
|
|
205
245
|
end
|
206
246
|
|
207
247
|
def install_from_binary
|
208
|
-
|
209
|
-
|
210
|
-
out ||= ask "Please, enter the path to download the AnyCable-Go binary to", default: DEFAULT_BIN_PATH, path: true
|
211
|
-
|
212
|
-
os_name = options[:os] ||
|
213
|
-
OS_NAMES.find(&Gem::Platform.local.os.method(:==)) ||
|
214
|
-
ask("What is your OS name?", limited_to: OS_NAMES)
|
248
|
+
bin_path ||= DEFAULT_BIN_PATH if options[:devenv] # User don't want interactive mode
|
249
|
+
bin_path ||= ask "Please, enter the path to download the AnyCable-Go binary to", default: DEFAULT_BIN_PATH, path: true
|
215
250
|
|
216
|
-
|
217
|
-
CPU_NAMES.find(¤t_cpu.method(:==)) ||
|
218
|
-
ask("What is your CPU architecture?", limited_to: CPU_NAMES)
|
219
|
-
|
220
|
-
download_exe(
|
221
|
-
"https://github.com/anycable/anycable-go/releases/download/#{SERVER_VERSION}/" \
|
222
|
-
"anycable-go-#{SERVER_VERSION}-#{os_name}-#{cpu_name}",
|
223
|
-
to: out,
|
224
|
-
file_name: "anycable-go"
|
225
|
-
)
|
251
|
+
generate "anycable:download", download_options(bin_path: bin_path)
|
226
252
|
|
227
253
|
true
|
228
254
|
end
|
229
255
|
|
230
|
-
def
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
def sudo!(path)
|
239
|
-
sudo = ""
|
240
|
-
unless File.writable?(path)
|
241
|
-
if yes? "Path is not writable 😕. Do you have sudo privileges?"
|
242
|
-
sudo = "sudo "
|
243
|
-
else
|
244
|
-
say_status :error, "❌ Failed to install AnyCable-Go WebSocket server", :red
|
245
|
-
raise StandardError, "Path #{path} is not writable!"
|
246
|
-
end
|
247
|
-
end
|
248
|
-
|
249
|
-
sudo
|
250
|
-
end
|
251
|
-
|
252
|
-
def current_cpu
|
253
|
-
case Gem::Platform.local.cpu
|
254
|
-
when "x86_64", "x64"
|
255
|
-
"amd64"
|
256
|
-
when "x86_32", "x86", "i386", "i486", "i686"
|
257
|
-
"i386"
|
258
|
-
when "aarch64", "aarch64_be", /armv8/
|
259
|
-
"arm64"
|
260
|
-
when "arm", /armv7/, /armv6/
|
261
|
-
"arm"
|
262
|
-
else
|
263
|
-
"unknown"
|
264
|
-
end
|
256
|
+
def download_options(**params)
|
257
|
+
opts = options.merge(params)
|
258
|
+
[].tap do |args|
|
259
|
+
args << "--os #{opts[:os]}" if opts[:os]
|
260
|
+
args << "--cpu #{opts[:cpu]}" if opts[:cpu]
|
261
|
+
args << "--bin-path=#{opts[:bin_path]}" if opts[:bin_path]
|
262
|
+
args << "--version #{opts[:version]}" if opts[:version]
|
263
|
+
end.join(" ")
|
265
264
|
end
|
266
265
|
end
|
267
266
|
end
|
File without changes
|
@@ -7,19 +7,26 @@
|
|
7
7
|
# Note that AnyCable recognizes REDIS_URL env variable for Redis pub/sub adapter. If you want to
|
8
8
|
# use another Redis instance for AnyCable, provide ANYCABLE_REDIS_URL variable.
|
9
9
|
#
|
10
|
-
# Read more about AnyCable configuration here:
|
10
|
+
# Read more about AnyCable configuration here: <%= DOCS_ROOT %>/ruby/configuration
|
11
11
|
#
|
12
12
|
default: &default
|
13
13
|
# Turn on/off access logs ("Started..." and "Finished...")
|
14
14
|
access_logs_disabled: false
|
15
|
-
# Persist "dirty" session between RPC calls (might be required for
|
16
|
-
persistent_session_enabled:
|
15
|
+
# Persist "dirty" session between RPC calls (might be required for apps using stimulus_reflex <3.0)
|
16
|
+
# persistent_session_enabled: true
|
17
17
|
# This is the host and the port to run AnyCable RPC server on.
|
18
18
|
# You must configure your WebSocket server to connect to it, e.g.:
|
19
19
|
# $ anycable-go --rpc-host="<rpc hostname>:50051"
|
20
20
|
rpc_host: "127.0.0.1:50051"
|
21
21
|
# Whether to enable gRPC level logging or not
|
22
22
|
log_grpc: false
|
23
|
+
<%- if redis? -%>
|
24
|
+
# Use Redis to broadcast messages to AnyCable server
|
25
|
+
broadcast_adapter: redis
|
26
|
+
<%- else -%>
|
27
|
+
# Use HTTP adapter for a quick start (since redis gem is not present in the project)
|
28
|
+
broadcast_adapter: http
|
29
|
+
<%- end -%>
|
23
30
|
# Use the same channel name for WebSocket server, e.g.:
|
24
31
|
# $ anycable-go --redis-channel="__anycable__"
|
25
32
|
redis_channel: "__anycable__"
|
@@ -30,3 +37,7 @@ development:
|
|
30
37
|
|
31
38
|
production:
|
32
39
|
<<: *default
|
40
|
+
<%- if !redis? -%>
|
41
|
+
# Use Redis in production
|
42
|
+
broadcast_adapter: redis
|
43
|
+
<%- end -%>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# Make it possible to switch adapters by passing the ACTION_CABLE_ADAPTER env variable.
|
2
|
+
# For example, you can use it fallback to the standard Action Cable in staging/review
|
3
|
+
# environments (by setting `ACTION_CABLE_ADAPTER=redis`).
|
4
|
+
development:
|
5
|
+
adapter: <%%= ENV.fetch("ACTION_CABLE_ADAPTER", "any_cable") %>
|
6
|
+
|
7
|
+
test:
|
8
|
+
adapter: test
|
9
|
+
|
10
|
+
production:
|
11
|
+
adapter: <%%= ENV.fetch("ACTION_CABLE_ADAPTER", "any_cable") %>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Add Warden middkeware to AnyCable stack to allow accessing
|
4
4
|
# Devise current user via `env["warden"].user`.
|
5
5
|
#
|
6
|
-
# See
|
6
|
+
# See <%= DOCS_ROOT %>/ruby/authentication
|
7
7
|
AnyCable::Rails::Rack.middleware.use Warden::Manager do |config|
|
8
8
|
Devise.warden_config = config
|
9
9
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AnyCableRailsGenerators
|
4
|
+
module WithOSHelpers
|
5
|
+
OS_NAMES = %w[linux darwin freebsd win].freeze
|
6
|
+
CPU_NAMES = %w[amd64 arm64 386 arm].freeze
|
7
|
+
DEFAULT_BIN_PATH = "/usr/local/bin"
|
8
|
+
|
9
|
+
def self.included(base)
|
10
|
+
base.class_option :os,
|
11
|
+
type: :string,
|
12
|
+
desc: "Specify the OS for AnyCable-Go server binary (options: #{OS_NAMES.join(", ")})"
|
13
|
+
base.class_option :cpu,
|
14
|
+
type: :string,
|
15
|
+
desc: "Specify the CPU architecturefor AnyCable-Go server binary (options: #{CPU_NAMES.join(", ")})"
|
16
|
+
|
17
|
+
private :current_cpu, :supported_current_cpu, :supported_current_os
|
18
|
+
end
|
19
|
+
|
20
|
+
def current_cpu
|
21
|
+
case Gem::Platform.local.cpu
|
22
|
+
when "x86_64", "x64"
|
23
|
+
"amd64"
|
24
|
+
when "x86_32", "x86", "i386", "i486", "i686"
|
25
|
+
"i386"
|
26
|
+
when "aarch64", "aarch64_be", /armv8/
|
27
|
+
"arm64"
|
28
|
+
when "arm", /armv7/, /armv6/
|
29
|
+
"arm"
|
30
|
+
else
|
31
|
+
"unknown"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def os_name
|
36
|
+
options[:os] ||
|
37
|
+
supported_current_os ||
|
38
|
+
ask("What is your OS name?", limited_to: OS_NAMES)
|
39
|
+
end
|
40
|
+
|
41
|
+
def cpu_name
|
42
|
+
options[:cpu] ||
|
43
|
+
supported_current_cpu ||
|
44
|
+
ask("What is your CPU architecture?", limited_to: CPU_NAMES)
|
45
|
+
end
|
46
|
+
|
47
|
+
def supported_current_cpu
|
48
|
+
CPU_NAMES.find(¤t_cpu.method(:==))
|
49
|
+
end
|
50
|
+
|
51
|
+
def supported_current_os
|
52
|
+
OS_NAMES.find(&Gem::Platform.local.os.method(:==))
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anycable-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- palkan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anycable
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0.0.
|
19
|
+
version: 1.0.0.rc2
|
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
|
-
version: 1.0.0.
|
26
|
+
version: 1.0.0.rc2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,70 +72,42 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
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: '
|
82
|
+
version: '13.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: rspec
|
84
|
+
name: rspec-rails
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 4.0.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rubocop-md
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0.3'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0.3'
|
96
|
+
version: 4.0.0
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
98
|
+
name: rubocop
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
103
|
+
version: '0.80'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - ">="
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: standard
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 0.1.7
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 0.1.7
|
110
|
+
version: '0.80'
|
139
111
|
- !ruby/object:Gem::Dependency
|
140
112
|
name: warden
|
141
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,12 +139,15 @@ files:
|
|
167
139
|
- lib/anycable/rails/actioncable/channel.rb
|
168
140
|
- lib/anycable/rails/actioncable/connection.rb
|
169
141
|
- lib/anycable/rails/actioncable/connection/persistent_session.rb
|
142
|
+
- lib/anycable/rails/actioncable/connection/serializable_identification.rb
|
143
|
+
- lib/anycable/rails/actioncable/remote_connections.rb
|
144
|
+
- lib/anycable/rails/actioncable/testing.rb
|
145
|
+
- lib/anycable/rails/channel_state.rb
|
170
146
|
- lib/anycable/rails/compatibility.rb
|
171
147
|
- lib/anycable/rails/compatibility/rubocop.rb
|
172
148
|
- lib/anycable/rails/compatibility/rubocop/config/default.yml
|
173
149
|
- lib/anycable/rails/compatibility/rubocop/cops/anycable/instance_vars.rb
|
174
150
|
- lib/anycable/rails/compatibility/rubocop/cops/anycable/periodical_timers.rb
|
175
|
-
- lib/anycable/rails/compatibility/rubocop/cops/anycable/remote_disconnect.rb
|
176
151
|
- lib/anycable/rails/compatibility/rubocop/cops/anycable/stream_from.rb
|
177
152
|
- lib/anycable/rails/config.rb
|
178
153
|
- lib/anycable/rails/middlewares/executor.rb
|
@@ -182,13 +157,15 @@ files:
|
|
182
157
|
- lib/anycable/rails/refinements/subscriptions.rb
|
183
158
|
- lib/anycable/rails/session_proxy.rb
|
184
159
|
- lib/anycable/rails/version.rb
|
185
|
-
- lib/
|
186
|
-
- lib/
|
187
|
-
- lib/
|
188
|
-
- lib/
|
189
|
-
- lib/
|
190
|
-
- lib/
|
191
|
-
- lib/
|
160
|
+
- lib/generators/anycable/download/USAGE
|
161
|
+
- lib/generators/anycable/download/download_generator.rb
|
162
|
+
- lib/generators/anycable/setup/USAGE
|
163
|
+
- lib/generators/anycable/setup/setup_generator.rb
|
164
|
+
- lib/generators/anycable/setup/templates/Procfile.dev
|
165
|
+
- lib/generators/anycable/setup/templates/config/anycable.yml.tt
|
166
|
+
- lib/generators/anycable/setup/templates/config/cable.yml.tt
|
167
|
+
- lib/generators/anycable/setup/templates/config/initializers/anycable.rb.tt
|
168
|
+
- lib/generators/anycable/with_os_helpers.rb
|
192
169
|
homepage: http://github.com/anycable/anycable-rails
|
193
170
|
licenses:
|
194
171
|
- MIT
|