gnu: ruby-guard: Don't use unstable tarball.
[jackhill/guix/guix.git] / gnu / packages / rails.scm
CommitLineData
90322fdb
MJ
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
9923d5a4 3;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
90322fdb
MJ
4;;;
5;;; This file is part of GNU Guix.
6;;;
7;;; GNU Guix is free software; you can redistribute it and/or modify it
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
12;;; GNU Guix is distributed in the hope that it will be useful, but
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
19
20(define-module (gnu packages rails)
21 #:use-module ((guix licenses) #:prefix license:)
22 #:use-module (guix download)
24412de4 23 #:use-module (guix git-download)
90322fdb 24 #:use-module (guix packages)
1d672a6a 25 #:use-module (gnu packages node)
90322fdb
MJ
26 #:use-module (gnu packages ruby)
27 #:use-module (guix build-system ruby))
28
3aeb6e1d
MJ
29(define-public ruby-spring
30 (package
31 (name "ruby-spring")
29f49403 32 (version "1.7.2")
3aeb6e1d
MJ
33 (source
34 (origin
35 (method url-fetch)
36 (uri
37 (string-append "https://github.com/rails/spring/archive/v"
38 version ".tar.gz"))
39 (file-name (string-append name "-" version ".tar.gz"))
40 (sha256
41 (base32
29f49403 42 "1dd58y0cpsm2izj74yscn0ybfygmgcbbfdw1891g7cq41aai4b35"))))
3aeb6e1d
MJ
43 (build-system ruby-build-system)
44 (arguments
45 `(#:test-target "test:unit"
46 #:phases
47 (modify-phases %standard-phases
48 (add-before 'check 'remove-bump
49 (lambda _
50 (substitute* "spring.gemspec"
29f49403
BW
51 (("gem.add_development_dependency 'bump'") "")
52 (("gem.add_development_dependency 'activesupport'.*")
53 "gem.add_development_dependency 'activesupport'\n"))
3aeb6e1d
MJ
54 (substitute* "Rakefile"
55 (("require \\\"bump/tasks\\\"") ""))
56 #t)))))
57 (native-inputs
58 `(("bundler" ,bundler)
59 ("ruby-activesupport" ,ruby-activesupport)))
60 (synopsis "Ruby on Rails application preloader")
61 (description
62 "Spring is a Ruby on Rails application preloader. It speeds up
63development by keeping your application running in the background so the
64application does need to boot it every time you run a test, rake task or
65migration.")
66 (home-page "https://github.com/rails/spring")
67 (license license:expat)))
68
a7749465
CB
69(define-public ruby-sass-rails
70 (package
71 (name "ruby-sass-rails")
72 (version "5.0.7")
73 (source
74 (origin
75 (method url-fetch)
76 (uri (rubygems-uri "sass-rails" version))
77 (sha256
78 (base32
79 "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s"))))
80 (build-system ruby-build-system)
81 (arguments
82 '(#:tests? #f)) ; No included tests
83 (propagated-inputs
84 `(("ruby-railties" ,ruby-railties)
85 ("ruby-sass" ,ruby-sass)
86 ("ruby-sprockets" ,ruby-sprockets)
87 ("ruby-sprockets-rails" ,ruby-sprockets-rails)
88 ("ruby-tilt" ,ruby-tilt)))
89 (synopsis "Sass adapter for the Rails asset pipeline")
90 (description
91 "This library integrates the SASS stylesheet language into Ruby on
92Rails.")
93 (home-page "https://github.com/rails/sass-rails")
94 (license license:expat)))
95
90322fdb
MJ
96(define-public ruby-debug-inspector
97 (package
98 (name "ruby-debug-inspector")
eec0c587 99 (version "0.0.3")
90322fdb
MJ
100 (source
101 (origin
102 (method url-fetch)
103 (uri (rubygems-uri "debug_inspector" version))
104 (sha256
105 (base32
eec0c587 106 "0vxr0xa1mfbkfcrn71n7c4f2dj7la5hvphn904vh20j3x4j5lrx0"))))
90322fdb
MJ
107 (build-system ruby-build-system)
108 (arguments
109 `(#:phases
110 (modify-phases %standard-phases
111 (replace 'check
112 (lambda _
9923d5a4
TGR
113 (invoke "rake" "compile")
114 (invoke "ruby" "-Ilib" "-e"
115 (string-append
116 "require 'debug_inspector'; RubyVM::DebugInspector."
117 "open{|dc| p dc.backtrace_locations}")))))))
90322fdb
MJ
118 (synopsis "Ruby wrapper for the MRI 2.0 debug_inspector API")
119 (description
120 "This package provides a Ruby wrapper for the MRI 2.0 debug_inspector
121API.")
122 (home-page
123 "https://github.com/banister/debug_inspector")
124 (license license:expat)))
29fa6d84 125
1d672a6a
CB
126(define-public ruby-autoprefixer-rails
127 (package
128 (name "ruby-autoprefixer-rails")
129 (version "9.4.7")
130 (source
131 (origin
132 (method url-fetch)
133 (uri (rubygems-uri "autoprefixer-rails" version))
134 (sha256
135 (base32
136 "0fxbfl3xrrjj84n98x24yzxbz4nvm6c492dxj41kkrl9z97ga13i"))))
137 (build-system ruby-build-system)
138 (arguments
139 '(#:test-target "spec"
140 #:phases
141 (modify-phases %standard-phases
142 (add-after 'extract-gemspec 'remove-unnecessary-dependencies
143 (lambda _
144 ;; Remove the testing of compass, as it's use is deprecated, and
145 ;; it's unpackaged for Guix
146 (substitute* "autoprefixer-rails.gemspec"
147 ((".*%q<compass>.*") "\n")
148 (("\"spec/compass_spec\\.rb\"\\.freeze, ") ""))
149 (delete-file "spec/compass_spec.rb")
150
151 (substitute* "Gemfile"
152 ;; Remove overly strict requirement on sprockets
153 ((", '>= 4\\.0\\.0\\.beta1'") "")
154 ;; The mini_racer gem isn't packaged yet, and it's not directly
155 ;; required, as other backends for ruby-execjs can be used.
156 (("gem 'mini_racer'") "")
157 ;; For some reason, this is required for the gems to be picked
158 ;; up
159 (("gemspec") "gemspec\ngem 'tzinfo-data'\ngem 'sass'"))
160 #t)))))
161 (native-inputs
162 `(("bundler" ,bundler)
163 ("ruby-rails" ,ruby-rails)
164 ("ruby-rspec-rails" ,ruby-rspec-rails)
165 ;; This is needed for a test, but I'm unsure why
166 ("ruby-sass" ,ruby-sass)
167 ;; This is used as the ruby-execjs runtime
168 ("node" ,node)))
169 (propagated-inputs
170 `(("ruby-execjs" ,ruby-execjs)))
171 (synopsis "Parse CSS and add vendor prefixes to CSS rules")
172 (description
173 "This gem provides Ruby and Ruby on Rails integration with Autoprefixer,
174which can parse CSS and add vendor prefixes to CSS rules using values from the
175Can I Use website.")
176 (home-page "https://github.com/ai/autoprefixer-rails")
177 (license license:expat)))
178
29fa6d84
CB
179(define-public ruby-activemodel
180 (package
181 (name "ruby-activemodel")
22468de4 182 (version "5.2.2.1")
29fa6d84
CB
183 (source
184 (origin
185 (method url-fetch)
186 (uri (rubygems-uri "activemodel" version))
187 (sha256
188 (base32
22468de4 189 "1idmvqvpgri34k31s44pjb88rc3jad3yxra7fd1kpidpnv5f3v65"))))
29fa6d84
CB
190 (build-system ruby-build-system)
191 (arguments
192 '(;; No included tests
193 #:tests? #f))
194 (propagated-inputs
195 `(("ruby-activesupport" ,ruby-activesupport)))
196 (synopsis "Toolkit for building modeling frameworks like Active Record")
197 (description
198 "This package provides a toolkit for building modeling frameworks like
199Active Record. ActiveSupport handles attributes, callbacks, validations,
200serialization, internationalization, and testing.")
201 (home-page "https://rubyonrails.org/")
202 (license license:expat)))
13cf6aee
CB
203
204(define-public ruby-activerecord
205 (package
206 (name "ruby-activerecord")
0fb8ed17 207 (version "5.2.2.1")
13cf6aee
CB
208 (source
209 (origin
210 (method url-fetch)
211 (uri (rubygems-uri "activerecord" version))
212 (sha256
213 (base32
0fb8ed17 214 "1c5cz9v7ggpqjxf0fqs1xhy1pb9m34cp31pxarhs9aqb71qjl98v"))))
13cf6aee
CB
215 (build-system ruby-build-system)
216 (arguments
217 '(;; No included tests
218 #:tests? #f))
219 (propagated-inputs
220 `(("ruby-activemodel" ,ruby-activemodel)
221 ("ruby-activesupport" ,ruby-activesupport)
222 ("ruby-arel" ,ruby-arel)))
223 (synopsis "Ruby library to connect to relational databases")
224 (description
225 "Active Record connects classes to relational database table to establish
226an almost zero-configuration persistence layer for applications.")
227 (home-page "https://rubyonrails.org")
228 (license license:expat)))
ab654da5 229
87688ff3
CB
230(define-public ruby-rspec-rails
231 (package
232 (name "ruby-rspec-rails")
233 (version "3.8.2")
234 (source
235 (origin
236 (method url-fetch)
237 (uri (rubygems-uri "rspec-rails" version))
238 (sha256
239 (base32
240 "1pf6n9l4sw1arlax1bdbm1znsvl8cgna2n6k6yk1bi8vz2n73ls1"))))
241 (build-system ruby-build-system)
242 (arguments
243 '(#:tests? #f)) ; No included tests
244 (propagated-inputs
245 `(("ruby-actionpack" ,ruby-actionpack)
246 ("ruby-activesupport" ,ruby-activesupport)
247 ("ruby-railties" ,ruby-railties)
248 ("ruby-rspec-core" ,ruby-rspec-core)
249 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
250 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
251 ("ruby-rspec-support" ,ruby-rspec-support)))
252 (synopsis "Use RSpec to test Ruby on Rails applications")
253 (description
254 "This package provides support for using RSpec to test Ruby on Rails
255applications, in pace of the default Minitest testing library.")
256 (home-page "https://github.com/rspec/rspec-rails")
257 (license license:expat)))
258
ab654da5
CB
259(define-public ruby-rails-html-sanitizer
260 (package
261 (name "ruby-rails-html-sanitizer")
262 (version "1.0.4")
263 (source
264 (origin
265 (method url-fetch)
266 (uri (rubygems-uri "rails-html-sanitizer" version))
267 (sha256
268 (base32
269 "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr"))))
270 (build-system ruby-build-system)
271 (arguments
272 '(;; No included tests
273 #:tests? #f))
274 (propagated-inputs
275 `(("ruby-loofah" ,ruby-loofah)))
276 (synopsis "HTML sanitization for Rails applications")
277 (description
278 "This gem is used to handle HTML sanitization in Rails applications. If
279you need similar functionality in non Rails apps consider using Loofah
280directly.")
281 (home-page "https://github.com/rails/rails-html-sanitizer")
282 (license license:expat)))
24412de4
CB
283
284(define-public ruby-rails-dom-testing
285 (package
286 (name "ruby-rails-dom-testing")
287 (version "2.0.2")
288 (source
289 (origin
290 (method git-fetch)
291 (uri (git-reference
292 (url "https://github.com/rails/rails-dom-testing.git")
293 (commit (string-append "v" version))))
294 (file-name (git-file-name name version))
295 (sha256
296 (base32
297 "0zrg6x1w3wjgklbhcphjmggl11jx5s8cl21qjqij7wknm412i5wl"))))
298 (build-system ruby-build-system)
299 (native-inputs
300 `(("bundler" ,bundler)))
301 (propagated-inputs
302 `(("ruby-activesupport" ,ruby-activesupport)
303 ("ruby-nokogiri" ,ruby-nokogiri)))
304 (synopsis "Compare HTML DOMs and assert certain elements exists")
305 (description
306 "This gem can compare HTML and assert certain elements exists. This is
307useful when writing tests.")
308 (home-page "https://github.com/rails/rails-dom-testing")
309 (license license:expat)))
1c48c539
CB
310
311(define-public ruby-actionview
312 (package
313 (name "ruby-actionview")
e8df5a50 314 (version "5.2.2.1")
1c48c539
CB
315 (source
316 (origin
317 (method url-fetch)
318 (uri (rubygems-uri "actionview" version))
319 (sha256
320 (base32
e8df5a50 321 "0832vlx37rly8ryfgi01b20mld8b3bv9cg62n5wax4zpzgn6jdxb"))))
1c48c539
CB
322 (build-system ruby-build-system)
323 (arguments
324 '(;; No included tests
325 #:tests? #f))
326 (propagated-inputs
327 `(("ruby-activesupport" ,ruby-activesupport)
328 ("ruby-builder" ,ruby-builder)
329 ("ruby-erubi" ,ruby-erubi)
330 ("ruby-rails-dom-testing" ,ruby-rails-dom-testing)
331 ("ruby-rails-html-sanitizer" ,ruby-rails-html-sanitizer)))
332 (synopsis "Conventions and helpers for building web pages")
333 (description
334 "ActionView provides conventions and helpers for building web pages in
335Ruby.")
336 (home-page "https://rubyonrails.org/")
337 (license license:expat)))
7b062e98
CB
338
339(define-public ruby-actionpack
340 (package
341 (name "ruby-actionpack")
24c704af 342 (version "5.2.2.1")
7b062e98
CB
343 (source
344 (origin
345 (method url-fetch)
346 (uri (rubygems-uri "actionpack" version))
347 (sha256
348 (base32
24c704af 349 "1lxqzxa728dqg42yw0q4hqkaawqagiw1k0392an2ghjfgb16pafx"))))
7b062e98
CB
350 (build-system ruby-build-system)
351 (arguments
352 '(;; No included tests
353 #:tests? #f))
354 (propagated-inputs
355 `(("ruby-actionview" ,ruby-actionview)
356 ("ruby-activesupport" ,ruby-activesupport)
357 ("ruby-rack" ,ruby-rack)
358 ("ruby-rack-test" ,ruby-rack-test)
359 ("ruby-rails-dom-testing" ,ruby-rails-dom-testing)
360 ("ruby-rails-html-sanitizer" ,ruby-rails-html-sanitizer)))
361 (synopsis "Conventions for building and testing MVC web applications")
362 (description
363 "ActionPack provides conventions for building and testing MVC web
364applications. These work with any Rack-compatible server.")
365 (home-page "https://rubyonrails.org/")
366 (license license:expat)))
937c8862
CB
367
368(define-public ruby-actioncable
369 (package
370 (name "ruby-actioncable")
2a737e80 371 (version "5.2.2.1")
937c8862
CB
372 (source
373 (origin
374 (method url-fetch)
375 (uri (rubygems-uri "actioncable" version))
376 (sha256
377 (base32
2a737e80 378 "1x5fxhsr2mxq5r6258s48xsn7ld081d3qaavppvj7yp7w9vqn871"))))
937c8862
CB
379 (build-system ruby-build-system)
380 (arguments
381 '(;; No included tests
382 #:tests? #f))
383 (propagated-inputs
384 `(("ruby-actionpack" ,ruby-actionpack)
385 ("ruby-nio4r" ,ruby-nio4r)
386 ("ruby-websocket-driver" ,ruby-websocket-driver)))
387 (synopsis "Integrate integrates WebSockets with Rails applications")
388 (description
389 "Action Cable integrates WebSockets with Rails applications. Through
390WebSockets it allows for real-time features in web applications.")
391 (home-page "https://rubyonrails.org/")
392 (license license:expat)))
ca09c4b5
CB
393
394(define-public ruby-activejob
395 (package
396 (name "ruby-activejob")
fbc2309f 397 (version "5.2.2.1")
ca09c4b5
CB
398 (source
399 (origin
400 (method url-fetch)
401 (uri (rubygems-uri "activejob" version))
402 (sha256
403 (base32
fbc2309f 404 "1zma452lc3qp4a7r10zbdmsci0kv9a3gnk4da2apbdrc8fib5mr3"))))
ca09c4b5
CB
405 (build-system ruby-build-system)
406 (arguments
407 '(;; No included tests
408 #:tests? #f))
409 (propagated-inputs
410 `(("ruby-activesupport" ,ruby-activesupport)
411 ("ruby-globalid" ,ruby-globalid)))
412 (synopsis "Declare job classes for multiple backends")
413 (description
414 "ActiveJob allows declaring job classes in a common way across Rails
415applications.")
416 (home-page "https://rubyonrails.org/")
417 (license license:expat)))
0fc30899 418
07884945
CB
419(define-public ruby-activestorage
420 (package
421 (name "ruby-activestorage")
e16dd189 422 (version "5.2.2.1")
07884945
CB
423 (source
424 (origin
425 (method url-fetch)
426 (uri (rubygems-uri "activestorage" version))
427 (sha256
428 (base32
e16dd189 429 "155xpbzrz0kr0argx0vsh5prvadd2h1g1m61kdiabvfy2iygc02n"))))
07884945
CB
430 (build-system ruby-build-system)
431 (arguments
432 '(;; No included tests
433 #:tests? #f))
434 (propagated-inputs
435 `(("ruby-actionpack" ,ruby-actionpack)
436 ("ruby-activerecord" ,ruby-activerecord)
437 ("ruby-marcel" ,ruby-marcel)))
438 (synopsis "Integrate file storage services in to Rails applications")
439 (description
440 "ActiveStorage integrates file storage services with Rails applications,
441allowing files to be attached to ActiveRecord models..")
442 (home-page "https://rubyonrails.org/")
443 (license license:expat)))
444
0fc30899
CB
445(define-public ruby-actionmailer
446 (package
447 (name "ruby-actionmailer")
5be0aedf 448 (version "5.2.2.1")
0fc30899
CB
449 (source
450 (origin
451 (method url-fetch)
452 (uri (rubygems-uri "actionmailer" version))
453 (sha256
454 (base32
5be0aedf 455 "10n2v2al68rsq5ghrdp7cpycsc1q0m19fcd8cd5i528n30nl23iw"))))
0fc30899
CB
456 (build-system ruby-build-system)
457 (arguments
458 '(;; No included tests
459 #:tests? #f))
460 (propagated-inputs
461 `(("ruby-actionpack" ,ruby-actionpack)
462 ("ruby-actionview" ,ruby-actionview)
463 ("ruby-activejob" ,ruby-activejob)
464 ("ruby-mail" ,ruby-mail)
465 ("ruby-rails-dom-testing" ,ruby-rails-dom-testing)))
466 (synopsis "Work with emails using the controller/view pattern")
467 (description
468 "Compose, deliver, receive, and test emails using the controller/view
469pattern. Including support for multipart email and attachments.")
470 (home-page "https://rubyonrails.org/")
471 (license license:expat)))
c8f079ca
CB
472
473(define-public ruby-railties
474 (package
475 (name "ruby-railties")
1835fc26 476 (version "5.2.2.1")
c8f079ca
CB
477 (source
478 (origin
479 (method url-fetch)
480 (uri (rubygems-uri "railties" version))
481 (sha256
482 (base32
1835fc26 483 "0al6mvh2jvr3n7cxkx0yvhgiiarby6gxc93vl5xg1yxkvx27qzd6"))))
c8f079ca
CB
484 (build-system ruby-build-system)
485 (arguments
486 '(;; No included tests
487 #:tests? #f))
488 (propagated-inputs
489 `(("ruby-actionpack" ,ruby-actionpack)
490 ("ruby-activesupport" ,ruby-activesupport)
491 ("ruby-method-source" ,ruby-method-source)
492 ("ruby-thor" ,ruby-thor)))
493 (synopsis "Rails internals, including application bootup and generators")
494 (description
495 "@code{railties} provides the core Rails internals including handling
496application bootup, plugins, generators, and Rake tasks.")
497 (home-page "https://rubyonrails.org/")
498 (license license:expat)))
80c4bfa6
CB
499
500(define-public ruby-sprockets-rails
501 (package
502 (name "ruby-sprockets-rails")
503 (version "3.2.1")
504 (source
505 (origin
506 (method url-fetch)
507 (uri (rubygems-uri "sprockets-rails" version))
508 (sha256
509 (base32
510 "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1"))))
511 (build-system ruby-build-system)
512 (arguments
513 '(;; No included tests
514 #:tests? #f))
515 (propagated-inputs
516 `(("ruby-actionpack" ,ruby-actionpack)
517 ("ruby-activesupport" ,ruby-activesupport)
518 ("ruby-sprockets" ,ruby-sprockets)))
519 (synopsis "Sprockets Rails integration")
520 (description
521 "Provides Sprockets implementation for the Rails Asset Pipeline.")
522 (home-page
523 "https://github.com/rails/sprockets-rails")
524 (license license:expat)))
a3dbfbbd 525
ae9d1ab4
CB
526(define-public ruby-web-console
527 (package
528 (name "ruby-web-console")
529 (version "3.7.0")
530 (source
531 (origin
532 ;; Download from GitHub as test files are not provided in the gem.
533 (method git-fetch)
534 (uri (git-reference
535 (url "https://github.com/rails/web-console.git")
536 (commit (string-append "v" version))))
537 (file-name (git-file-name name version))
538 (sha256
539 (base32
540 "0ir999p8cnm3l3zwbgpwxxcq1vwkj8d0d3r24362cyaf4v1rglq2"))))
541 (build-system ruby-build-system)
542 (arguments
543 '(#:phases
544 (modify-phases %standard-phases
545 (add-after 'unpack 'patch-Gemfile
546 (lambda _
547 (substitute* "Gemfile"
548 ;; Remove the github bit from the Gemfile, so that the Guix
549 ;; packages are used.
550 ((", github: .*") "\n")
551 ;; The usual methods of not loading this group don't work, so
552 ;; patch the Gemfile.
553 (("group :development") "[].each")
554 ;; tzinfo-data is propagated by ruby-activesupport, but it
555 ;; needs to be in the Gemfile to become available.
556 (("group :test do") "group :test do\n gem 'tzinfo-data'"))
557 #t))
558 (add-after 'unpack 'fix-mocha-minitest-require
559 (lambda _
560 (substitute* "test/test_helper.rb"
561 ;; This chanegd in recent versions of Mocha
562 (("mocha/minitest") "mocha/mini_test"))
563 #t)))))
564 (propagated-inputs
565 `(("ruby-actionview" ,ruby-actionview)
566 ("ruby-activemodel" ,ruby-activemodel)
567 ("ruby-bindex" ,ruby-bindex)
568 ("ruby-railties" ,ruby-railties)))
569 (native-inputs
570 `(("bundler" ,bundler)
571 ("ruby-rails" ,ruby-rails)
572 ("ruby-mocha" ,ruby-mocha)
573 ("ruby-simplecov" ,ruby-simplecov)))
574 (synopsis "Debugging tool for your Ruby on Rails applications")
575 (description
576 "This package allows you to create an interactive Ruby session in your
577browser. Those sessions are launched automatically in case of an error and
578can also be launched manually in any page.")
579 (home-page "https://github.com/rails/web-console")
580 (license license:expat)))
581
ad6471d4
CB
582(define-public ruby-with-advisory-lock
583 (package
584 (name "ruby-with-advisory-lock")
585 (version "4.0.0")
586 (source
587 (origin
588 (method url-fetch)
589 (uri (rubygems-uri "with_advisory_lock" version))
590 (sha256
591 (base32
592 "1k37hxgmaqgsd54gplm5xim9nw3ghvqsbzaw7q4q64ha1nbd9a41"))))
593 (build-system ruby-build-system)
594 (arguments
595 '(#:tests? #f)) ; TODO Tests require a running MySQL service
596 (propagated-inputs
597 `(("ruby-activerecord" ,ruby-activerecord)))
598 (native-inputs
599 `(("bundler" ,bundler)
600 ("ruby-yard" ,ruby-yard)
601 ("ruby-mysql2" ,ruby-mysql2)))
602 (synopsis "Advisory locking for ActiveRecord")
603 (description
604 "The With advisory lock gem adds advisory locking to ActiveRecord for
52beae7b 605PostgreSQL and MySQL. SQLite is also supported, but this uses the file system
ad6471d4
CB
606for locks.")
607 (home-page "https://closuretree.github.io/with_advisory_lock/")
608 (license license:expat)))
609
a3dbfbbd
CB
610(define-public ruby-rails
611 (package
612 (name "ruby-rails")
e2fbc272 613 (version "5.2.2.1")
a3dbfbbd
CB
614 (source
615 (origin
616 (method url-fetch)
617 (uri (rubygems-uri "rails" version))
618 (sha256
619 (base32
e2fbc272 620 "1jxmwrykwgbn116hhmi7h75hcsdifhj89wk12m7ch2f3mn1lrmp9"))))
a3dbfbbd
CB
621 (build-system ruby-build-system)
622 (arguments
623 '(#:phases
624 (modify-phases %standard-phases
625 ;; This gem acts as glue between the gems that actually make up
626 ;; Rails. The important thing to check is that the gemspec matches up
627 ;; with the Guix packages and Rubygems can successfully activate the
628 ;; Rails gem.
629 ;;
630 ;; The following check phase tests this.
631 (delete 'check)
632 (add-after 'install 'check
633 (lambda* (#:key tests? outputs #:allow-other-keys)
634 (setenv "GEM_PATH"
635 (string-append
636 (getenv "GEM_PATH")
637 ":"
638 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
639 (when tests?
640 (invoke "ruby" "-e" "gem 'rails'"))
641 #t)))))
642 (propagated-inputs
643 `(("ruby-activesupport" ,ruby-activesupport)
644 ("ruby-actionpack" ,ruby-actionpack)
645 ("ruby-actionview" ,ruby-actionview)
646 ("ruby-activemodel" ,ruby-activemodel)
647 ("ruby-activerecord" ,ruby-activerecord)
648 ("ruby-actionmailer" ,ruby-actionmailer)
649 ("ruby-activejob" ,ruby-activejob)
650 ("ruby-actioncable" ,ruby-actioncable)
651 ("ruby-activestorage" ,ruby-activestorage)
652 ("ruby-railties" ,ruby-railties)
653 ("bundler" ,bundler)
654 ("ruby-sprockets-rails" ,ruby-sprockets-rails)))
655 (synopsis "Full-stack web framework optimized for programmer happiness")
656 (description
657 "Ruby on Rails is a full-stack web framework optimized for programmer
658happiness and sustainable productivity. It encourages beautiful code by
659favoring convention over configuration.")
660 (home-page "https://rubyonrails.org/")
661 (license license:expat)))