Subject: [PATCH 143/223] gnu: ruby-actioncable: Update to 7.0.4.3 and enable tests.

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 20 Mar 2023 13:22:29 -0400

* gnu/packages/rails.scm (ruby-actioncable): Update to 7.0.4.3.
[source]: Use ruby-rail-monorepo.
[arguments]: Drop #:tests?.  Add #:phases argument.
[native-inputs]: New field.
---

 gnu/packages/rails.scm | 66 ++++++++++++++++++++++++++++--------------
 1 file changed, 45 insertions(+), 21 deletions(-)

diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
index d3712a93c9..43db167671 100644
--- a/gnu/packages/rails.scm
+++ b/gnu/packages/rails.scm
@@ -553,28 +553,52 @@ (define-public ruby-actionpack
 
 (define-public ruby-actioncable
   (package
-   (name "ruby-actioncable")
-   (version "6.1.3")
-   (source
-    (origin
-     (method url-fetch)
-     (uri (rubygems-uri "actioncable" version))
-     (sha256
-      (base32
-       "1cgb1l0gml1vklxka2djpi5q5b4bgzgm5pahzfjvvgm5vzvrvi9v"))))
-   (build-system ruby-build-system)
-   (arguments
-    '(;; No included tests
-      #:tests? #f))
-   (propagated-inputs
-    (list ruby-actionpack ruby-activesupport ruby-nio4r
-          ruby-websocket-driver))
-   (synopsis "Integrate integrates WebSockets with Rails applications")
-   (description
-    "Action Cable integrates WebSockets with Rails applications.  Through
+    (name "ruby-actioncable")
+    (version %ruby-rails-version)
+    (source ruby-rails-monorepo)
+    (build-system ruby-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'extract-gemspec 'chdir
+            (lambda _
+              (chdir "actioncable")))
+          (delete 'check)               ;moved after install phase
+          (add-after 'install 'check
+            (assoc-ref %standard-phases 'check))
+          (add-before 'check 'set-GEM_PATH
+            (lambda _
+              (setenv "GEM_PATH" (string-append
+                                  (getenv "GEM_PATH") ":"
+                                  #$output "/lib/ruby/vendor_ruby"))))
+          (add-before 'check 'disable-problematic-tests
+            (lambda _
+              ;; There are multiple client test failures (see:
+              ;; https://github.com/rails/rails/issues/47617).
+              (delete-file "test/client_test.rb")))
+          (add-before 'check 'start-redis
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "redis-server" "--daemonize" "yes")))))))
+    (native-inputs
+     (list redis
+           ruby-activerecord
+           ruby-pg
+           ruby-puma
+           ruby-redis
+           ruby-websocket-client-simple))
+    (propagated-inputs
+     (list ruby-actionpack
+           ruby-activesupport
+           ruby-nio4r
+           ruby-websocket-driver))
+    (synopsis "Integrate integrates WebSockets with Rails applications")
+    (description
+     "Action Cable integrates WebSockets with Rails applications.  Through
 WebSockets it allows for real-time features in web applications.")
-   (home-page "https://rubyonrails.org/")
-   (license license:expat)))
+    (home-page "https://rubyonrails.org/")
+    (license license:expat)))
 
 (define-public ruby-activejob
   (package
-- 
2.39.1