testimonials 0.7.6 → 0.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8928b25b69df76c0475bb2509b8a42f270bf235e619dc779610e20ac8db4982c
4
- data.tar.gz: e2801ac0a208d1f9323ab18ba0708e62db749c69223fd3b3d34815ffbc897425
3
+ metadata.gz: 5c9b9d504e0560e2e38bec8dfe4ec41c3db57b1abb6c4df66f8781502494bb44
4
+ data.tar.gz: de8db179e088abaa205551cadd2610a539a3444e42bebc7e2265499db45a23e3
5
5
  SHA512:
6
- metadata.gz: 5aa795b056831e15678e4ed5d7e7d0d91161be9c7c60ae45768c4d9f0a269cc29ec8119f9798c2263531bbd10c0cf98a2858fed72fd7e300626bf0bded782686
7
- data.tar.gz: b93d683153b5ad28d240f5072e52c0a6bfdddc16117771776e5dd734b4dd843d4e0d2a52836ae9c7a3eaabd5c7dbf5a1b3f4bda42921a13911ac023c7c2c2397
6
+ metadata.gz: cae8ec4cf6bcc3681b281ceea1fe29fd132f631a2473bceecc7ae4f0f1141bfb931612730cc509f10299bcecef0fd91f9eafe719f805b42e9a084304986a28d2
7
+ data.tar.gz: 3503ec49afd1137817eb4fd1d2b6b184cfee69de4e936a2e05807606230b4c615180dd8b903de21d146c6a229dd2d8d71a8aef1c1792266ad75baeaf877be545
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.7
4
+
5
+ - Shrank the gem from 1.0 MB back to ~90 KB by dropping the bundled 1.1 MB demo
6
+ video. `testimonials:seed_demo` now writes a ~4 KB embedded clip (three
7
+ seconds of 320x180 H.264) to Active Storage at seed time, so the demo
8
+ testimonial still plays and no app downloads media it never uses. Seeding
9
+ needs no ffmpeg and no network.
10
+
3
11
  ## 0.7.6
4
12
 
5
13
  - Added a standalone public NPS page at `/testimonials/nps/new`, the shareable
