aboutsummaryrefslogtreecommitdiffstats
path: root/actioncable/lib/rails/generators/channel/channel_generator.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2015-12-15 21:38:58 +0100
committerDavid Heinemeier Hansson <david@loudthinking.com>2015-12-15 21:39:22 +0100
commit40cc72548f529fbe3a52577dca3d0517f631f1b5 (patch)
tree2828aed91c7c04df439089ad309df6f8dc394ba1 /actioncable/lib/rails/generators/channel/channel_generator.rb
parent649b9d93219b5b38bb2fccba5124c4e013726d9e (diff)
downloadrails-40cc72548f529fbe3a52577dca3d0517f631f1b5.tar.gz
rails-40cc72548f529fbe3a52577dca3d0517f631f1b5.tar.bz2
rails-40cc72548f529fbe3a52577dca3d0517f631f1b5.zip
Basic channel generator
Diffstat (limited to 'actioncable/lib/rails/generators/channel/channel_generator.rb')
-rw-r--r--actioncable/lib/rails/generators/channel/channel_generator.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/actioncable/lib/rails/generators/channel/channel_generator.rb b/actioncable/lib/rails/generators/channel/channel_generator.rb
new file mode 100644
index 0000000000..8f1c812c27
--- /dev/null
+++ b/actioncable/lib/rails/generators/channel/channel_generator.rb
@@ -0,0 +1,27 @@
+module Rails
+ module Generators
+ class ChannelGenerator < NamedBase
+ source_root File.expand_path("../templates", __FILE__)
+
+ argument :actions, type: :array, default: [], banner: "method method"
+
+ check_class_collision suffix: "Channel"
+
+ def create_channel_file
+ template "channel.rb", File.join('app/channels', class_path, "#{file_name}_channel.rb")
+ template "assets/channel.coffee", File.join('app/assets/javascripts/cable/channels', class_path, "#{file_name}.coffee")
+
+ if self.behavior == :invoke
+ template "application_cable/connection.rb", 'app/channels/application_cable/connection.rb'
+ template "application_cable/channel.rb", 'app/channels/application_cable/channel.rb'
+ template "assets/consumer.coffee", 'app/assets/javascripts/cable/index.coffee'
+ end
+ end
+
+ protected
+ def file_name
+ @_file_name ||= super.gsub(/\_channel/i, '')
+ end
+ end
+ end
+end