Skip to content

Commit

Permalink
init it
Browse files Browse the repository at this point in the history
  • Loading branch information
palkan committed Sep 13, 2024
0 parents commit ef2be63
Show file tree
Hide file tree
Showing 18 changed files with 836 additions and 0 deletions.
1 change: 1 addition & 0 deletions .anycable-rails-revision
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://github.com/anycable/anycable-rails.git#feat/actioncable-v8
42 changes: 42 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: CI

on:
push:
branches:
- master
pull_request:
workflow_dispatch:

jobs:
wsdirector:
if: ${{ !contains(github.event.head_commit.message, '[ci skip]') }}
runs-on: ubuntu-latest
env:
BUNDLE_JOBS: 4
BUNDLE_RETRY: 3
CI: true
services:
redis:
image: redis:7.0-alpine
ports: ["6379:6379"]
options: --health-cmd="redis-cli ping" --health-interval 1s --health-timeout 3s --health-retries 30
strategy:
fail-fast: false
matrix:
server: ["puma", "anycable"]
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3
bundler-cache: true
- name: Run server
run: |
bundle exec bento --${{ matrix.server }} &
bin/wait_tcp 8080
- name: Run echo scenario
run: |
SCENARIO=echo make wsdirector
- name: Run broadcast scenario
run: |
SCENARIO=broadcast make wsdirector
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
anycable-go-*
k6

.rails-path
.anycable-path

bin/dist
!bin/dist/.keep
1 change: 1 addition & 0 deletions .rails-revision
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://github.com/palkan/rails.git#refactor/action-cable-server-adapterization
50 changes: 50 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
source "https://rubygems.org"

rails_path = File.file?(File.join(__dir__, ".rails-path")) ? File.read(File.join(__dir__, ".rails-path")).strip : File.join(__dir__, "../rails")

# Use local Rails copy if available
if File.directory?(rails_path)
gem "rails", group: :preload, path: rails_path
# Use Rails from a git repo
elsif File.file?(File.join(__dir__, ".rails-revision"))
git, branch = *File.read(File.join(__dir__, ".rails-revision")).strip.split("#", 2)
gem "rails", group: :preload, git:, branch:
else
gem "rails", "~> 8.0"
end

# Baseline setup: Puma + Redis pub/sub
gem "puma", "~> 6.4"
gem "redis", "~> 5.0", group: :preload

# Async setup
# TODO

# AnyCable setup
gem "grpc_kit" if ENV["ANYCABLE_GRPC_IMPL"] == "grpc_kit"
gem "grpc" unless ENV["ANYCABLE_GRPC_IMPL"] == "grpc_kit"

anycable_dir_path = File.file?(File.join(__dir__, ".anycable-path")) ? File.read(File.join(__dir__, ".anycable-path")).strip : File.join(__dir__, "..")

if File.file?(File.join(anycable_dir_path, "anycable/anycable-core.gemspec"))
gem "anycable-core", group: :preload, path: File.join(anycable_dir_path, "anycable")
elsif File.file?(File.join(__dir__, ".anycable-revision"))
git, branch = *File.read(File.join(__dir__, ".anycable-revision")).strip.split("#", 2)
gem "anycable-core", require: false, group: :preload, git:, branch:
else
gem "anycable-core"
end

if File.file?(File.join(anycable_dir_path, "anycable-rails/anycable-rails.gemspec"))
gem "anycable-rails", group: :preload, path: File.join(anycable_dir_path, "anycable-rails")
elsif File.file?(File.join(__dir__, ".anycable-rails-revision"))
git, branch = *File.read(File.join(__dir__, ".anycable-rails-revision")).strip.split("#", 2)
gem "anycable-rails", require: false, group: :preload, git:, branch:
else
gem "anycable-rails"
end

# Tools
gem "wsdirector-cli", require: false