data/README.md CHANGED
@@ -40,8 +40,9 @@ bin/rails testimonials:seed_demo
40
40
  ```
41
41
 
42
42
  It creates idempotent text testimonials, one approved video testimonial with a
43
- bundled real MP4 attachment, three NPS responses, and prompt-history examples.
44
- Running the task again refreshes those records instead of duplicating them.
43
+ real playable MP4 (a ~4 KB clip written at seed time, so the gem ships no media),
44
+ three NPS responses, and prompt-history examples. Running the task again
45
+ refreshes those records instead of duplicating them.
45
46
 
46
47
  > [!IMPORTANT]
47
48
  > The dashboard defaults to **development only**. Set `authorize_admin` before
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Testimonials
4
+ # The demo video for `bin/rails testimonials:seed_demo`, written to Active
5
+ # Storage at seed time instead of shipped as a media file: three seconds of
6
+ # 320x180 H.264, embedded below as Base64 (~4 KB).
7
+ #
8
+ # It lives in a .rb rather than a .mp4 because the gemspec ships lib/**/*,
9
+ # so a bundled clip downloads with every install whether or not the app ever
10
+ # seeds. The 1.1 MB file this replaces was the whole difference between a
11
+ # 91 KB gem and a 1.0 MB one.
12
+ #
13
+ # Encoded once with ffmpeg (`gradients` filter, CRF 30). Seeding decodes it
14
+ # and needs no ffmpeg and no network.
15
+ module DemoVideo
16
+ FILENAME = 'testimonials-demo.mp4'
17
+ CONTENT_TYPE = 'video/mp4'
18
+
19
+ # unpack1('m') rather than Base64.decode64: base64 is a bundled gem from
20
+ # Ruby 3.4 on, and this needs no dependency.
21
+ DATA = <<~MP4
22
+ AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAATsbW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAAC7gAAQAA
23
+ AQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
24
+ AAAAAgAABBZ0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAC7gAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAA
25
+ AAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAUAAAAC0AAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAu4AAAIAAABAAAAAAOO
26
+ bWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAAwAAAAkABVxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRl
27
+ b0hhbmRsZXIAAAADOW1pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAA
28
+ AQAAAvlzdGJsAAAAwXN0c2QAAAAAAAAAAQAAALFhdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAUAAtABIAAAASAAAAAAA
29
+ AAABFUxhdmM2Mi4yOC4xMDEgbGlieDI2NAAAAAAAAAAAAAAAGP//AAAAN2F2Y0MBZAAM/+EAGmdkAAys2UFBn58BEAAAAwAQ
30
+ AAADAYDxQplgAQAGaOvhEsiw/fj4AAAAABBwYXNwAAAAAQAAAAEAAAAUYnRydAAAAAAAABpKAAAAAAAAABhzdHRzAAAAAAAA
31
+ AAEAAAAkAAAEAAAAABRzdHNzAAAAAAAAAAEAAAABAAABMGN0dHMAAAAAAAAAJAAAAAEAAAgAAAAAAQAAFAAAAAABAAAIAAAA
32
+ AAEAAAAAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAA
33
+ AAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAA
34
+ AAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAADAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAA
35
+ AAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAIAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAJAAA
36
+ AAEAAACkc3RzegAAAAAAAAAAAAAAJAAAA7kAAAB5AAAAFAAAAA0AAAASAAAAlwAAAA8AAAANAAAADwAAAH4AAAAVAAAADwAA
37
+ AA0AAAB1AAAAEQAAAA0AAAAPAAAAdgAAABMAAAAZAAAAEwAAAH8AAAAVAAAADQAAAA8AAABkAAAADQAAAHoAAAAWAAAADQAA
38
+ ABgAAABsAAAAHAAAABMAAAARAAAALQAAABRzdGNvAAAAAAAAAAEAAAUcAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAA
39
+ AAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY2Mi4xMi4xMDEAAAAI
40
+ ZnJlZQAACeRtZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2NSByMzIyMiBiMzU2MDVhIC0gSC4y
41
+ NjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyNSAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQu
42
+ aHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3Vi
43
+ bWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9
44
+ MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRz
45
+ PTYgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1
46
+ cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9
47
+ MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEyIHNjZW5l
48
+ Y3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0zMC4wIHFjb21wPTAu
49
+ NjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAABA2WIhAAR//7Y5/MsK6Oq
50
+ 4ykwwKqpcOrL3cKlAye4T82LJaFDykH8t1sy3r0hSL9GJNa5NcmViBufos9UN9gzGYbJ+IZ2zZxsnkenejy2v3fx5TJjlNiI
51
+ lUKJMls0KLDFbhz82ajhsUGCezq0DCHCjALIv+g8Mldnn5k8ZpN3EDjYJa/Xr4debHnbe8MjXRg4AQX9CzvPxKZ0FOpU9kMq
52
+ wZCGtEL61eQfUrbRJEckKT/uj9Mn36kbkwySpgwWy+X4zhIAkU/8maLRVjnj3td16WQD8v41QkTqIAbj5xutvfzCthCT3bAU
53
+ ImCyAj/3VMTOf7e7/2wID8LxWW1qhuqm/ESy1IEAAAB1QZokbEEf/jgvWdARAG+Q716M5y2kxC9zQxestdinyTkZHEkobNZe
54
+ Io8iY7hdsf0DXmMiCDUQw95YR69/upji0ZszBzFfuWMkcLkAUJgrX+nwInbF+cqfxkLSvqekuduanhGoUda6qvCLmYfPCvzx
55
+ NxfhXOsDAAAAEEGeQniG/wBYjIHfgJhI7pUAAAAJAZ5hdEM/AAz4AAAADgGeY2pDPwBHVe9UT+NVAAAAk0GaaEmoQWiZTAgj
56
+ //5OF6TRRZQ2sCZT82gD55snmBc2VCQrOHPcOMYrUu92MLNi02iv2WXT9FMZgape5MLJHXHldLvlu7k/CFKLw2TsP4goIIv2
57
+ A0GVHytWGZhTXcrvynPcIiCNPTdlUiUZF1C+6li8nBIR5DvBIbxaifgPirI49DZjWGI4LD9Fk4D9Mk6u/Hz4hQAAAAtBnoZF
58
+ ESw3/wAKSQAAAAkBnqV0Qz8ADPkAAAALAZ6nakM/AA3O5UAAAAB6QZqsSahBbJlMCCH//hTYBQCtXsAgZYOKSFqkWnaC/Wij
59
+ xJ5s6a/Y7hDhIUZlx2/xywHIkSnDM2r4Klv5XBlBN6qnzJTqqk+yvA9xuk/8kLWoRSVtss1qi9t1jOAtWByPaDxjREr0X/j3
60
+ qecy72Sxv95hmOVrB5AoHXUAAAARQZ7KRRUsN/8BwpyYHnxbssEAAAALAZ7pdEM/AjpJ0kgAAAAJAZ7rakM/AAz4AAAAcUGa
61
+ 8EmoQWyZTAgh//4UOL0ADDajsAFfKeG2gD56qAAAiqpCX0yVYhu9bOme3s4DGSBB2yReDbbxgDkkHFzuvnjpDGDem5tLKCGy
62
+ N0ZquwIPOSO6KZ3q3LXuCpdZ/SxDWgozBxavNevHX48zkuER3WlxAAAADUGfDkUVLDf/AAsRpuEAAAAJAZ8tdEM/AAz5AAAA
63
+ CwGfL2pDPwAYfXuIAAAAckGbNEmoQWyZTAgh//4Vi5hOfTkSf5AAl/tSTYIiqHQf+JoqzIiQNAosx3e6pjOqhCv+sRoSwWIs
64
+ XT/hAb3MjgAk/NEr6gq7TliYYNhbZPzRJT9BC4ddsf6xPRGAKZstBUhKoATJ4XZ0bVBq9IESu87RGAAAAA9Bn1JFFSw3/wBa
65
+ zFR31lkAAAAVAZ9xdEM/DKx44q58rCKABc+jNttAAAAADwGfc2pDPwpKlr9xTLXjQAAAAHtBm3hJqEFsmUwIIf/+HDmA5LyP
66
+ cQCfNs0myk1SonheXPdPZkqxRFjapoAYqbdtP2kcthV/0DXUJnlQj8P7ZAygspQBG0ruDBQs0hVOxV4vBQdqX6Yx3q1OWOFW
67
+ OMMdxy/Gp6C4S1Wx764qh0io/rcvEW5qcTKrLnd4y4EAAAARQZ+WRRUsN/8YmcPDKq0qbPAAAAAJAZ+1dEM/AAz5AAAACwGf
68
+ t2pDPwAOHwCxAAAAYEGbukmoQWyZTBRMEP/+BHWxMz6bge/VZzDUA72k3ya7C3oZVf/PTOrs91w3SCrENLFOFHO+ze0Utt9Y
69
+ VyswKtHXivU26w8GJkIlypVFzku5e1+SyBoRKYs7X1bBNA22hQAAAAkBn9lqQz8ADPkAAAB2QZveSeEKUmUwIf/996JsAXS2
70
+ K1esjM8XQMnoefMADEibOu9HOW2puLo6+gGCB5kZiHnSwiS1MiAnnuUG3p9OiA0lrA54+VaPVsDM5CelCc1RkjkeienoiT/1
71
+ ZzWoaPYTFKluzq54JieXFpBaiDUKpMKDVQiyaQAAABJBn/xFNEw3/wGzpbq1BRJROyEAAAAJAZ4bdEM/AAz5AAAAFAGeHWpD
72
+ PwIr6Qgz9t+ZbZmeTl6AAAAAaEGaAkmoQWiZTAhv//qi+YgClQu6CxhavI0kgzACj8NYTyIQ5tL9ytv8jlExcuAxd1atD1gY
73
+ xjChoFnui4qCOOvfNQ0AbGwaZgUNQNGjnW4KM/ROBx1R75pGN/ucMT8HuI+u9GR3nQk4AAAAGEGeIEURLDf/CIoKnEu1YRZB
74
+ H07eo3g+9wAAAA8Bnl90Qz8CPD+Jjbs8moAAAAANAZ5BakM/AWLO+qKI0QAAAClBmkNJqEFsmUwIZ//6WAPnM/YVcDReliMF
75
+ 1zpDvCZ+hXeJsQLqi7OoGA==
76
+ MP4
77
+
78
+ def self.bytes
79
+ @bytes ||= DATA.unpack1('m')
80
+ end
81
+ end
82
+ end
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'stringio'
4
+ require_relative 'demo_video'
5
+
3
6
  module Testimonials
4
7
  module Seeds
5
- VIDEO_PATH = File.expand_path('demo/flower.mp4', __dir__)
6
-
7
8
  TESTIMONIALS = [
8
9
  {
9
10
  seed_id: 'approved-founder',
@@ -149,15 +150,12 @@ module Testimonials
149
150
  return unless Testimonials.config.video_enabled?
150
151
  return unless testimonial.respond_to?(:video_file)
151
152
  return if testimonial.video_file.attached?
152
- return unless File.exist?(VIDEO_PATH)
153
153
 
154
- File.open(VIDEO_PATH, 'rb') do |file|
155
- testimonial.video_file.attach(
156
- io: file,
157
- filename: 'testimonials-demo-flower.mp4',
158
- content_type: 'video/mp4'
159
- )
160
- end
154
+ testimonial.video_file.attach(
155
+ io: StringIO.new(DemoVideo.bytes),
156
+ filename: DemoVideo::FILENAME,
157
+ content_type: DemoVideo::CONTENT_TYPE
158
+ )
161
159
  end
162
160
  private_class_method :attach_demo_video!
163
161
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Testimonials
4
- VERSION = '0.7.6'
4
+ VERSION = '0.7.7'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testimonials
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: 0.7.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yaroslav Shmarov
@@ -105,8 +105,7 @@ files:
105
105
  - lib/testimonials/configuration.rb
106
106
  - lib/testimonials/dashboard.css
107
107
  - lib/testimonials/dashboard.js
108
- - lib/testimonials/demo/README.md
109
- - lib/testimonials/demo/flower.mp4
108
+ - lib/testimonials/demo_video.rb
110
109
  - lib/testimonials/engine.rb
111
110
  - lib/testimonials/has_testimonials.rb
112
111
  - lib/testimonials/prompt_helper.rb
@@ -1,7 +0,0 @@
1
- # Demo Media
2
-
3
- `flower.mp4` is bundled as a small real MP4 fixture for
4
- `bin/rails testimonials:seed_demo`.
5
-
6
- Source: Mozilla Developer Network interactive examples, `cc0-videos`.
7
- The file is distributed as CC0 demo media.
Binary file