Action Cableの理解: AnyCableの試用
外観
ローカルPCのdevelopent 環境で、AnyCableを動かしてみました。
※production環境で動かしてインフラコストの削減やリアルタイム性の向上を図るというのが本来の使い方になります。
環境
macOS 10.15.4
Ruby 2.7.1
Rails 6.0.3
Yarn 1.22.4
Node 13.12.0
anycable-rails 0.6.5
redis 6.0.3
anycable-go 0.6.5
リポジトリ
https://github.com/usutani/try_ac_examples/tree/anycable-rails-local-dev
AnyCableとは
Architecture - AnyCable Docs
Getting Started with Rails - AnyCable Docs
手順
redisとanycable-goのインストール
brew install redis
brew install anycable-go
action_cable_meta_tagの追加
app/views/layouts/application.html.erb
<head>
<title>tryacexamples</title>
<%= action_cable_meta_tag %>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
Gemfile
下記のgemをGemfileに追加します。
gem 'anycable-rails', '~> 0.6.5'
gem 'redis', '~> 4.1'
bundle install
設定ファイル
ローカルPCのdevelopent 環境で動作するように設定ファイルを編集します。
config/cable.yml
development:
adapter: any_cable
config/environments/development.rb
# AnyCable
config.action_cable.url = "ws://localhost:3334/cable"
end
config/anycable.yml
development:
redis_url: redis://localhost:6379/1
起動
下記のサーバをそれぞれ別のターミナルで起動します。
redis-server /usr/local/etc/redis.conf
bundle exec anycable
anycable-go --host=localhost --port=3334
bundle exec rails server
補足
bundle exec rails serverでサーバを起動すること
ActionController--RoutingError (No route matches [GET] "-cable") · Issue 41
> The issue does not happen again after disabling spring
action_cable_meta_tagの取得
気になったのでコードを見ました。
https://github.com/rails/rails/blob/v6.0.3.1/actioncable/app/javascript/action_cable/index.js#L22-L31
Overmindでの起動
毎回手動で起動するのは面倒ですので、ProcfileとOvermindを使います。
覚書: Overmindに手順をもう少し詳しく書きました。
touch Procfile
redis: redis-server /usr/local/etc/redis.conf
grpc: bundle exec anycable
ws: anycable-go --host=localhost --port=3334
web: bundle exec rails server --port=3000
overmind start
以上です。
この記事が気に入ったらサポートをしてみませんか?