All Versions
31
Latest Version
Avg Release Cycle
75 days
Latest Release
242 days ago

Changelog History
Page 2

  • v1.0.0.rc1 Changes

    June 10, 2020
    • βž• Add Env#istate and EnvResponse#istate to store channel state. (@palkan)

    That would allow to mimic instance variables usage in Action Cable channels.

    • βž• Add CommandResponse#stopped_streams to support unsubscribing from particular broadcastings. (@palkan)

    Socket#unsubscribe is now implemented as well.

    • Add AnyCable.broadcast_adapter#broadcast_command method. (@palkan)

    It could be used to send commands to WS server (e.g., remote disconnect).

    • βž• Add :http broadcasting adapter. (@palkan)

    • RPC schema has changed. (@palkan)

    Using anycable-go v1.x is required.

    • πŸ’Ž Ruby 2.5+ is required. (@palkan)

    • βž• Added RPC proto version check. (@palkan)

    πŸ“‡ Server must sent protov metadata with the supported versions (comma-separated list). If there is no matching version an exception is raised.

    Current RPC proto version is v1.

    • βž• Added request support to channels. (@palkan)

    Now you can access request object in channels, too (e.g., to read headers/cookies/URL/etc).

    • πŸ”„ Change default server address from [::]:50051 to 127.0.0.1:50051. (@palkan)

    πŸ‘€ See #71.

    • πŸ›  Fix building Redis Sentinel config. (@palkan)

    πŸ‘€ See Changelog for versions <1.0.0.

  • v1.0.0.preview2

    April 09, 2020
  • v1.0.0.preview1

    February 19, 2020
  • v0.6.5 Changes

    April 01, 2020
    • 😌 Relax anyway_config dependency. ([@palkan][])
  • v0.6.4 Changes

    January 24, 2020
    • πŸ›  Fix Ruby 2.7 warnings. ([@palkan][])

    – Add REMOTE_ADDR socket env variable using a synthetic header passed from a websocket server. ([@sponomarev][])

    Recreating a request object in your custom connection factory using Rack::Request or πŸš… ActionDispatch::Request (already implemented in anycable-rails) gives you an access to request.ip with the properly set IP address.

    • Align socket env to be more compatibile with Rack Spec ([@sponomarev][])

    Provide as much env details as possible to be able to reconstruct the full request object in a custom connection factory.

  • v0.6.3 Changes

    March 26, 2019
    • 😌 Relax redis gem version requirement. ([@palkan][])

    πŸ‘‰ Use the same restriction as Action Cable does (>= 3).

  • v0.6.2 Changes

    March 15, 2019
    • βž• Add GRPC service method name and message content to exception notifications ([@sponomarev][])

    Anycable.capture_exception allows accessing GRPC service method name and message content πŸ‘» on which an exception was captured. It can be used for exceptions grouping in your tracker and providing additional data to investigate a root of a problem.

    Example:

    AnyCable.capture_exception do |ex, method, message|
      Honeybadger.notify(ex, component: "any_cable", action: method, params: message)
    end
    

    Usage of a handler proc with just a single argument is preserved for the sake of compatibility.

    • βž• Add deprecation warning to default host usage ([@sponomarev][])

    Exposing AnyCable publicly is considered to be harmful and planned to be changed in future versions.

    • πŸ‘ Allow running the server as a detachable daemon ([@sponomarev][])

    Server is fully managed by the binary itself.

  • v0.6.1 Changes

    January 05, 2019
    • πŸš… Fix #63 Load anyway_config after application boot to make sure that all frameworks dependent functionality is loaded. ([@palkan][])
  • v0.6.0 Changes

    November 15, 2018

    πŸ’Ž RubyConf 2018 special.

    tl;dr anycable CLI; redis gem is no longer a runtime dependency (but still required for Redis broadcast adapter); health checkers; middlewares support and more flexible configuration.

    πŸ“š πŸ“ Check out a new documentation website.

    πŸ”‹ Features

    CLI

    AnyCable now ships with a CLI–anycable.

    πŸ‘‰ Use it to run a gRPC server:

    # run anycable and load app from app.rbbundle exec anycable -r app.rb# orbundle exec anycable --require app.rb
    

    πŸ‘€ All configuration options are also supported as CLI options (see anycable -h for more information).

    The only required options is the application file to load (-r/--require).

    πŸš… You can omit it if you want to load an app form ./config/environment.rb (e.g. with Rails) or ./config/anycable.rb.

    AnyCable CLI also allows you to run a separate command (process) from within a RPC server:

    $ bundle exec anycable --server-command "anycable-go -p 3334"
    

    πŸ”§ Configuration

    • 0️⃣ Default server host is changed from localhost:50051 to 0.0.0.0:50051
    • πŸ”¦ Expose gRPC server parameters via rpc_* config params:

      AnyCable.configure do |config| config.rpc_pool_size = 120 config.rpc_max_waiting_requests = 10# etcend

    • 0️⃣ REDIS_URL env is used by default if present (and no ANYCABLE_REDIS_URL specified)

    • πŸ”§ Make HTTP health check url configurable

    • βž• Add ability to pass Redis Sentinel config as array of string.

    πŸ”§ Now it's possible to pass Sentinel configuration via env vars:

    ANYCABLE\_REDIS\_SENTINELS=127.0.0.1:26380,127.0.0.1:26381 bundle exec anycable
    

    Broadcast adapters

    0️⃣ AnyCable allows you to use custom broadcasting adapters (Redis is used by default):

    # Specify by name (tries to load `AnyCable::BroadcastAdapters::MyAdapter` from# "anycable/broadcast\_adapters/my\_adapter")AnyCable.broadcast\_adapter = :my\_adapter, { option: "value" }# or provide an instance (should respond\_to #broadcast)AnyCable.broadcast\_adapter = MyAdapter.new
    

    πŸ’₯ Breaking: to use Redis adapter you must ensure that it is present in your Gemfile; AnyCable gem doesn't have redis as a dependency anymore.

    Other

    • βž• Added middlewares support

    πŸ‘€ See docs.

    • βž• Added gRPC health checker.

    πŸ‘€ See docs.

    πŸ”„ Changes

    NOTE : the old API is still working but deprecated (you'll see a notice).

    πŸ‘‰ Use AnyCable instead of Anycable

    πŸ†• New API for registering error handlers:

    AnyCable.capture\_exception do |ex| Honeybadger.notify(ex)end
    
    • 🚚 AnyCable::Server.start is deprecated and will be removed in the next version
  • v0.6.0.rc1

    November 12, 2018