aboutsummaryrefslogtreecommitdiffstats
path: root/actioncable
diff options
context:
space:
mode:
Diffstat (limited to 'actioncable')
-rw-r--r--actioncable/CHANGELOG.md5
-rw-r--r--actioncable/README.md28
-rw-r--r--actioncable/lib/rails/generators/channel/channel_generator.rb7
-rw-r--r--actioncable/test/channel/base_test.rb28
4 files changed, 39 insertions, 29 deletions
diff --git a/actioncable/CHANGELOG.md b/actioncable/CHANGELOG.md
index 64aea88588..22126d82b7 100644
--- a/actioncable/CHANGELOG.md
+++ b/actioncable/CHANGELOG.md
@@ -1,8 +1,5 @@
## Rails 5.0.0.beta1 (December 18, 2015) ##
-* No changes.
-
-
* Added to Rails!
- *DHH* \ No newline at end of file
+ *DHH*
diff --git a/actioncable/README.md b/actioncable/README.md
index 823964343a..42fbc755ae 100644
--- a/actioncable/README.md
+++ b/actioncable/README.md
@@ -1,4 +1,4 @@
-# Action Cable –- Integrated WebSockets for Rails
+# Action Cable – Integrated WebSockets for Rails
Action Cable seamlessly integrates WebSockets with the rest of your Rails application.
It allows for real-time features to be written in Ruby in the same style
@@ -16,7 +16,7 @@ WebSockets open to your application if they use multiple browser tabs or devices
The client of a WebSocket connection is called the consumer.
Each consumer can in turn subscribe to multiple cable channels. Each channel encapsulates
-a logical unit of work, similar to what a controller does in a regular MVC setup. For example,
+a logical unit of work, similar to what a controller does in a regular MVC setup. For example,
you could have a `ChatChannel` and a `AppearancesChannel`, and a consumer could be subscribed to either
or to both of these channels. At the very least, a consumer should be subscribed to one channel.
@@ -91,7 +91,7 @@ The client-side needs to setup a consumer instance of this connection. That's do
#= require action_cable
@App = {}
-App.cable = Cable.createConsumer("ws://cable.example.com")
+App.cable = ActionCable.createConsumer("ws://cable.example.com")
```
The ws://cable.example.com address must point to your set of Action Cable servers, and it
@@ -364,7 +364,7 @@ Then add the following line to your layout before your JavaScript tag:
And finally, create your consumer like so:
```coffeescript
-App.cable = Cable.createConsumer()
+App.cable = ActionCable.createConsumer()
```
For a full list of all configuration options, see the `ActionCable::Server::Configuration` class.
@@ -395,20 +395,20 @@ bundle exec puma -p 28080 cable/config.ru
```
The above will start a cable server on port 28080. Remember to point your client-side setup against that using something like:
-`App.cable = Cable.createConsumer("ws://basecamp.dev:28080")`.
+`App.cable = ActionCable.createConsumer("ws://basecamp.dev:28080")`.
### In app
-If you are using a threaded server like Puma or Thin, the current implementation of ActionCable can run side-along with your Rails application. For example, to listen for WebSocket requests on `/websocket`, match requests on that path:
+If you are using a threaded server like Puma or Thin, the current implementation of ActionCable can run side-along with your Rails application. For example, to listen for WebSocket requests on `/cable`, match requests on that path:
```ruby
# config/routes.rb
Example::Application.routes.draw do
- match "/websocket", :to => ActionCable.server, via: [:get, :post]
+ match "/cable", :to => ActionCable.server, via: [:get, :post]
end
```
-You can use `App.cable = Cable.createConsumer("/websocket")` to connect to the cable server.
+You can use `App.cable = ActionCable.createConsumer()` to connect to the cable server if `action_cable_meta_tag` is included in the layout. A custom path is specified as first argument to `createConsumer` (e.g. `App.cable = ActionCable.createConsumer("/websocket")`).
For every instance of your server you create and for every worker your server spawns, you will also have a new instance of ActionCable, but the use of Redis keeps messages synced across connections.
@@ -452,6 +452,14 @@ Action Cable is released under the MIT license:
## Support
-Bug reports can be filed for the alpha development project here:
+API documentation is at:
-* https://github.com/rails/actioncable/issues
+* http://api.rubyonrails.org
+
+Bug reports can be filed for the Ruby on Rails project here:
+
+* https://github.com/rails/rails/issues
+
+Feature requests should be discussed on the rails-core mailing list here:
+
+* https://groups.google.com/forum/?fromgroups#!forum/rubyonrails-core
diff --git a/actioncable/lib/rails/generators/channel/channel_generator.rb b/actioncable/lib/rails/generators/channel/channel_generator.rb
index 2f37d8055b..c5d398810a 100644
--- a/actioncable/lib/rails/generators/channel/channel_generator.rb
+++ b/actioncable/lib/rails/generators/channel/channel_generator.rb
@@ -5,11 +5,16 @@ module Rails
argument :actions, type: :array, default: [], banner: "method method"
+ class_option :assets, type: :boolean
+
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/channels', class_path, "#{file_name}.coffee")
+
+ if options[:assets]
+ template "assets/channel.coffee", File.join('app/assets/javascripts/channels', class_path, "#{file_name}.coffee")
+ end
end
protected
diff --git a/actioncable/test/channel/base_test.rb b/actioncable/test/channel/base_test.rb
index b8b3c6a139..d41bf3064b 100644
--- a/actioncable/test/channel/base_test.rb
+++ b/actioncable/test/channel/base_test.rb
@@ -166,19 +166,19 @@ class ActionCable::Channel::BaseTest < ActiveSupport::TestCase
end
end
- def assert_logged(message)
- old_logger = @connection.logger
- log = StringIO.new
- @connection.instance_variable_set(:@logger, Logger.new(log))
-
- begin
- yield
-
- log.rewind
- assert_match message, log.read
- ensure
- @connection.instance_variable_set(:@logger, old_logger)
+ private
+ def assert_logged(message)
+ old_logger = @connection.logger
+ log = StringIO.new
+ @connection.instance_variable_set(:@logger, Logger.new(log))
+
+ begin
+ yield
+
+ log.rewind
+ assert_match message, log.read
+ ensure
+ @connection.instance_variable_set(:@logger, old_logger)
+ end
end
- end
-
end