Rails 5可操作的未定义方法'fetch'用于nil:NilClass

Posted

技术标签:

【中文标题】Rails 5可操作的未定义方法\'fetch\'用于nil:NilClass【英文标题】:Rails 5 actioncable undefined method `fetch' for nil:NilClassRails 5可操作的未定义方法'fetch'用于nil:NilClass 【发布时间】:2016-04-27 02:47:12 【问题描述】:

我正在使用带有actioncable 的Rails 5,并且在尝试发送任何抛出actioncable 的内容时收到this error 我该怎么办? 我正在尝试将项目推送到 Heroku。

NoMethodError in MessagesController#create

undefined method `fetch' for nil:NilClass
Extracted source (around line #37):

#35       # Also makes sure proper dependencies are required.
#36       def pubsub_adapter
*37         adapter = (cable.fetch('adapter')  'redis' )
#38         path_to_adapter = "action_cable/subscription_adapter/#adapter"
#39         begin
#40           require path_to_adapter

Extracted source (around line #50):

#48       # Adapter used for all streams/broadcasting.
#49       def pubsub
*50         @pubsub ||= config.pubsub_adapter.new(self)
#51       end
#52 
#53       # All the identifiers applied to the connection class associated with this server.

Extracted source (around line #42):

#40           def broadcast(message)
#41             server.logger.info "[ActionCable] Broadcasting to #broadcasting: #message"
*42             server.pubsub.broadcast broadcasting, ActiveSupport::JSON.encode(message)
#43           end
#44         end
#45     end


Rails.root: /media/adham/Data/code/rails5test

Application Trace
app/controllers/messages_controller.rb:6:in `create'
app/middleware/chat_action_cable.rb:10:in `call'

【问题讨论】:

cable.fetch 被调用时,听起来cablenil。是这样吗? 【参考方案1】:

这里有一个提交:enter link description here

从...读取和更改 ActionCable 的配置文件

config/redis/cable.yml

config/cable.yml

...解决了这个问题。此更新是为了让 ActionCable 后端成为不可知论者。

【讨论】:

有人能解释为什么会这样吗? Rails 5.0.0.beta2 也发生在我身上 他们将配置文件更改为对 ActionCable 后端更加模糊,而不是默认为 Redis。

以上是关于Rails 5可操作的未定义方法'fetch'用于nil:NilClass的主要内容,如果未能解决你的问题,请参考以下文章

将 Bootstrap 导入 Rails 时,nil:NilClass 的未定义方法“环境”

简单的未定义方法错误 - Rails

使用 AJAX 刷新 Rails 部分时的未定义方法

Rails 4:模型:类的未定义方法“relation_delegate_class”

Rails 3 - application.html.erb 中 nil:NilClass 的未定义方法“[]”

nil 的未定义方法“src”:NilClass Rails LinkThumbnailer