Commit Graph

427 Commits

Author SHA1 Message Date
Hartley McGuire
6640b85b69
Fix md label-lists rendering incorrectly
When converting docs from RDoc to Markdown, some label-lists ended up
not rendering properly. This appears to be due to RDoc's Markdown
parser not recognizing label-list labels if the label has additional
markup around it (in this case, bold markers `**`).

Additionally, the markdown label-list was missing newlines between list
items which also caused the label-list to not render correctly.

This commit fixes both of these issues for cases where the RDoc
originally used <b> tags in a label-list label. Since label-list labels
will already be bolded, there is no reason to also use `**` on the
labels.
2024-03-06 18:11:14 -05:00
Sean Doyle
cfab11c959 Action Cable assert_broadcasts API docs [ci skip]
Follow-up to [#48798][]
Reverts [#47837][]

The `capture_broadcasts` helper was introduced in [#48798][] to remove
the return value from the `assert_broadcasts` call. The behavior was
changed, but the corresponding documentation for the `assert_broadcasts`
method did not revert the changes added in [#47837][].

This change should probably also get backported to `7-1-0-stable`.

[#47837]: https://github.com/rails/rails/pull/47837
[#48798]: https://github.com/rails/rails/pull/48798

Co-authored-by: Matheus Richard <matheusrichardt@gmail.com>
2024-02-19 10:39:43 -05:00
Jun Jiang
d5786b2e9d ActionCable: Use ... to passthrough args 2024-02-17 05:28:42 +08:00
Jun Jiang
08cb349a4b ActionCable: avoid potential nil error 2024-02-17 05:28:42 +08:00
Jun Jiang
0df0947b70 ActionCable: Allow pass code and reason when closing a WebSocket connection 2024-02-17 05:28:42 +08:00
Rafael Mendonça França
6fdd31d7db
Transform actioncable documentation to Markdown 2024-02-10 00:11:26 +00:00
Jean Boussier
cc63348160 Replace some low value dynamic delegator by handcrafted ones
Dynamic delegation make sense when there is a long list of methods
etc. But for very simple cases, writing one or two methods by hand
is just clearer and more efficient.
2024-01-25 11:51:00 +01:00
Jean Boussier
bffe05f246 Module#delegate stop accepting the private as: parameter
The feature remains usable internally, but via `ActiveSupport::Delegation`,
this way we don't allow third party use.
2024-01-25 11:51:00 +01:00
Petrik
8565f45100 Use relative includes of README's in documentation [ci-skip]
The Rails documentation uses the `:include:` directive to inline the
README of the framework into the main documentation page. As the
README's aren't in the root directory from where SDoc is run we need to
add the framework path to the include:

    # :include: activesupport/README.md

This results in a warning when installing the gems as generating the rdoc for the gem is run from the gem/framework root:

    Couldn't find file to include 'activesupport/README.rdoc' from lib/active_support.rb

The `:include:` RDoc directive supports includes relative to the current
file as well:

    # :include: ../README.md

This makes sure it works for the Rails API docs and the separate gems.

Co-authored-by: Jonathan Hefner <jonathan@hefner.pro>
2024-01-18 10:39:15 +01:00
Junichi Sato
523f86964f
Rename #assert_not_has_stream #assert_has_no_stream
This is a follow-up to https://github.com/rails/rails/pull/50585.

I propose to provide smoother reading experiences with the two methods
introduced in there, `#assert_not_has_stream` and `#assert_not_has_stream_for`,
by renaming them `#assert_has_no_stream` and `#assert_has_no_stream_for`, respectively.
2024-01-05 11:29:21 +09:00
Sebi
d9e2b159f9 Add assertions for stopped ActionCable streams
This adds two new assertion methods for ActionCable test cases:
`assert_not_has_stream` and `assert_not_has_stream_for`. These methods
can be used to assert that a stream has been stopped, e.g. via
`stop_stream` or `stop_stream_for`.
2024-01-04 19:41:35 +00:00
Jean Boussier
be258503ac Module#delegate takes a new private as parameter
This is a continuation of https://github.com/rails/rails/pull/46875

The behavior of looking up the class method when `to: :class` is passed
is a bit error prone because it silently degrades.

By passing the expected owner of the delegated method, we can be more
strict, and also generate a delegator in a module rather than having
to do it at inclusion time.

I made this argument private API because we want it in Rails, but
I'm worried it might be a bit too sharp for public API. I can
be convinced otherwise though.
2023-12-08 15:09:59 +01:00
Jonathan Hefner
3534c40c33 Move example to API docs [ci-skip] 2023-10-07 11:55:34 -05:00
Jonathan Hefner
eac107cfa9 Link to ActionCable::Connection callback methods [ci-skip] 2023-10-07 11:52:34 -05:00
Jonathan Hefner
53a75d4082 Move after_subscribe note to after_subscribe doc [ci-skip] 2023-10-07 11:52:33 -05:00
Jonathan Hefner
b14b9ce6b9 Link to ActionCable::Channel callback methods [ci-skip] 2023-10-07 11:52:33 -05:00
Rafael Mendonça França
fb6c6007d0
Development of Rails 7.2 starts now
🎉
2023-09-27 03:59:11 +00:00
Rafael Mendonça França
e5386cb402
Preparing for 7.1.0.rc1 release 2023-09-27 03:08:31 +00:00
Rafael Mendonça França
699dfdb426
Preparing for 7.1.0.beta1 release 2023-09-13 00:36:01 +00:00
Jason Meller
274bc97d63
Add Bun support (#49241)
* Add Bun support to `rails new -j` generator

* Add additional generation consideration for Bun

* Use development gems to test the whole workflow

* Remove custom gems from local testing

* Revert lock

* Revert errant custom gem declaration

* Fix linting errors

* Fix remnants of bad merge

* Always use latest bun

* Update actioncable/lib/rails/generators/channel/channel_generator.rb

Co-authored-by: Cadu Ribeiro <mail@cadu.dev>

* Update guides/source/working_with_javascript_in_rails.md

Co-authored-by: Rafael Mendonça França <rafael@franca.dev>

* Only use the latest bun if nothing is specified

* Hardcode known good version

---------

Co-authored-by: Cadu Ribeiro <mail@cadu.dev>
Co-authored-by: Rafael Mendonça França <rafael@franca.dev>
2023-09-12 16:55:27 -04:00
Hartley McGuire
c3c844ef3a
Add Rack::Lint to ActionCable::Server health tests
This adds additional coverage to ActionCable::Server to validate that
its output follow the Rack SPEC.

In addition to using Rack::CONTENT_TYPE for the Content-Type header,
there was another change required: the Content-Type header cannot be
specified when the Response status is 204, so the default health check
status was updated to 200
2023-08-16 22:49:32 -04:00
Alex Ghiculescu
455e922b49
Introduce capture_emails and capture_broadcasts (#48798) 2023-07-25 06:42:54 +02:00
Marcin Henryk Bartkowiak
bcf9e3de0c Do not inspect transmit data if logger is not debug-enabled 2023-07-20 18:52:26 +02:00
Marcin Henryk Bartkowiak
99d7dc88ae Add block support to TaggedLoggerProxy 2023-07-20 18:26:10 +02:00
julianfssen
9c5175e067 Delegate StubConnection#pubsub and StubConnection#config to ActionCable.server
Previously, `ActionCable::Channel::ConnectionStub` would
throw a `NoMethodError` when the channel under test calls
`stop_stream_for`, as shown in the example below:

```ruby
class ChatChannel < ActionCable::Channel::Base
  def subscribed
    stream_from "test"
  end

  def unsubscribed
    stop_stream_from "test"
  end
end

class ChatChannelTest < ActionCable::Channel::TestCase
  test "unsubscribe" do
    stub_connection

    subscribe

    # `unsubscribe` raises `NoMethodError` as `pubsub` does not
      exist on `ActionCable::Channel::ConnectionStub`
    unsubscribe

    assert_no_streams
  end
end
```

Calling `unsubscribe` causes an exception as `stop_stream_from` calls
`pubsub` when unsubscribing, which is not implemented in
`ActionCable::Channel::ConnectionStub`.

This commit fixes this issue by assigning the `ActionCable.server`
singleton to a `@server` instance variable in
`ActionCable::Channel::ConnectionStub`. This lets us delegate
the `config` and `pubsub` method calls to it.
2023-07-15 13:04:46 +08:00
zzak
dd89f600f7
🔗 Remove RDoc auto-link from Rails module everywhere 2023-06-23 10:49:30 +09:00
Rafael Mendonça França
74b8a3798b
Merge pull request #48222 from JoeDupuis/health-check-standalone-cable
Add health check on standalone Action Cable
2023-05-30 16:35:12 -04:00
Dmitriy Ivliev
f1ace63973 Fix ActionCable Redis configuration with sentinels
This commit resolves an integration bug between ActionCable and Redis >= 5.0 when using sentinels configuration.
The issue arises from the fact that the sentinels configuration is a nested array of hashes, while the Redis client expects keys to be symbols.
This fix modifies the preparation of the Redis configuration to ensure that all keys are represented as symbols.
2023-05-28 11:57:23 +00:00
Joé Dupuis
32e7028aa1 Add health check on standalone Action Cable
Action Cable can be mounted standalone, but it loses the health check
route provided by the railties.
This change adds configuration for a health check rack app and a
health check route to "mount" the rack app.

Fixes #48185
2023-05-27 16:59:34 -07:00
zzak
38bef29064
Replace all occurrences of '<tt>(\w+::\w+::\w+)</tt>' with '+$1+'
E.g.:

* <tt>Rails::Command::NotesCommand</tt> -> +Rails::Command::NotesCommand+

Co-authored-by: Hartley McGuire <skipkayhil@gmail.com>
2023-05-25 06:56:17 +09:00
zzak
e3c73fd183
Replace all occurrences of '<tt>(\w+::\w+)</tt>' with '+$1+'
E.g.:

* <tt>ActiveRecord::Base</tt> -> +ActiveRecord::Base+

Co-authored-by: Hartley McGuire <skipkayhil@gmail.com>
Co-authored-by: Petrik de Heus <petrik@deheus.net>
2023-05-25 06:52:32 +09:00
Petrik
c4f0c10157 Clean up Action Cable documentation headers [ci skip] 2023-04-22 20:40:55 +02:00
Petrik
ba40945fe5 Add missing headers to Action Cable docs [ci-skip] 2023-04-02 10:20:50 +02:00
sampatbadhe
bcda8dbfad update assert_broadcasts example to include changes introduced in PR #47793 by @ghiculescu - Action Cable's assert_broadcasts return the messages that were broadcast to analyse further. 2023-04-01 15:46:42 +05:30
Jean Boussier
6879f89892
Merge pull request #47793 from ghiculescu/assert_broadcasts-return-messages
`assert_broadcasts`: return the messages that were broadcast
2023-03-31 11:52:07 +02:00
Petrik de Heus
dc0f20595d
Merge pull request #47717 from p8/docs/include-readmes
Include READMEs in main framework pages of the API documentation
2023-03-30 16:43:14 +02:00
Alex Ghiculescu
c3c8abfbd7 assert_broadcasts: return the messages that were broadcast
This PR is similar to https://github.com/rails/rails/pull/47025, it makes Action Cable's `assert_broadcasts` return the messages that were broadast. This way you can do more analysis on them:

```ruby
    messages = assert_broadcasts("test", 2) do
      ActionCable.server.broadcast "test", { message: "one" }
      ActionCable.server.broadcast "test", { message: "two" }
    end
    assert_equal 2, messages.length
    assert_equal({ "message" => "one" }, messages.first)
    assert_equal({ "message" => "two" }, messages.last)
```

This is helpful if you expect lots of messages to be broadcast or if you want to only match on some element of the data; `assert_broadcast_on` doesn't work well in either of those scenarios.
2023-03-28 11:49:28 -06:00
Vladimir Dementyev
5c4c794ab1
fix(ac-redis): rescue BaseConnectionError in redis <5 2023-03-27 17:21:46 -04:00
Simon Schmid
a9d191997b set charset in content type response headers 2023-03-24 10:17:04 +01:00
Petrik
7c94708d24 Include READMEs in main framework pages of the API documentation
Currently when opening the main framework pages there is no introduction
to the framework. Instead we only see a whole lot of modules and the
`gem_version` and `version` methods.

By including the READMEs using the `:include:` directive each frameworks
has a nice introduction.
For markdown READMEs we need to add the :markup: directive.

[ci-skip]

Co-authored-by: zzak <zzakscott@gmail.com>
2023-03-21 21:16:28 +01:00
Vladimir Dementyev
8fff6d609c
fix: do not use TestServer in ConnectionStub
It's an internal testing entity, we cannot use it in a test case class
2023-02-23 15:31:58 -05:00
zzak
d2af670dba
Remove Copyright years (#47467)
* Remove Copyright years

* Basecamp is now 37signals... again

Co-authored-by: David Heinemeier Hansson <dhh@hey.com>

---------

Co-authored-by: David Heinemeier Hansson <dhh@hey.com>
2023-02-23 11:38:16 +01:00
Yasuo Honda
f838a74212
Merge pull request #46866 from ghousemohamed/change-year-2022-to-2023 2023-02-13 13:15:43 +09:00
Rafael Mendonça França
177b9494e3
[Action Cable] Stop logging filtered params
Co-Autored-By: Kartikey Tanna <tannakartikey@gmail.com>
2023-02-08 17:22:39 +00:00
Haroon Ahmed
df00a4ebc7 Update the ActionCable::Connection::Base to no longer output env data and other stuff by overriding the inspect method and displaying a simpler output. 2023-02-06 11:02:34 +00:00
StephaneRob
1333260e11 feat: improve assert_broadcast_on error message 2023-02-04 19:48:41 +01:00
Akira Matsuda
4c23742a13
delegate to: :class has to be defined after the target method
in order to derive the arity from the target class method.
2023-01-11 04:32:08 +09:00
Ghouse Mohamed
e0559d2c1c Change 2022 -> 2023 2023-01-03 13:22:00 +05:30
Akira Matsuda
9f141a423d
Module name typo in documentation 2022-12-26 23:13:04 +09:00
Hartley McGuire
a07f2ace03
Fix lots of code highlighting issues
The most common is replacing back-ticks with either pluses or tt tags.
There were also a few instances of code blocks not being indented.
2022-11-29 00:51:02 -05:00