class RuboCop::Cop::AnyCable::StreamFrom
Checks for stream_from calls with custom callbacks or coders.
@example
# bad class MyChannel < ApplicationCable::Channel def follow stream_for(room) {} end end class MyChannel < ApplicationCable::Channel def follow stream_from("all", -> {}) end end class MyChannel < ApplicationCable::Channel def follow stream_from("all", coder: SomeCoder) end end # good class MyChannel < ApplicationCable::Channel def follow stream_from "all" end end
Public Instance Methods
on_block(node)
click to toggle source
# File lib/anycable/rails/compatibility/rubocop/cops/anycable/stream_from.rb, line 56 def on_block(node) add_callback_offense(node) if stream_from_with_block?(node) end
on_send(node)
click to toggle source
# File lib/anycable/rails/compatibility/rubocop/cops/anycable/stream_from.rb, line 60 def on_send(node) if stream_from_with_callback?(node) add_callback_offense(node) return end args = args_of_stream_from(node) find_coders(args) { |coder| add_custom_coder_offense(coder) } end
Private Instance Methods
add_callback_offense(node)
click to toggle source
# File lib/anycable/rails/compatibility/rubocop/cops/anycable/stream_from.rb, line 82 def add_callback_offense(node) add_offense( node, location: :expression, message: "Custom stream callbacks are not supported in AnyCable" ) end
add_custom_coder_offense(node)
click to toggle source
# File lib/anycable/rails/compatibility/rubocop/cops/anycable/stream_from.rb, line 90 def add_custom_coder_offense(node) add_offense( node, location: :expression, message: "Custom coders are not supported in AnyCable" ) end
find_coders(args) { |pair| ... }
click to toggle source
# File lib/anycable/rails/compatibility/rubocop/cops/anycable/stream_from.rb, line 72 def find_coders(args) return if args.nil? args.select(&:hash_type?).each do |arg| arg.each_child_node do |pair| yield(pair) if coder_symbol?(pair) && !active_support_json?(pair) end end end