2016-03-09 5 views
8

Rails 5ベータ3をアクションケーブルで使用していますが、統合はうまく機能しますが、capybaraを使って機能テストを実行しようとすると、Capybaraがaction_cableと連携していません

私はPortergeistを使用しており、capybaraのサーバーとしてPumaを設定しています。また、es5-shimとes6-shimを使用しています。

他の誰かがこれを体験しましたか回避策を知っていますか?

ありがとうございます!

編集

イムは、あなたがする必要が

Capybara.register_server :puma do |app, port, host| 
    require 'puma' 
    Puma::Server.new(app).tap do |s| 
    s.add_tcp_listener host, port 
    end.run.join 
end 

私はカピバラとテストactioncableについてはconfig.action_cable.allowed_request_origins

+2

には、カピバラサーバも –

+2

としてピューマのコンフィギュレーションを表示してください - 何config.action_cable.allowed_request_originsをテスト設定に設定しました –

+0

@TomWalpole私はちょうど編集しました私の質問に答えました。私はあなたのカピバラPRを使ってプーマを構成していると思う。また、config.action_cable.allowed_request_originsが設定されていません。 –

答えて

11

に何も設定していないカピバラにプーマを設定するには、このカピバラの枝を使用してマルチスレッドWebサーバーを使用しています。名前付きドライバを登録サポートカピバラの現在のプルリクエストを使用しているので、あなたは

Capybara.server {|app, port| 
    require 'puma' 
    Puma::Server.new(app).tap do |s| 
    s.add_tcp_listener Capybara.server_host, port 
    end.run.join 
} 
を行うことができますという名前のサーバーとカピバラの枝を使用していない人にとって

Capybara.server = :puma 

を使用するようにという名前のサーバーを指定する必要があります

+0

もう一度ありがとう。あなたのPRが統合されることを願っています –

+1

Capybaraの主な開発者として - 私はそれが合併するときを決定する人です:)私はそれをマージする前にそれのためのドキュメントを書く必要があります –

+1

@SergioMárquezどうか偶然、あなたはそれを少し編集するので、私はその投票を取り除くことができます –

6

Capybara v2.7.0よりブロックをCapybara::serverにすることは推奨されていません(commit)。

Deprecation messageDEPRECATED: Passing a block to Capybara::server is deprecated, please use Capybara::register_server instead

(たとえばpuma用)新しいWebサーバを登録するために使用する:

Capybara.register_server :puma do |app, port, host| 
    require 'puma' 
    Puma::Server.new(app).tap do |s| 
     s.add_tcp_listener host, port 
    end.run.join 
    end 

リンクdocumentation

+0

では、pumaはすでに登録されているウェブサーバーです。 Capybara.server =:pumaは正常に動作します。 – efoo

関連する問題