为Action Cable pubsub适配器指定'redis',但未加载gem

时间:2017-11-04 18:14:29

标签: actioncable ruby-on-rails-5

我正在尝试将我的应用程序推向使用动作电缆的生产。每次我推它都会给我一个错误说:

ERROR -- Specified 'redis' for Action Cable pubsub adapter, but the gem is not loaded. Add `gem 'redis'` to your Gemfile (and ensure its version is at the minimum required by Action Cable).: nil

我的Gem文件就像:

group :development do
 # Access an IRB console on exception pages or by using <%= console %> in views
 gem 'web-console', '~> 3.0'
 gem 'listen', '~> 3.0.5'
 gem 'spring'
 gem 'spring-watcher-listen', '~> 2.0.0'
 gem 'em-hiredis'
 gem 'redis', '~> 3.0'
end

和我的Cable.yml就像:

production:
  adapter: redis
  url: redis://localhost:6379/1

development:
  adapter: async

test:
  adapter: async

我应该如何解决这个问题,并让我的行动电缆继续发展。

Gemlock整体: 这是gem文件,redis指定为redis (~> 3.0)

GEM
    remote: https://rubygems.org/
    specs:
      actioncable (5.0.6)
        actionpack (= 5.0.6)
        nio4r (>= 1.2, < 3.0)
        websocket-driver (~> 0.6.1)
      actionmailer (5.0.6)
        actionpack (= 5.0.6)
        actionview (= 5.0.6)
        activejob (= 5.0.6)
        mail (~> 2.5, >= 2.5.4)
        rails-dom-testing (~> 2.0)
      actionpack (5.0.6)
        actionview (= 5.0.6)
        activesupport (= 5.0.6)
        rack (~> 2.0)
        rack-test (~> 0.6.3)
        rails-dom-testing (~> 2.0)
        rails-html-sanitizer (~> 1.0, >= 1.0.2)
      actionview (5.0.6)
        activesupport (= 5.0.6)
        builder (~> 3.1)
        erubis (~> 2.7.0)
        rails-dom-testing (~> 2.0)
        rails-html-sanitizer (~> 1.0, >= 1.0.3)
      activejob (5.0.6)
        activesupport (= 5.0.6)
        globalid (>= 0.3.6)
      activemodel (5.0.6)
        activesupport (= 5.0.6)
      activerecord (5.0.6)
        activemodel (= 5.0.6)
        activesupport (= 5.0.6)
        arel (~> 7.0)
      activesupport (5.0.6)
        concurrent-ruby (~> 1.0, >= 1.0.2)
        i18n (~> 0.7)
        minitest (~> 5.1)
        tzinfo (~> 1.1)
      arel (7.1.4)
      bcrypt (3.1.11)
      bindex (0.5.0)
      builder (3.2.3)
      byebug (9.1.0)
      coderay (1.1.2)
      coffee-rails (4.1.1)
        coffee-script (>= 2.2.0)
        railties (>= 4.0.0, < 5.1.x)
      coffee-script (2.4.1)
        coffee-script-source
        execjs
      coffee-script-source (1.12.2)
      concurrent-ruby (1.0.5)
      crass (1.0.2)
      devise (4.3.0)
        bcrypt (~> 3.0)
        orm_adapter (~> 0.1)
        railties (>= 4.1.0, < 5.2)
        responders
        warden (~> 1.2.3)
      em-hiredis (0.3.1)
        eventmachine (~> 1.0)
        hiredis (~> 0.6.0)
      erubis (2.7.0)
      eventmachine (1.2.5)
      execjs (2.7.0)
      ffi (1.9.18)
      globalid (0.4.1)
        activesupport (>= 4.2.0)
      hiredis (0.6.1)
      i18n (0.9.1)
        concurrent-ruby (~> 1.0)
      jbuilder (2.7.0)
        activesupport (>= 4.2.0)
        multi_json (>= 1.2)
      jquery-rails (4.3.1)
        rails-dom-testing (>= 1, < 3)
        railties (>= 4.2.0)
        thor (>= 0.14, < 2.0)
      listen (3.0.8)
        rb-fsevent (~> 0.9, >= 0.9.4)
        rb-inotify (~> 0.9, >= 0.9.7)
      loofah (2.1.1)
        crass (~> 1.0.2)
        nokogiri (>= 1.5.9)
      mail (2.7.0)
        mini_mime (>= 0.1.1)
      method_source (0.9.0)
      mini_mime (0.1.4)
      mini_portile2 (2.3.0)
      minitest (5.10.3)
      multi_json (1.12.2)
      nio4r (2.1.0)
      nokogiri (1.8.1)
        mini_portile2 (~> 2.3.0)
      orm_adapter (0.5.0)
      pg (0.21.0)
      pry (0.11.2)
        coderay (~> 1.1.0)
        method_source (~> 0.9.0)
      pry-byebug (3.5.0)
        byebug (~> 9.1)
        pry (~> 0.10)
      puma (3.10.0)
      rack (2.0.3)
      rack-test (0.6.3)
        rack (>= 1.0)
      rails (5.0.6)
        actioncable (= 5.0.6)
        actionmailer (= 5.0.6)
        actionpack (= 5.0.6)
        actionview (= 5.0.6)
        activejob (= 5.0.6)
        activemodel (= 5.0.6)
        activerecord (= 5.0.6)
        activesupport (= 5.0.6)
        bundler (>= 1.3.0)
        railties (= 5.0.6)
        sprockets-rails (>= 2.0.0)
      rails-dom-testing (2.0.3)
        activesupport (>= 4.2.0)
        nokogiri (>= 1.6)
      rails-html-sanitizer (1.0.3)
        loofah (~> 2.0)
      railties (5.0.6)
        actionpack (= 5.0.6)
        activesupport (= 5.0.6)
        method_source
        rake (>= 0.8.7)
        thor (>= 0.18.1, < 2.0)
      rake (12.2.1)
      rb-fsevent (0.10.2)
      rb-inotify (0.9.10)
        ffi (>= 0.5.0, < 2)
      redis (3.3.5)
      responders (2.4.0)
        actionpack (>= 4.2.0, < 5.3)
        railties (>= 4.2.0, < 5.3)
      sass (3.5.3)
        sass-listen (~> 4.0.0)
      sass-listen (4.0.0)
        rb-fsevent (~> 0.9, >= 0.9.4)
        rb-inotify (~> 0.9, >= 0.9.7)
      sass-rails (5.0.6)
        railties (>= 4.0.0, < 6)
        sass (~> 3.1)
        sprockets (>= 2.8, < 4.0)
        sprockets-rails (>= 2.0, < 4.0)
        tilt (>= 1.1, < 3)
      semantic-ui-sass (2.2.12.0)
        sass (>= 3.2)
      slim (3.0.8)
        temple (>= 0.7.6, < 0.9)
        tilt (>= 1.3.3, < 2.1)
      slim-rails (3.1.3)
        actionpack (>= 3.1)
        railties (>= 3.1)
        slim (~> 3.0)
      spring (2.0.2)
        activesupport (>= 4.2)
      spring-watcher-listen (2.0.1)
        listen (>= 2.7, < 4.0)
        spring (>= 1.2, < 3.0)
      sprockets (3.7.1)
        concurrent-ruby (~> 1.0)
        rack (> 1, < 3)
      sprockets-rails (3.2.1)
        actionpack (>= 4.0)
        activesupport (>= 4.0)
        sprockets (>= 3.0.0)
      temple (0.8.0)
      thor (0.20.0)
      thread_safe (0.3.6)
      tilt (2.0.8)
      turbolinks (5.0.1)
        turbolinks-source (~> 5)
      turbolinks-source (5.0.3)
      tzinfo (1.2.4)
        thread_safe (~> 0.1)
      uglifier (3.2.0)
        execjs (>= 0.3.0, < 3)
      warden (1.2.7)
        rack (>= 1.0)
      web-console (3.5.1)
        actionview (>= 5.0)
        activemodel (>= 5.0)
        bindex (>= 0.4.0)
        railties (>= 5.0)
      websocket-driver (0.6.5)
        websocket-extensions (>= 0.1.0)
      websocket-extensions (0.1.2)

  PLATFORMS
    ruby

  DEPENDENCIES
    byebug
    coffee-rails (~> 4.1.0)
    devise
    em-hiredis
    jbuilder (~> 2.0)
    jquery-rails
    listen (~> 3.0.5)
    pg
    pry-byebug
    puma
    rails (>= 5.0.0.beta3, < 5.1)
    redis (~> 3.0)
    sass-rails (~> 5.0)
    semantic-ui-sass
    slim-rails
    spring
    spring-watcher-listen (~> 2.0.0)
    turbolinks (~> 5.x)
    tzinfo-data
    uglifier (>= 1.3.0)
    web-console (~> 3.0)

  BUNDLED WITH
     1.16.0

3 个答案:

答案 0 :(得分:1)

我有同样的问题。 我通过(bundle update)更新我的宝石来解决这个问题。不确定哪个宝石完全解决了它。

现在我有:ruby 2.5.0rails 5.1.5redis 4.0.1actioncable 5.1.5

答案 1 :(得分:0)

我看到两个不同的问题:

  1. 在gemfile中,您只为开发环境指定redis gem。确保采用行gem 'redis', '~> 3.0'并将其放在group :development块之外。这样它就会被包含在生产宝石中。

  2. 您的redis网址指向localhost进行制作。这不起作用,您需要将其指向远程可用的redis网址。如果您使用的是Heroku,则可以使用redis add-on

答案 2 :(得分:0)

我对这个问题的解决方案是在Gemfile中

gem 'redis', '~> 4.0'

并遵循此部署指南至heroku:

https://blog.heroku.com/real_time_rails_implementing_websockets_in_rails_5_with_action_cable#deploying-our-application-to-heroku