gem "debug" unless ENV["CI"]
281 changes: 281 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,281 @@
PATH
remote: ../../rails
specs:
actioncable (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activejob (= 8.0.0.alpha)
activerecord (= 8.0.0.alpha)
activestorage (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
mail (>= 2.8.0)
actionmailer (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
actionview (= 8.0.0.alpha)
activejob (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
actionpack (8.0.0.alpha)
actionview (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
nokogiri (>= 1.8.5)
rack (>= 2.2.4)
rack-session (>= 1.0.1)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
useragent (~> 0.16)
actiontext (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activerecord (= 8.0.0.alpha)
activestorage (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (8.0.0.alpha)
activesupport (= 8.0.0.alpha)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
activejob (8.0.0.alpha)
activesupport (= 8.0.0.alpha)
globalid (>= 0.3.6)
activemodel (8.0.0.alpha)
activesupport (= 8.0.0.alpha)
activerecord (8.0.0.alpha)
activemodel (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
timeout (>= 0.4.0)
activestorage (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activejob (= 8.0.0.alpha)
activerecord (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
marcel (~> 1.0)
activesupport (8.0.0.alpha)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
uri (>= 0.13.1)
rails (8.0.0.alpha)
actioncable (= 8.0.0.alpha)
actionmailbox (= 8.0.0.alpha)
actionmailer (= 8.0.0.alpha)
actionpack (= 8.0.0.alpha)
actiontext (= 8.0.0.alpha)
actionview (= 8.0.0.alpha)
activejob (= 8.0.0.alpha)
activemodel (= 8.0.0.alpha)
activerecord (= 8.0.0.alpha)
activestorage (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
bundler (>= 1.15.0)
railties (= 8.0.0.alpha)
railties (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
irb (~> 1.13)
rackup (>= 1.0.0)
rake (>= 12.2)
thor (~> 1.0, >= 1.2.2)
zeitwerk (~> 2.6)

PATH
remote: /Users/palkan/dev/anycable/anycable-rails
specs:
anycable-rails (1.5.3)
anycable (~> 1.5.0)
anycable-rails-core (= 1.5.3)
anycable-rails-core (1.5.3)
actioncable (> 7.2)
anycable-core (~> 1.5.0)
globalid

PATH
remote: /Users/palkan/dev/anycable/anycable
specs:
anycable (1.5.1)
anycable-core (= 1.5.1)
grpc (~> 1.53)
anycable-core (1.5.1)
anyway_config (~> 2.2)
google-protobuf (~> 3.25)

GEM
remote: https://rubygems.org/
specs:
anyway_config (2.6.4)
ruby-next-core (~> 1.0)
base64 (0.2.0)
benchmark (0.3.0)
bigdecimal (3.1.8)
builder (3.3.0)
colorize (1.1.0)
concurrent-ruby (1.3.4)
connection_pool (2.4.1)
crass (1.0.6)
date (3.3.4)
debug (1.9.2)
irb (~> 1.10)
reline (>= 0.3.8)
drb (2.2.1)
erubi (1.13.0)
event_emitter (0.2.6)
globalid (1.2.1)
activesupport (>= 6.1)
google-protobuf (3.25.4)
google-protobuf (3.25.4-aarch64-linux)
google-protobuf (3.25.4-arm64-darwin)
google-protobuf (3.25.4-x86-linux)
google-protobuf (3.25.4-x86_64-darwin)
google-protobuf (3.25.4-x86_64-linux)
googleapis-common-protos-types (1.16.0)
google-protobuf (>= 3.18, < 5.a)
grpc (1.66.0)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
grpc (1.66.0-aarch64-linux)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
grpc (1.66.0-arm64-darwin)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
grpc (1.66.0-x86-linux)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
grpc (1.66.0-x86_64-darwin)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
grpc (1.66.0-x86_64-linux)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
i18n (1.14.5)
concurrent-ruby (~> 1.0)
io-console (0.7.2)
irb (1.14.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
logger (1.6.1)
loofah (2.22.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
marcel (1.0.4)
mini_mime (1.1.5)
minitest (5.25.1)
net-imap (0.4.16)
date
net-protocol
net-pop (0.1.2)
net-protocol
net-protocol (0.2.2)
timeout
net-smtp (0.5.0)
net-protocol
nio4r (2.7.3)
nokogiri (1.16.7-aarch64-linux)
racc (~> 1.4)
nokogiri (1.16.7-arm-linux)
racc (~> 1.4)
nokogiri (1.16.7-arm64-darwin)
racc (~> 1.4)
nokogiri (1.16.7-x86-linux)
racc (~> 1.4)
nokogiri (1.16.7-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.16.7-x86_64-linux)
racc (~> 1.4)
psych (5.1.2)
stringio
puma (6.4.2)
nio4r (~> 2.0)
racc (1.8.1)
rack (3.1.7)
rack-session (2.0.0)
rack (>= 3.0.0)
rack-test (2.1.0)
rack (>= 1.3)
rackup (2.1.0)
rack (>= 3)
webrick (~> 1.8)
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
rake (13.2.1)
rdoc (6.7.0)
psych (>= 4.0.0)
redis (5.3.0)
redis-client (>= 0.22.0)
redis-client (0.22.2)
connection_pool
reline (0.5.10)
io-console (~> 0.5)
ruby-next-core (1.0.3)
securerandom (0.3.1)
stringio (3.1.1)
thor (1.3.2)
timeout (0.4.1)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
uri (0.13.1)
useragent (0.16.10)
webrick (1.8.1)
websocket (1.2.11)
websocket-client-simple (0.8.0)
event_emitter
websocket
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
wsdirector-cli (1.0.3)
colorize
wsdirector-core (= 1.0.3)
wsdirector-core (1.0.3)
concurrent-ruby (~> 1.0)
ruby-next-core (>= 0.15.0)
websocket-client-simple (~> 0.3)
zeitwerk (2.6.18)

PLATFORMS
aarch64-linux
arm-linux
arm64-darwin
x86-linux
x86_64-darwin
x86_64-linux

DEPENDENCIES
anycable-core!
anycable-rails!
debug
grpc
puma (~> 6.4)
rails!
redis (~> 5.0)
wsdirector-cli

BUNDLED WITH
2.5.18
Loading

0 comments on commit ef2be63

Please sign in to comment.