Rails5のチャットサンプルをPostgreSQLで動かしてみました
既にRails5で作成されたチャットのサンプルがWebサイトで紹介されていますが、遅ればせながらRadisの代わりに PostgreSQLを利用できるらしいので試してました。
レスポンスの比較は行っていないので、実際に使えるのかどうかわかりませんが、PostgreSQLで代替できるのか確認してみました。
今回のサンプルは弊社のGitHubのサイトで公開しています。
https://github.com/technobrain/actioncable_chat_with_postgresql
PostgreSQL用に変更した点と、そのほか若干躓いた点を紹介いたします。
PostgreSQL用に変更した箇所
config/cable.ymlの変更(開発環境)
development:
# adapter: async
adapter: postgresql
url: postgres://localhost/just_chatting_development
アプリケーション名をjust_chattingで作成しているため、開発用のデータベース名はjust_chatting_developmentとなっています。
ActionCable用のデータベースもRailsのアプリケーションのデータベースで動作するようです。
※追記:2016-04-23 cable.ymlはdevelopment:にadapter:を指定してれば、url:は指定しなくても動作するようです。
追加情報があれば更新したいと思います。
Request origin not allowed エラー対策
WebSocketの通信の際に許可する送信元のIPアドレス(ドメイン名)を指定する必要があるようです。
プロダクション環境(config/environments/production.rb)には指定が記載されているのですが、開発環境には記載がなく・・・
https://github.com/rails/rails/tree/master/actioncable#allowed-request-origins
を参考に、config/environments/development.rbに下記の内容を追加しました。
config.action_cable.disable_request_forgery_protection = true
今回確認した環境
- Ruby 2.3.0
- Rails 5.0.0.beta3
- OS CentOS 7
- Database PostgreSQL 9.2