class Rails::Generators::ChannelGenerator
Public Instance Methods
Source
# File lib/rails/generators/channel/channel_generator.rb, line 16 def create_channel_files create_shared_channel_files create_channel_file if using_javascript? if first_setup_required? create_shared_channel_javascript_files import_channels_in_javascript_entrypoint if using_importmap? pin_javascript_dependencies elsif using_node? install_javascript_dependencies end end create_channel_javascript_file import_channel_in_javascript_entrypoint end end
Private Instance Methods
Source
# File lib/rails/generators/channel/channel_generator.rb, line 47 def create_channel_file template "channel.rb", File.join("app/channels", class_path, "#{file_name}_channel.rb") end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 57 def create_channel_javascript_file channel_js_path = File.join("app/javascript/channels", class_path, "#{file_name}_channel") js_template "javascript/channel", channel_js_path gsub_file "#{channel_js_path}.js", /\.\/consumer/, "channels/consumer" unless using_node? end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 86 def file_name @_file_name ||= super.sub(/_channel\z/i, "") end
Calls superclass method
Source
# File lib/rails/generators/channel/channel_generator.rb, line 90 def first_setup_required? !root.join("app/javascript/channels/index.js").exist? end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 68 def import_channel_in_javascript_entrypoint append_to_file "app/javascript/channels/index.js", using_node? ? %(import "./#{file_name}_channel"\n) : %(import "channels/#{file_name}_channel"\n) end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 63 def import_channels_in_javascript_entrypoint append_to_file "app/javascript/application.js", using_node? ? %(import "./channels"\n) : %(import "channels"\n) end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 73 def install_javascript_dependencies say "Installing JavaScript dependencies", :green run "yarn add @rails/actioncable" end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 78 def pin_javascript_dependencies append_to_file "config/importmap.rb", <<-RUBY pin "@rails/actioncable", to: "actioncable.esm.js" pin_all_from "app/javascript/channels", under: "channels" RUBY end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 106 def root @root ||= Pathname(destination_root) end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 102 def using_importmap? @using_importmap ||= root.join("config/importmap.rb").exist? end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 94 def using_javascript? @using_javascript ||= options[:assets] && root.join("app/javascript").exist? end
Source
# File lib/rails/generators/channel/channel_generator.rb, line 98 def using_node? @using_node ||= root.join("package.json").exist? end