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
被调用时,听起来cable
是nil
。是这样吗?
【参考方案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 4:模型:类的未定义方法“relation_delegate_class”