discourse: 3.3.2 -> 3.4.2

https://meta.discourse.org/t/3-3-3-security-and-maintenance-release/343239
https://meta.discourse.org/t/3-3-4-security-and-maintenance-release/349301
https://blog.discourse.org/2025/02/unpacking-discourse-3-4/
https://meta.discourse.org/t/3-4-1-bug-fix-and-ux-release/353247
https://meta.discourse.org/t/3-4-2-security-and-bug-fix-release/358152

+733 -556
+1
nixos/doc/manual/release-notes/rl-2505.section.md
··· 354 355 356 - `programs.clash-verge.tunMode` was deprecated and removed because now service mode is necessary to start program. Without `programs.clash-verge.enable`, clash-verge-rev will refuse to start. 357 358 - `services.netbird.tunnels` was renamed to [`services.netbird.clients`](#opt-services.netbird.clients), 359 hardened (using dedicated less-privileged users) and significantly extended.
··· 354 355 356 - `programs.clash-verge.tunMode` was deprecated and removed because now service mode is necessary to start program. Without `programs.clash-verge.enable`, clash-verge-rev will refuse to start. 357 + - `services.discourse` now requires PostgreSQL 15 per default. Please update before upgrading. 358 359 - `services.netbird.tunnels` was renamed to [`services.netbird.clients`](#opt-services.netbird.clients), 360 hardened (using dedicated less-privileged users) and significantly extended.
+7 -2
nixos/modules/services/web-apps/discourse.nix
··· 13 cfg = config.services.discourse; 14 opt = options.services.discourse; 15 16 - # Keep in sync with https://github.com/discourse/discourse_docker/blob/main/image/base/slim.Dockerfile#L5 17 - upstreamPostgresqlVersion = lib.getVersion pkgs.postgresql_13; 18 19 postgresqlPackage = 20 if config.services.postgresql.enable then config.services.postgresql.package else pkgs.postgresql; ··· 676 dns_query_timeout_secs = null; 677 regex_timeout_seconds = 2; 678 allow_impersonation = true; 679 }; 680 681 services.redis.servers.discourse = ··· 901 extraConfig 902 + '' 903 proxy_set_header X-Request-Start "t=''${msec}"; 904 ''; 905 }; 906 cache = time: ''
··· 13 cfg = config.services.discourse; 14 opt = options.services.discourse; 15 16 + # Keep in sync with https://github.com/discourse/discourse_docker/blob/main/image/base/Dockerfile PG_MAJOR 17 + upstreamPostgresqlVersion = lib.getVersion pkgs.postgresql_15; 18 19 postgresqlPackage = 20 if config.services.postgresql.enable then config.services.postgresql.package else pkgs.postgresql; ··· 676 dns_query_timeout_secs = null; 677 regex_timeout_seconds = 2; 678 allow_impersonation = true; 679 + log_line_max_chars = 160000; 680 + yjit_enabled = false; 681 }; 682 683 services.redis.servers.discourse = ··· 903 extraConfig 904 + '' 905 proxy_set_header X-Request-Start "t=''${msec}"; 906 + proxy_set_header X-Sendfile-Type ""; 907 + proxy_set_header X-Accel-Mapping ""; 908 + proxy_set_header Client-Ip ""; 909 ''; 910 }; 911 cache = time: ''
+1 -1
nixos/tests/discourse.nix
··· 59 60 environment.systemPackages = [ pkgs.jq ]; 61 62 - services.postgresql.package = pkgs.postgresql_13; 63 64 services.discourse = { 65 enable = true;
··· 59 60 environment.systemPackages = [ pkgs.jq ]; 61 62 + services.postgresql.package = pkgs.postgresql_15; 63 64 services.discourse = { 65 enable = true;
+22 -45
pkgs/servers/web-apps/discourse/default.nix
··· 9 bundlerEnv, 10 callPackage, 11 12 - ruby_3_2, 13 replace, 14 gzip, 15 gnutar, ··· 34 procps, 35 rsync, 36 icu, 37 - fetchYarnDeps, 38 - yarn, 39 - fixup-yarn-lock, 40 nodePackages, 41 - nodejs_18, 42 jq, 43 moreutils, 44 terser, ··· 48 }@args: 49 50 let 51 - version = "3.3.2"; 52 53 src = fetchFromGitHub { 54 owner = "discourse"; 55 repo = "discourse"; 56 rev = "v${version}"; 57 - sha256 = "sha256-FaPcUta5z/8oasw+9zGBRZnUVYD8eCo1t/XwwsFoSM8="; 58 }; 59 60 - ruby = ruby_3_2; 61 62 runtimeDeps = [ 63 # For backups, themes and assets ··· 67 gnutar 68 git 69 brotli 70 - nodejs_18 71 72 # Misc required system utils 73 which ··· 189 cd ../.. 190 191 mkdir -p vendor/v8/${stdenv.hostPlatform.system}/libv8/obj/ 192 - ln -s "${nodejs_18.libv8}/lib/libv8.a" vendor/v8/${stdenv.hostPlatform.system}/libv8/obj/libv8_monolith.a 193 194 - ln -s ${nodejs_18.libv8}/include vendor/v8/include 195 196 mkdir -p ext/libv8-node 197 echo '--- !ruby/object:Libv8::Node::Location::Vendor {}' >ext/libv8-node/.location.yml ··· 232 pname = "discourse-assets"; 233 inherit version src; 234 235 - yarnOfflineCache = fetchYarnDeps { 236 - yarnLock = src + "/yarn.lock"; 237 - hash = "sha256-cSQofaULCmPuWGxS+hK4KlRq9lSkCPiYvhax9X6Dor8="; 238 }; 239 240 nativeBuildInputs = runtimeDeps ++ [ ··· 242 redis 243 uglify-js 244 terser 245 - yarn 246 jq 247 moreutils 248 - fixup-yarn-lock 249 ]; 250 251 outputs = [ ··· 281 # run. This means that Redis and PostgreSQL has to be running and 282 # database migrations performed. 283 preBuild = '' 284 - # Yarn wants a real home directory to write cache, config, etc to 285 - export HOME=$NIX_BUILD_TOP/fake_home 286 - 287 - yarn_install() { 288 - local offlineCache=$1 yarnLock=$2 289 - 290 - # Make yarn install packages from our offline cache, not the registry 291 - yarn config --offline set yarn-offline-mirror $offlineCache 292 - 293 - # Fixup "resolved"-entries in yarn.lock to match our offline cache 294 - fixup-yarn-lock $yarnLock 295 - 296 - # Install while ignoring hook scripts 297 - yarn --offline --ignore-scripts --cwd $(dirname $yarnLock) install 298 - } 299 - 300 - # Install runtime and devDependencies. 301 - # The dev deps are necessary for generating the theme-transpiler executed as dependent task 302 - # assets:precompile:theme_transpiler before db:migrate and unfortunately also in the runtime 303 - yarn_install $yarnOfflineCache yarn.lock 304 - 305 # Patch before running postinstall hook script 306 patchShebangs node_modules/ 307 patchShebangs --build app/assets/javascripts 308 - yarn --offline --cwd app/assets/javascripts run postinstall 309 export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt 310 311 redis-server >/dev/null & ··· 351 352 runHook postInstall 353 ''; 354 }; 355 356 discourse = stdenv.mkDerivation { ··· 425 ln -sf /var/lib/discourse/tmp $out/share/discourse/tmp 426 ln -sf /run/discourse/config $out/share/discourse/config 427 ln -sf /run/discourse/public $out/share/discourse/public 428 - # This needs to be copied because of symlinks in node_modules 429 - # Also this needs to be full node_modules (including dev deps) because without loader.js it just throws 500 430 - cp -r ${assets.node_modules} $out/share/discourse/node_modules 431 ln -sf ${assets} $out/share/discourse/public.dist/assets 432 rm -r $out/share/discourse/app/assets/javascripts 433 - ln -sf ${assets.javascripts} $out/share/discourse/app/assets/javascripts 434 ${lib.concatMapStringsSep "\n" ( 435 p: "ln -sf ${p} $out/share/discourse/plugins/${p.pluginName or ""}" 436 ) plugins} ··· 466 maintainers = with maintainers; [ talyz ]; 467 license = licenses.gpl2Plus; 468 description = "Discourse is an open source discussion platform"; 469 - # fails to compile mini_racer: 470 - # mini_racer_v8.cc:316:45: error: no matching function for call to 'v8::ScriptOrigin::ScriptOrigin(v8::Local<v8::String>&)' 471 - broken = true; 472 }; 473 }; 474 in
··· 9 bundlerEnv, 10 callPackage, 11 12 + ruby_3_3, 13 replace, 14 gzip, 15 gnutar, ··· 34 procps, 35 rsync, 36 icu, 37 + pnpm_9, 38 nodePackages, 39 + nodejs, 40 jq, 41 moreutils, 42 terser, ··· 46 }@args: 47 48 let 49 + version = "3.4.2"; 50 51 src = fetchFromGitHub { 52 owner = "discourse"; 53 repo = "discourse"; 54 rev = "v${version}"; 55 + sha256 = "sha256-glTuY9aQ7wYvFZstOP579RkdSwKKh3q9mJt4wqg3zYk="; 56 }; 57 58 + ruby = ruby_3_3; 59 60 runtimeDeps = [ 61 # For backups, themes and assets ··· 65 gnutar 66 git 67 brotli 68 + nodejs 69 70 # Misc required system utils 71 which ··· 187 cd ../.. 188 189 mkdir -p vendor/v8/${stdenv.hostPlatform.system}/libv8/obj/ 190 + ln -s "${nodejs.libv8}/lib/libv8.a" vendor/v8/${stdenv.hostPlatform.system}/libv8/obj/libv8_monolith.a 191 192 + ln -s ${nodejs.libv8}/include vendor/v8/include 193 194 mkdir -p ext/libv8-node 195 echo '--- !ruby/object:Libv8::Node::Location::Vendor {}' >ext/libv8-node/.location.yml ··· 230 pname = "discourse-assets"; 231 inherit version src; 232 233 + pnpmDeps = pnpm_9.fetchDeps { 234 + pname = "discourse-assets"; 235 + inherit version src; 236 + hash = "sha256-WyRBnuKCl5NJLtqy3HK/sJcrpMkh0PjbasGPNDV6+7Y="; 237 }; 238 239 nativeBuildInputs = runtimeDeps ++ [ ··· 241 redis 242 uglify-js 243 terser 244 jq 245 moreutils 246 + nodejs 247 + pnpm_9.configHook 248 ]; 249 250 outputs = [ ··· 280 # run. This means that Redis and PostgreSQL has to be running and 281 # database migrations performed. 282 preBuild = '' 283 # Patch before running postinstall hook script 284 patchShebangs node_modules/ 285 patchShebangs --build app/assets/javascripts 286 export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt 287 288 redis-server >/dev/null & ··· 328 329 runHook postInstall 330 ''; 331 + 332 + # The node_modules output by design has broken symlinks, as it refers to the source code. 333 + # They are resolved in the primary discourse derivation. 334 + dontCheckForBrokenSymlinks = true; 335 }; 336 337 discourse = stdenv.mkDerivation { ··· 406 ln -sf /var/lib/discourse/tmp $out/share/discourse/tmp 407 ln -sf /run/discourse/config $out/share/discourse/config 408 ln -sf /run/discourse/public $out/share/discourse/public 409 + ln -sf ${assets.node_modules} $out/share/discourse/node_modules 410 ln -sf ${assets} $out/share/discourse/public.dist/assets 411 rm -r $out/share/discourse/app/assets/javascripts 412 + # This needs to be copied because it contains symlinks to node_modules 413 + cp -r ${assets.javascripts} $out/share/discourse/app/assets/javascripts 414 ${lib.concatMapStringsSep "\n" ( 415 p: "ln -sf ${p} $out/share/discourse/plugins/${p.pluginName or ""}" 416 ) plugins} ··· 446 maintainers = with maintainers; [ talyz ]; 447 license = licenses.gpl2Plus; 448 description = "Discourse is an open source discussion platform"; 449 }; 450 }; 451 in
+18 -16
pkgs/servers/web-apps/discourse/prebuild-theme-transpiler.patch
··· 1 diff --git a/lib/discourse_js_processor.rb b/lib/discourse_js_processor.rb 2 - index 26d142fa4d..6040aba6f4 100644 3 --- a/lib/discourse_js_processor.rb 4 +++ b/lib/discourse_js_processor.rb 5 - @@ -68,7 +68,7 @@ class DiscourseJsProcessor 6 - TRANSPILER_PATH = 7 - ( 8 - if Rails.env.production? 9 - - "tmp/theme-transpiler.js" 10 - + "app/assets/javascripts/theme-transpiler.js" 11 - else 12 - "tmp/theme-transpiler/#{Process.pid}.js" 13 - end 14 - @@ -87,6 +87,6 @@ class DiscourseJsProcessor 15 - "node", 16 - "app/assets/javascripts/theme-transpiler/build.js", 17 - TRANSPILER_PATH, 18 - - ) 19 - + ) if !Rails.env.production? or !File.file?(TRANSPILER_PATH) 20 TRANSPILER_PATH 21 end
··· 1 diff --git a/lib/discourse_js_processor.rb b/lib/discourse_js_processor.rb 2 + index f1642386c5..5a672818da 100644 3 --- a/lib/discourse_js_processor.rb 4 +++ b/lib/discourse_js_processor.rb 5 + @@ -54,7 +54,7 @@ class DiscourseJsProcessor 6 + end 7 + 8 + class Transpiler 9 + - TRANSPILER_PATH = "tmp/theme-transpiler.js" 10 + + TRANSPILER_PATH = "app/assets/javascripts/theme-transpiler.js" 11 + 12 + @mutex = Mutex.new 13 + @ctx_init = Mutex.new 14 + @@ -75,7 +75,9 @@ class DiscourseJsProcessor 15 + end 16 + 17 + def self.build_production_theme_transpiler 18 + - File.write(TRANSPILER_PATH, build_theme_transpiler) 19 + + if (!Rails.env.production? or !File.file?(TRANSPILER_PATH)) 20 + + File.write(TRANSPILER_PATH, build_theme_transpiler) 21 + + end 22 TRANSPILER_PATH 23 end
+30 -14
pkgs/servers/web-apps/discourse/rubyEnv/Gemfile
··· 6 7 gem "bootsnap", require: false, platform: :mri 8 9 - gem "actionmailer", "~> 7.1.0" 10 - gem "actionpack", "~> 7.1.0" 11 - gem "actionview", "~> 7.1.0" 12 - gem "activemodel", "~> 7.1.0" 13 - gem "activerecord", "~> 7.1.0" 14 - gem "activesupport", "~> 7.1.0" 15 - gem "railties", "~> 7.1.0" 16 gem "sprockets-rails" 17 18 gem "json" ··· 99 gem "mini_scheduler" 100 101 gem "execjs", require: false 102 - gem "mini_racer" 103 104 gem "highline", require: false 105 ··· 158 159 gem "syntax_tree" 160 gem "syntax_tree-disable_ternary" 161 end 162 163 group :development do ··· 241 gem "reverse_markdown" 242 gem "tiny_tds" 243 gem "csv" 244 - 245 - gem "parallel", require: false 246 end 247 248 group :generic_import, optional: true do ··· 269 gem "tzinfo-data" 270 gem "csv", require: false 271 272 - # TODO: Can be removed once we upgrade to Rails 7.1 273 - gem "mutex_m" 274 - gem "drb" 275 - 276 # dependencies for the automation plugin 277 gem "iso8601" 278 gem "rrule"
··· 6 7 gem "bootsnap", require: false, platform: :mri 8 9 + gem "actionmailer", "~> 7.2.0" 10 + gem "actionpack", "~> 7.2.0" 11 + gem "actionview", "~> 7.2.0" 12 + gem "activemodel", "~> 7.2.0" 13 + gem "activerecord", "~> 7.2.0" 14 + gem "activesupport", "~> 7.2.0" 15 + gem "railties", "~> 7.2.0" 16 gem "sprockets-rails" 17 18 gem "json" ··· 99 gem "mini_scheduler" 100 101 gem "execjs", require: false 102 + gem "mini_racer", "0.17.pre13" 103 104 gem "highline", require: false 105 ··· 158 159 gem "syntax_tree" 160 gem "syntax_tree-disable_ternary" 161 + 162 + gem "rspec-multi-mock" 163 end 164 165 group :development do ··· 243 gem "reverse_markdown" 244 gem "tiny_tds" 245 gem "csv" 246 end 247 248 group :generic_import, optional: true do ··· 269 gem "tzinfo-data" 270 gem "csv", require: false 271 272 # dependencies for the automation plugin 273 gem "iso8601" 274 gem "rrule" 275 + 276 + group :migrations, optional: true do 277 + gem "extralite-bundle", require: "extralite" 278 + 279 + # auto-loading 280 + gem "zeitwerk" 281 + 282 + # databases 283 + gem "trilogy" 284 + 285 + # CLI 286 + gem "ruby-progressbar" 287 + 288 + # non-cryptographic hashing algorithm for generating placeholder IDs 289 + gem "digest-xxhash" 290 + end 291 + 292 + gem "dry-initializer", "~> 3.1" 293 + 294 + gem "parallel"
+206 -183
pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock
··· 1 GEM 2 remote: https://rubygems.org/ 3 specs: 4 - actionmailer (7.1.3.4) 5 - actionpack (= 7.1.3.4) 6 - actionview (= 7.1.3.4) 7 - activejob (= 7.1.3.4) 8 - activesupport (= 7.1.3.4) 9 - mail (~> 2.5, >= 2.5.4) 10 - net-imap 11 - net-pop 12 - net-smtp 13 rails-dom-testing (~> 2.2) 14 - actionpack (7.1.3.4) 15 - actionview (= 7.1.3.4) 16 - activesupport (= 7.1.3.4) 17 nokogiri (>= 1.8.5) 18 racc 19 - rack (>= 2.2.4) 20 rack-session (>= 1.0.1) 21 rack-test (>= 0.6.3) 22 rails-dom-testing (~> 2.2) 23 rails-html-sanitizer (~> 1.6) 24 - actionview (7.1.3.4) 25 - activesupport (= 7.1.3.4) 26 builder (~> 3.1) 27 erubi (~> 1.11) 28 rails-dom-testing (~> 2.2) ··· 31 actionview (>= 6.0.a) 32 active_model_serializers (0.8.4) 33 activemodel (>= 3.0) 34 - activejob (7.1.3.4) 35 - activesupport (= 7.1.3.4) 36 globalid (>= 0.3.6) 37 - activemodel (7.1.3.4) 38 - activesupport (= 7.1.3.4) 39 - activerecord (7.1.3.4) 40 - activemodel (= 7.1.3.4) 41 - activesupport (= 7.1.3.4) 42 timeout (>= 0.4.0) 43 - activesupport (7.1.3.4) 44 base64 45 bigdecimal 46 - concurrent-ruby (~> 1.0, >= 1.0.2) 47 connection_pool (>= 2.2.5) 48 drb 49 i18n (>= 1.6, < 2) 50 minitest (>= 5.1) 51 - mutex_m 52 - tzinfo (~> 2.0) 53 addressable (2.8.7) 54 public_suffix (>= 2.0.2, < 7.0) 55 annotate (3.2.0) ··· 76 aws-sigv4 (1.8.0) 77 aws-eventstream (~> 1, >= 1.0.2) 78 base64 (0.2.0) 79 better_errors (2.10.1) 80 erubi (>= 1.0.0) 81 rack (>= 0.9.0) 82 rouge (>= 1.0.0) 83 - bigdecimal (3.1.8) 84 binding_of_caller (1.0.1) 85 debug_inspector (>= 1.2.0) 86 - bootsnap (1.18.3) 87 msgpack (~> 1.2) 88 builder (3.3.0) 89 - bullet (7.2.0) 90 activesupport (>= 3.0.0) 91 uniform_notifier (~> 1.11) 92 byebug (11.1.3) ··· 104 cgi (0.4.1) 105 chunky_png (1.4.0) 106 coderay (1.1.3) 107 - colored2 (4.0.0) 108 - concurrent-ruby (1.3.3) 109 - connection_pool (2.4.1) 110 - cose (1.3.0) 111 cbor (~> 0.5.9) 112 openssl-signature_algorithm (~> 1.0) 113 - cppjieba_rb (0.4.2) 114 crack (1.0.0) 115 bigdecimal 116 rexml 117 crass (1.0.6) 118 - css_parser (1.17.1) 119 addressable 120 - csv (3.3.0) 121 - date (3.3.4) 122 debug_inspector (1.2.0) 123 diff-lcs (1.5.1) 124 - diffy (3.4.2) 125 - digest (3.1.1) 126 - discourse-fonts (0.0.9) 127 discourse-seed-fu (2.3.12) 128 activerecord (>= 3.1) 129 activesupport (>= 3.1) ··· 132 literate_randomizer 133 docile (1.4.1) 134 drb (2.2.1) 135 - email_reply_trimmer (0.1.13) 136 - erubi (1.13.0) 137 - excon (0.111.0) 138 - execjs (2.9.1) 139 - exifr (1.4.0) 140 fabrication (2.31.0) 141 faker (2.23.0) 142 i18n (>= 1.8.11, < 2) 143 fakeweb (1.3.0) 144 - faraday (2.10.0) 145 - faraday-net_http (>= 2.0, < 3.2) 146 logger 147 - faraday-net_http (3.1.1) 148 - net-http 149 faraday-retry (2.2.1) 150 faraday (~> 2.0) 151 fast_blank (1.0.1) 152 fastimage (2.3.1) 153 - ffi (1.17.0) 154 - ffi (1.17.0-arm64-darwin) 155 - ffi (1.17.0-x86_64-darwin) 156 fspath (3.1.2) 157 globalid (1.2.1) 158 activesupport (>= 6.1) 159 - google-protobuf (4.27.2) 160 bigdecimal 161 rake (>= 13) 162 - google-protobuf (4.27.2-arm64-darwin) 163 bigdecimal 164 rake (>= 13) 165 - google-protobuf (4.27.2-x86_64-darwin) 166 bigdecimal 167 rake (>= 13) 168 guess_html_encoding (0.0.11) 169 hana (1.3.7) 170 - hashdiff (1.1.0) 171 hashie (5.0.0) 172 - highline (3.1.0) 173 reline 174 htmlentities (4.3.4) 175 http_accept_language (2.1.1) 176 - i18n (1.14.5) 177 concurrent-ruby (~> 1.0) 178 - image_optim (0.31.3) 179 exifr (~> 1.2, >= 1.2.2) 180 fspath (~> 3.0) 181 image_size (>= 1.5, < 4) ··· 183 progress (~> 3.0, >= 3.0.1) 184 image_size (3.4.0) 185 in_threads (1.6.0) 186 - io-console (0.7.2) 187 - irb (1.14.0) 188 rdoc (>= 4.0.0) 189 reline (>= 0.4.2) 190 iso8601 (0.13.0) 191 jmespath (1.6.2) 192 - json (2.7.2) 193 - json-schema (4.3.1) 194 - addressable (>= 2.8) 195 - json_schemer (2.3.0) 196 bigdecimal 197 hana (~> 1.3) 198 regexp_parser (~> 2.0) 199 simpleidn (~> 0.2) 200 - jwt (2.8.2) 201 base64 202 kgio (2.11.4) 203 - language_server-protocol (3.17.0.3) 204 - libv8-node (18.19.0.0) 205 - libv8-node (18.19.0.0-arm64-darwin) 206 - libv8-node (18.19.0.0-x86_64-darwin) 207 listen (3.9.0) 208 rb-fsevent (~> 0.10, >= 0.10.3) 209 rb-inotify (~> 0.9, >= 0.9.10) 210 literate_randomizer (0.4.0) 211 - logger (1.6.0) 212 lograge (0.14.0) 213 actionpack (>= 4) 214 activesupport (>= 4) ··· 216 request_store (~> 1.0) 217 logstash-event (1.2.02) 218 logster (2.20.0) 219 - loofah (2.22.0) 220 crass (~> 1.0.2) 221 nokogiri (>= 1.12.0) 222 lru_redux (1.1.0) ··· 228 net-smtp 229 matrix (0.4.2) 230 maxminddb (0.1.22) 231 - memory_profiler (1.0.2) 232 message_bus (4.3.8) 233 rack (>= 1.1.3) 234 messageformat-wrapper (1.1.0) 235 mini_racer (>= 0.6.3) 236 method_source (1.1.0) 237 mini_mime (1.1.5) 238 - mini_portile2 (2.8.7) 239 - mini_racer (0.14.1) 240 - libv8-node (~> 18.19.0.0) 241 - mini_scheduler (0.16.0) 242 - sidekiq (>= 4.2.3, < 7.0) 243 - mini_sql (1.5.0) 244 mini_suffix (0.3.3) 245 ffi (~> 1.9) 246 minio_runner (0.1.2) 247 - minitest (5.24.1) 248 - mocha (2.4.5) 249 ruby2_keywords (>= 0.0.5) 250 - msgpack (1.7.2) 251 multi_json (1.15.0) 252 multi_xml (0.7.1) 253 bigdecimal (~> 3.1) 254 mustache (1.1.1) 255 - mutex_m (0.2.0) 256 - net-http (0.4.1) 257 uri 258 - net-imap (0.4.14) 259 date 260 net-protocol 261 net-pop (0.1.2) ··· 264 timeout 265 net-smtp (0.5.0) 266 net-protocol 267 - nio4r (2.7.3) 268 - nokogiri (1.16.7) 269 mini_portile2 (~> 2.8.2) 270 racc (~> 1.4) 271 - nokogiri (1.16.7-arm64-darwin) 272 racc (~> 1.4) 273 - nokogiri (1.16.7-x86_64-darwin) 274 racc (~> 1.4) 275 oauth (1.1.0) 276 oauth-tty (~> 1.0, >= 1.0.1) ··· 284 multi_json (~> 1.3) 285 multi_xml (~> 0.5) 286 rack (>= 1.2, < 4) 287 - oj (3.16.4) 288 bigdecimal (>= 3.0) 289 omniauth (1.9.2) 290 hashie (>= 3.4.6) 291 rack (>= 1.6.2, < 3) ··· 299 oauth2 (~> 1.1) 300 omniauth (~> 1.1) 301 omniauth-oauth2 (>= 1.6) 302 - omniauth-oauth (1.2.0) 303 oauth 304 omniauth (>= 1.0, < 3) 305 omniauth-oauth2 (1.7.3) 306 oauth2 (>= 1.4, < 3) 307 omniauth (>= 1.9, < 3) 308 omniauth-twitter (1.4.0) 309 omniauth-oauth (~> 1.1) 310 rack 311 - openssl (3.2.0) 312 openssl-signature_algorithm (1.3.0) 313 openssl (> 2.0) 314 - optimist (3.1.0) 315 - parallel (1.25.1) 316 - parallel_tests (4.7.1) 317 parallel 318 - parser (3.3.4.0) 319 ast (~> 2.4.1) 320 racc 321 - pg (1.5.4) 322 prettier_print (1.2.1) 323 progress (3.6.0) 324 pry (0.14.2) 325 coderay (~> 1.1) ··· 332 pry-stack_explorer (0.6.1) 333 binding_of_caller (~> 1.0) 334 pry (~> 0.13) 335 - psych (5.1.2) 336 stringio 337 public_suffix (6.0.1) 338 - puma (6.4.2) 339 nio4r (~> 2.0) 340 - racc (1.8.0) 341 - rack (2.2.9) 342 rack-mini-profiler (3.3.1) 343 rack (>= 1.2.0) 344 rack-protection (3.2.0) ··· 346 rack (~> 2.2, >= 2.2.4) 347 rack-session (1.0.2) 348 rack (< 3) 349 - rack-test (2.1.0) 350 rack (>= 1.3) 351 - rackup (1.0.0) 352 rack (< 3) 353 webrick 354 rails-dom-testing (2.2.0) 355 activesupport (>= 5.0.0) 356 minitest 357 nokogiri (>= 1.6) 358 - rails-html-sanitizer (1.6.0) 359 loofah (~> 2.21) 360 - nokogiri (~> 1.14) 361 - rails_failover (2.1.1) 362 activerecord (>= 6.1, < 8.0) 363 concurrent-ruby 364 railties (>= 6.1, < 8.0) 365 - rails_multisite (6.0.0) 366 activerecord (>= 6.0) 367 railties (>= 6.0) 368 - railties (7.1.3.4) 369 - actionpack (= 7.1.3.4) 370 - activesupport (= 7.1.3.4) 371 - irb 372 rackup (>= 1.0.0) 373 rake (>= 12.2) 374 thor (~> 1.0, >= 1.2.2) ··· 383 ffi (>= 1.0.6) 384 msgpack (>= 0.4.3) 385 optimist (>= 3.0.0) 386 - rchardet (1.8.0) 387 - rdoc (6.7.0) 388 psych (>= 4.0.0) 389 redcarpet (3.6.0) 390 redis (4.8.1) 391 redis-namespace (1.11.0) 392 redis (>= 4) 393 - regexp_parser (2.9.2) 394 - reline (0.5.9) 395 io-console (~> 0.5) 396 request_store (1.7.0) 397 rack (>= 1.4) 398 - rexml (3.3.2) 399 - strscan 400 rinku (2.0.6) 401 rotp (6.3.0) 402 - rouge (4.3.0) 403 rqrcode (2.2.0) 404 chunky_png (~> 1.0) 405 rqrcode_core (~> 1.0) ··· 410 rspec-core (~> 3.13.0) 411 rspec-expectations (~> 3.13.0) 412 rspec-mocks (~> 3.13.0) 413 - rspec-core (3.13.0) 414 rspec-support (~> 3.13.0) 415 - rspec-expectations (3.13.1) 416 diff-lcs (>= 1.2.0, < 2.0) 417 rspec-support (~> 3.13.0) 418 rspec-html-matchers (0.10.0) 419 nokogiri (~> 1) 420 rspec (>= 3.0.0.a) 421 - rspec-mocks (3.13.1) 422 diff-lcs (>= 1.2.0, < 2.0) 423 rspec-support (~> 3.13.0) 424 - rspec-rails (6.1.3) 425 - actionpack (>= 6.1) 426 - activesupport (>= 6.1) 427 - railties (>= 6.1) 428 rspec-core (~> 3.13) 429 rspec-expectations (~> 3.13) 430 rspec-mocks (~> 3.13) 431 rspec-support (~> 3.13) 432 - rspec-support (3.13.1) 433 - rss (0.3.0) 434 rexml 435 - rswag-specs (2.13.0) 436 - activesupport (>= 3.1, < 7.2) 437 - json-schema (>= 2.2, < 5.0) 438 - railties (>= 3.1, < 7.2) 439 rspec-core (>= 2.14) 440 rtlcss (0.2.1) 441 mini_racer (>= 0.6.3) 442 - rubocop (1.65.0) 443 json (~> 2.3) 444 language_server-protocol (>= 3.17.0) 445 parallel (~> 1.10) 446 parser (>= 3.3.0.2) 447 rainbow (>= 2.2.2, < 4.0) 448 - regexp_parser (>= 2.4, < 3.0) 449 - rexml (>= 3.2.5, < 4.0) 450 - rubocop-ast (>= 1.31.1, < 2.0) 451 ruby-progressbar (~> 1.7) 452 - unicode-display_width (>= 2.4.0, < 3.0) 453 - rubocop-ast (1.31.3) 454 parser (>= 3.3.1.0) 455 rubocop-capybara (2.21.0) 456 rubocop (~> 1.41) 457 - rubocop-discourse (3.8.1) 458 activesupport (>= 6.1) 459 rubocop (>= 1.59.0) 460 rubocop-capybara (>= 2.0.0) ··· 464 rubocop-rspec_rails (>= 2.30.0) 465 rubocop-factory_bot (2.26.1) 466 rubocop (~> 1.61) 467 - rubocop-rails (2.25.1) 468 activesupport (>= 4.2.0) 469 rack (>= 1.1) 470 - rubocop (>= 1.33.0, < 2.0) 471 rubocop-ast (>= 1.31.1, < 2.0) 472 - rubocop-rspec (3.0.3) 473 rubocop (~> 1.61) 474 rubocop-rspec_rails (2.30.0) 475 rubocop (~> 1.61) 476 rubocop-rspec (~> 3, >= 3.0.1) 477 - ruby-prof (1.7.0) 478 ruby-progressbar (1.13.0) 479 - ruby-readability (0.7.1) 480 guess_html_encoding (>= 0.0.4) 481 nokogiri (>= 1.6.0) 482 ruby2_keywords (0.0.5) 483 - rubyzip (2.3.2) 484 - sanitize (6.1.2) 485 crass (~> 1.0.2) 486 - nokogiri (>= 1.12.0) 487 sass-embedded (1.77.5) 488 google-protobuf (>= 3.25, < 5.0) 489 rake (>= 13) ··· 493 google-protobuf (>= 3.25, < 5.0) 494 sassc-embedded (1.77.7) 495 sass-embedded (~> 1.77) 496 - selenium-devtools (0.126.0) 497 selenium-webdriver (~> 4.2) 498 - selenium-webdriver (4.23.0) 499 base64 (~> 0.2) 500 logger (~> 1.4) 501 rexml (~> 3.2, >= 3.2.5) 502 rubyzip (>= 1.2.2, < 3.0) 503 websocket (~> 1.0) 504 - shoulda-matchers (6.2.0) 505 activesupport (>= 5.2.0) 506 sidekiq (6.5.12) 507 connection_pool (>= 2.2.5, < 3) ··· 511 docile (~> 1.1) 512 simplecov-html (~> 0.11) 513 simplecov_json_formatter (~> 0.1) 514 - simplecov-html (0.12.3) 515 simplecov_json_formatter (0.1.4) 516 simpleidn (0.2.3) 517 snaky_hash (2.0.1) 518 hashie 519 version_gem (~> 1.1, >= 1.1.1) 520 - sprockets (3.7.3) 521 base64 522 concurrent-ruby (~> 1.0) 523 rack (> 1, < 3) 524 - sprockets-rails (3.5.1) 525 actionpack (>= 6.1) 526 activesupport (>= 6.1) 527 sprockets (>= 3.0.0) 528 - sqlite3 (2.0.2) 529 mini_portile2 (~> 2.8.0) 530 - sqlite3 (2.0.2-arm64-darwin) 531 - sqlite3 (2.0.2-x86_64-darwin) 532 sshkey (3.0.0) 533 - stackprof (0.2.26) 534 - stringio (3.1.1) 535 - strscan (3.1.0) 536 syntax_tree (6.2.0) 537 prettier_print (>= 1.2.0) 538 syntax_tree-disable_ternary (1.0.0) 539 - test-prof (1.3.3.1) 540 - thor (1.3.1) 541 - timeout (0.4.1) 542 tzinfo (2.0.6) 543 concurrent-ruby (~> 1.0) 544 - tzinfo-data (1.2024.1) 545 tzinfo (>= 1.0.0) 546 - uglifier (4.2.0) 547 execjs (>= 0.3.0, < 3) 548 - unf (0.1.4) 549 - unf_ext 550 - unf_ext (0.0.9.1) 551 - unicode-display_width (2.5.0) 552 unicorn (6.1.0) 553 kgio (~> 2.6) 554 raindrops (~> 0.7) 555 uniform_notifier (1.16.0) 556 - uri (0.13.0) 557 version_gem (1.1.4) 558 web-push (3.0.1) 559 jwt (~> 2.0) 560 openssl (~> 3.0) 561 - webmock (3.23.1) 562 addressable (>= 2.8.0) 563 crack (>= 0.3.2) 564 hashdiff (>= 0.4.0, < 2.0.0) 565 - webrick (1.8.1) 566 websocket (1.2.11) 567 xpath (3.2.0) 568 nokogiri (~> 1.8) 569 yaml-lint (0.1.2) 570 - yard (0.9.36) 571 - zeitwerk (2.6.16) 572 573 PLATFORMS 574 arm64-darwin-21 ··· 577 arm64-darwin-24 578 ruby 579 x86_64-darwin-22 580 581 DEPENDENCIES 582 - actionmailer (~> 7.1.0) 583 - actionpack (~> 7.1.0) 584 - actionview (~> 7.1.0) 585 actionview_precompiler 586 active_model_serializers (~> 0.8.3) 587 - activemodel (~> 7.1.0) 588 - activerecord (~> 7.1.0) 589 - activesupport (~> 7.1.0) 590 addressable 591 annotate 592 aws-sdk-s3 ··· 607 csv 608 diffy 609 digest 610 discourse-fonts 611 discourse-seed-fu 612 discourse_dev_assets 613 - drb 614 email_reply_trimmer 615 excon 616 execjs 617 fabrication 618 faker (~> 2.16) 619 fakeweb ··· 641 message_bus 642 messageformat-wrapper 643 mini_mime 644 - mini_racer 645 mini_scheduler 646 mini_sql 647 mini_suffix ··· 649 mocha 650 multi_json 651 mustache 652 - mutex_m 653 net-http 654 net-imap 655 net-pop ··· 662 omniauth-google-oauth2 663 omniauth-oauth2 664 omniauth-twitter 665 parallel_tests 666 pg 667 pry-byebug ··· 674 rails-dom-testing 675 rails_failover 676 rails_multisite 677 - railties (~> 7.1.0) 678 rake 679 rb-fsevent 680 rbtrace ··· 688 rrule 689 rspec 690 rspec-html-matchers 691 rspec-rails 692 rss 693 rswag-specs 694 rtlcss 695 rubocop-discourse 696 ruby-prof 697 ruby-readability 698 rubyzip 699 sanitize ··· 712 syntax_tree-disable_ternary 713 test-prof 714 thor 715 tzinfo-data 716 uglifier 717 unf ··· 720 webmock 721 yaml-lint 722 yard 723 724 BUNDLED WITH 725 - 2.4.22
··· 1 GEM 2 remote: https://rubygems.org/ 3 specs: 4 + actionmailer (7.2.2.1) 5 + actionpack (= 7.2.2.1) 6 + actionview (= 7.2.2.1) 7 + activejob (= 7.2.2.1) 8 + activesupport (= 7.2.2.1) 9 + mail (>= 2.8.0) 10 rails-dom-testing (~> 2.2) 11 + actionpack (7.2.2.1) 12 + actionview (= 7.2.2.1) 13 + activesupport (= 7.2.2.1) 14 nokogiri (>= 1.8.5) 15 racc 16 + rack (>= 2.2.4, < 3.2) 17 rack-session (>= 1.0.1) 18 rack-test (>= 0.6.3) 19 rails-dom-testing (~> 2.2) 20 rails-html-sanitizer (~> 1.6) 21 + useragent (~> 0.16) 22 + actionview (7.2.2.1) 23 + activesupport (= 7.2.2.1) 24 builder (~> 3.1) 25 erubi (~> 1.11) 26 rails-dom-testing (~> 2.2) ··· 29 actionview (>= 6.0.a) 30 active_model_serializers (0.8.4) 31 activemodel (>= 3.0) 32 + activejob (7.2.2.1) 33 + activesupport (= 7.2.2.1) 34 globalid (>= 0.3.6) 35 + activemodel (7.2.2.1) 36 + activesupport (= 7.2.2.1) 37 + activerecord (7.2.2.1) 38 + activemodel (= 7.2.2.1) 39 + activesupport (= 7.2.2.1) 40 timeout (>= 0.4.0) 41 + activesupport (7.2.2.1) 42 base64 43 + benchmark (>= 0.3) 44 bigdecimal 45 + concurrent-ruby (~> 1.0, >= 1.3.1) 46 connection_pool (>= 2.2.5) 47 drb 48 i18n (>= 1.6, < 2) 49 + logger (>= 1.4.2) 50 minitest (>= 5.1) 51 + securerandom (>= 0.3) 52 + tzinfo (~> 2.0, >= 2.0.5) 53 addressable (2.8.7) 54 public_suffix (>= 2.0.2, < 7.0) 55 annotate (3.2.0) ··· 76 aws-sigv4 (1.8.0) 77 aws-eventstream (~> 1, >= 1.0.2) 78 base64 (0.2.0) 79 + benchmark (0.4.0) 80 better_errors (2.10.1) 81 erubi (>= 1.0.0) 82 rack (>= 0.9.0) 83 rouge (>= 1.0.0) 84 + bigdecimal (3.1.9) 85 binding_of_caller (1.0.1) 86 debug_inspector (>= 1.2.0) 87 + bootsnap (1.18.4) 88 msgpack (~> 1.2) 89 builder (3.3.0) 90 + bullet (8.0.0) 91 activesupport (>= 3.0.0) 92 uniform_notifier (~> 1.11) 93 byebug (11.1.3) ··· 105 cgi (0.4.1) 106 chunky_png (1.4.0) 107 coderay (1.1.3) 108 + colored2 (4.0.3) 109 + concurrent-ruby (1.3.5) 110 + connection_pool (2.5.0) 111 + cose (1.3.1) 112 cbor (~> 0.5.9) 113 openssl-signature_algorithm (~> 1.0) 114 + cppjieba_rb (0.4.4) 115 crack (1.0.0) 116 bigdecimal 117 rexml 118 crass (1.0.6) 119 + css_parser (1.21.0) 120 addressable 121 + csv (3.3.2) 122 + date (3.4.1) 123 debug_inspector (1.2.0) 124 diff-lcs (1.5.1) 125 + diffy (3.4.3) 126 + digest (3.2.0) 127 + digest-xxhash (0.2.9) 128 + discourse-fonts (0.0.18) 129 discourse-seed-fu (2.3.12) 130 activerecord (>= 3.1) 131 activesupport (>= 3.1) ··· 134 literate_randomizer 135 docile (1.4.1) 136 drb (2.2.1) 137 + dry-initializer (3.2.0) 138 + email_reply_trimmer (0.2.0) 139 + erubi (1.13.1) 140 + excon (1.2.3) 141 + execjs (2.10.0) 142 + exifr (1.4.1) 143 + extralite-bundle (2.8.2) 144 fabrication (2.31.0) 145 faker (2.23.0) 146 i18n (>= 1.8.11, < 2) 147 fakeweb (1.3.0) 148 + faraday (2.12.2) 149 + faraday-net_http (>= 2.0, < 3.5) 150 + json 151 logger 152 + faraday-net_http (3.4.0) 153 + net-http (>= 0.5.0) 154 faraday-retry (2.2.1) 155 faraday (~> 2.0) 156 fast_blank (1.0.1) 157 fastimage (2.3.1) 158 + ffi (1.17.1) 159 + ffi (1.17.1-arm64-darwin) 160 + ffi (1.17.1-x86_64-darwin) 161 fspath (3.1.2) 162 globalid (1.2.1) 163 activesupport (>= 6.1) 164 + google-protobuf (4.29.3) 165 bigdecimal 166 rake (>= 13) 167 + google-protobuf (4.29.3-arm64-darwin) 168 bigdecimal 169 rake (>= 13) 170 + google-protobuf (4.29.3-x86_64-darwin) 171 bigdecimal 172 rake (>= 13) 173 guess_html_encoding (0.0.11) 174 hana (1.3.7) 175 + hashdiff (1.1.2) 176 hashie (5.0.0) 177 + highline (3.1.2) 178 reline 179 htmlentities (4.3.4) 180 http_accept_language (2.1.1) 181 + i18n (1.14.7) 182 concurrent-ruby (~> 1.0) 183 + image_optim (0.31.4) 184 exifr (~> 1.2, >= 1.2.2) 185 fspath (~> 3.0) 186 image_size (>= 1.5, < 4) ··· 188 progress (~> 3.0, >= 3.0.1) 189 image_size (3.4.0) 190 in_threads (1.6.0) 191 + io-console (0.8.0) 192 + irb (1.15.1) 193 + pp (>= 0.6.0) 194 rdoc (>= 4.0.0) 195 reline (>= 0.4.2) 196 iso8601 (0.13.0) 197 jmespath (1.6.2) 198 + json (2.9.1) 199 + json-schema (5.1.1) 200 + addressable (~> 2.8) 201 + bigdecimal (~> 3.1) 202 + json_schemer (2.4.0) 203 bigdecimal 204 hana (~> 1.3) 205 regexp_parser (~> 2.0) 206 simpleidn (~> 0.2) 207 + jwt (2.10.1) 208 base64 209 kgio (2.11.4) 210 + language_server-protocol (3.17.0.4) 211 + libv8-node (22.7.0.4) 212 + libv8-node (22.7.0.4-arm64-darwin) 213 + libv8-node (22.7.0.4-x86_64-darwin) 214 listen (3.9.0) 215 rb-fsevent (~> 0.10, >= 0.10.3) 216 rb-inotify (~> 0.9, >= 0.9.10) 217 literate_randomizer (0.4.0) 218 + logger (1.6.5) 219 lograge (0.14.0) 220 actionpack (>= 4) 221 activesupport (>= 4) ··· 223 request_store (~> 1.0) 224 logstash-event (1.2.02) 225 logster (2.20.0) 226 + loofah (2.24.0) 227 crass (~> 1.0.2) 228 nokogiri (>= 1.12.0) 229 lru_redux (1.1.0) ··· 235 net-smtp 236 matrix (0.4.2) 237 maxminddb (0.1.22) 238 + memory_profiler (1.1.0) 239 message_bus (4.3.8) 240 rack (>= 1.1.3) 241 messageformat-wrapper (1.1.0) 242 mini_racer (>= 0.6.3) 243 method_source (1.1.0) 244 mini_mime (1.1.5) 245 + mini_portile2 (2.8.8) 246 + mini_racer (0.17.0.pre13) 247 + libv8-node (~> 22.7.0.4) 248 + mini_scheduler (0.18.0) 249 + sidekiq (>= 6.5, < 8.0) 250 + mini_sql (1.6.0) 251 mini_suffix (0.3.3) 252 ffi (~> 1.9) 253 minio_runner (0.1.2) 254 + minitest (5.25.4) 255 + mocha (2.7.1) 256 ruby2_keywords (>= 0.0.5) 257 + msgpack (1.7.5) 258 multi_json (1.15.0) 259 multi_xml (0.7.1) 260 bigdecimal (~> 3.1) 261 mustache (1.1.1) 262 + net-http (0.6.0) 263 uri 264 + net-imap (0.5.5) 265 date 266 net-protocol 267 net-pop (0.1.2) ··· 270 timeout 271 net-smtp (0.5.0) 272 net-protocol 273 + nio4r (2.7.4) 274 + nokogiri (1.18.2) 275 mini_portile2 (~> 2.8.2) 276 racc (~> 1.4) 277 + nokogiri (1.18.2-arm64-darwin) 278 racc (~> 1.4) 279 + nokogiri (1.18.2-x86_64-darwin) 280 racc (~> 1.4) 281 oauth (1.1.0) 282 oauth-tty (~> 1.0, >= 1.0.1) ··· 290 multi_json (~> 1.3) 291 multi_xml (~> 0.5) 292 rack (>= 1.2, < 4) 293 + oj (3.16.9) 294 bigdecimal (>= 3.0) 295 + ostruct (>= 0.2) 296 omniauth (1.9.2) 297 hashie (>= 3.4.6) 298 rack (>= 1.6.2, < 3) ··· 306 oauth2 (~> 1.1) 307 omniauth (~> 1.1) 308 omniauth-oauth2 (>= 1.6) 309 + omniauth-oauth (1.2.1) 310 oauth 311 omniauth (>= 1.0, < 3) 312 + rack (>= 1.6.2, < 4) 313 omniauth-oauth2 (1.7.3) 314 oauth2 (>= 1.4, < 3) 315 omniauth (>= 1.9, < 3) 316 omniauth-twitter (1.4.0) 317 omniauth-oauth (~> 1.1) 318 rack 319 + openssl (3.3.0) 320 openssl-signature_algorithm (1.3.0) 321 openssl (> 2.0) 322 + optimist (3.2.0) 323 + ostruct (0.6.1) 324 + parallel (1.26.3) 325 + parallel_tests (4.9.0) 326 parallel 327 + parser (3.3.7.0) 328 ast (~> 2.4.1) 329 racc 330 + pg (1.5.9) 331 + pp (0.6.2) 332 + prettyprint 333 prettier_print (1.2.1) 334 + prettyprint (0.2.0) 335 progress (3.6.0) 336 pry (0.14.2) 337 coderay (~> 1.1) ··· 344 pry-stack_explorer (0.6.1) 345 binding_of_caller (~> 1.0) 346 pry (~> 0.13) 347 + psych (5.2.3) 348 + date 349 stringio 350 public_suffix (6.0.1) 351 + puma (6.6.0) 352 nio4r (~> 2.0) 353 + racc (1.8.1) 354 + rack (2.2.10) 355 rack-mini-profiler (3.3.1) 356 rack (>= 1.2.0) 357 rack-protection (3.2.0) ··· 359 rack (~> 2.2, >= 2.2.4) 360 rack-session (1.0.2) 361 rack (< 3) 362 + rack-test (2.2.0) 363 rack (>= 1.3) 364 + rackup (1.0.1) 365 rack (< 3) 366 webrick 367 rails-dom-testing (2.2.0) 368 activesupport (>= 5.0.0) 369 minitest 370 nokogiri (>= 1.6) 371 + rails-html-sanitizer (1.6.2) 372 loofah (~> 2.21) 373 + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) 374 + rails_failover (2.2.0) 375 activerecord (>= 6.1, < 8.0) 376 concurrent-ruby 377 railties (>= 6.1, < 8.0) 378 + rails_multisite (6.1.0) 379 activerecord (>= 6.0) 380 railties (>= 6.0) 381 + railties (7.2.2.1) 382 + actionpack (= 7.2.2.1) 383 + activesupport (= 7.2.2.1) 384 + irb (~> 1.13) 385 rackup (>= 1.0.0) 386 rake (>= 12.2) 387 thor (~> 1.0, >= 1.2.2) ··· 396 ffi (>= 1.0.6) 397 msgpack (>= 0.4.3) 398 optimist (>= 3.0.0) 399 + rchardet (1.9.0) 400 + rdoc (6.11.0) 401 psych (>= 4.0.0) 402 redcarpet (3.6.0) 403 redis (4.8.1) 404 redis-namespace (1.11.0) 405 redis (>= 4) 406 + regexp_parser (2.10.0) 407 + reline (0.6.0) 408 io-console (~> 0.5) 409 request_store (1.7.0) 410 rack (>= 1.4) 411 + rexml (3.4.0) 412 rinku (2.0.6) 413 rotp (6.3.0) 414 + rouge (4.5.1) 415 rqrcode (2.2.0) 416 chunky_png (~> 1.0) 417 rqrcode_core (~> 1.0) ··· 422 rspec-core (~> 3.13.0) 423 rspec-expectations (~> 3.13.0) 424 rspec-mocks (~> 3.13.0) 425 + rspec-core (3.13.2) 426 rspec-support (~> 3.13.0) 427 + rspec-expectations (3.13.3) 428 diff-lcs (>= 1.2.0, < 2.0) 429 rspec-support (~> 3.13.0) 430 rspec-html-matchers (0.10.0) 431 nokogiri (~> 1) 432 rspec (>= 3.0.0.a) 433 + rspec-mocks (3.13.2) 434 diff-lcs (>= 1.2.0, < 2.0) 435 rspec-support (~> 3.13.0) 436 + rspec-multi-mock (0.3.1) 437 + rspec (>= 3.7.0) 438 + rspec-rails (7.1.0) 439 + actionpack (>= 7.0) 440 + activesupport (>= 7.0) 441 + railties (>= 7.0) 442 rspec-core (~> 3.13) 443 rspec-expectations (~> 3.13) 444 rspec-mocks (~> 3.13) 445 rspec-support (~> 3.13) 446 + rspec-support (3.13.2) 447 + rss (0.3.1) 448 rexml 449 + rswag-specs (2.16.0) 450 + activesupport (>= 5.2, < 8.1) 451 + json-schema (>= 2.2, < 6.0) 452 + railties (>= 5.2, < 8.1) 453 rspec-core (>= 2.14) 454 rtlcss (0.2.1) 455 mini_racer (>= 0.6.3) 456 + rubocop (1.71.1) 457 json (~> 2.3) 458 language_server-protocol (>= 3.17.0) 459 parallel (~> 1.10) 460 parser (>= 3.3.0.2) 461 rainbow (>= 2.2.2, < 4.0) 462 + regexp_parser (>= 2.9.3, < 3.0) 463 + rubocop-ast (>= 1.38.0, < 2.0) 464 ruby-progressbar (~> 1.7) 465 + unicode-display_width (>= 2.4.0, < 4.0) 466 + rubocop-ast (1.38.0) 467 parser (>= 3.3.1.0) 468 rubocop-capybara (2.21.0) 469 rubocop (~> 1.41) 470 + rubocop-discourse (3.9.3) 471 activesupport (>= 6.1) 472 rubocop (>= 1.59.0) 473 rubocop-capybara (>= 2.0.0) ··· 477 rubocop-rspec_rails (>= 2.30.0) 478 rubocop-factory_bot (2.26.1) 479 rubocop (~> 1.61) 480 + rubocop-rails (2.29.1) 481 activesupport (>= 4.2.0) 482 rack (>= 1.1) 483 + rubocop (>= 1.52.0, < 2.0) 484 rubocop-ast (>= 1.31.1, < 2.0) 485 + rubocop-rspec (3.4.0) 486 rubocop (~> 1.61) 487 rubocop-rspec_rails (2.30.0) 488 rubocop (~> 1.61) 489 rubocop-rspec (~> 3, >= 3.0.1) 490 + ruby-prof (1.7.1) 491 ruby-progressbar (1.13.0) 492 + ruby-readability (0.7.2) 493 guess_html_encoding (>= 0.0.4) 494 nokogiri (>= 1.6.0) 495 ruby2_keywords (0.0.5) 496 + rubyzip (2.4.1) 497 + sanitize (7.0.0) 498 crass (~> 1.0.2) 499 + nokogiri (>= 1.16.8) 500 sass-embedded (1.77.5) 501 google-protobuf (>= 3.25, < 5.0) 502 rake (>= 13) ··· 506 google-protobuf (>= 3.25, < 5.0) 507 sassc-embedded (1.77.7) 508 sass-embedded (~> 1.77) 509 + securerandom (0.4.1) 510 + selenium-devtools (0.132.0) 511 selenium-webdriver (~> 4.2) 512 + selenium-webdriver (4.28.0) 513 base64 (~> 0.2) 514 logger (~> 1.4) 515 rexml (~> 3.2, >= 3.2.5) 516 rubyzip (>= 1.2.2, < 3.0) 517 websocket (~> 1.0) 518 + shoulda-matchers (6.4.0) 519 activesupport (>= 5.2.0) 520 sidekiq (6.5.12) 521 connection_pool (>= 2.2.5, < 3) ··· 525 docile (~> 1.1) 526 simplecov-html (~> 0.11) 527 simplecov_json_formatter (~> 0.1) 528 + simplecov-html (0.13.1) 529 simplecov_json_formatter (0.1.4) 530 simpleidn (0.2.3) 531 snaky_hash (2.0.1) 532 hashie 533 version_gem (~> 1.1, >= 1.1.1) 534 + sprockets (3.7.5) 535 base64 536 concurrent-ruby (~> 1.0) 537 rack (> 1, < 3) 538 + sprockets-rails (3.5.2) 539 actionpack (>= 6.1) 540 activesupport (>= 6.1) 541 sprockets (>= 3.0.0) 542 + sqlite3 (2.5.0) 543 mini_portile2 (~> 2.8.0) 544 + sqlite3 (2.5.0-arm64-darwin) 545 + sqlite3 (2.5.0-x86_64-darwin) 546 sshkey (3.0.0) 547 + stackprof (0.2.27) 548 + stringio (3.1.2) 549 syntax_tree (6.2.0) 550 prettier_print (>= 1.2.0) 551 syntax_tree-disable_ternary (1.0.0) 552 + test-prof (1.4.4) 553 + thor (1.3.2) 554 + timeout (0.4.3) 555 + trilogy (2.9.0) 556 tzinfo (2.0.6) 557 concurrent-ruby (~> 1.0) 558 + tzinfo-data (1.2025.1) 559 tzinfo (>= 1.0.0) 560 + uglifier (4.2.1) 561 execjs (>= 0.3.0, < 3) 562 + unf (0.2.0) 563 + unicode-display_width (3.1.4) 564 + unicode-emoji (~> 4.0, >= 4.0.4) 565 + unicode-emoji (4.0.4) 566 unicorn (6.1.0) 567 kgio (~> 2.6) 568 raindrops (~> 0.7) 569 uniform_notifier (1.16.0) 570 + uri (1.0.2) 571 + useragent (0.16.11) 572 version_gem (1.1.4) 573 web-push (3.0.1) 574 jwt (~> 2.0) 575 openssl (~> 3.0) 576 + webmock (3.24.0) 577 addressable (>= 2.8.0) 578 crack (>= 0.3.2) 579 hashdiff (>= 0.4.0, < 2.0.0) 580 + webrick (1.9.1) 581 websocket (1.2.11) 582 xpath (3.2.0) 583 nokogiri (~> 1.8) 584 yaml-lint (0.1.2) 585 + yard (0.9.37) 586 + zeitwerk (2.7.1) 587 588 PLATFORMS 589 arm64-darwin-21 ··· 592 arm64-darwin-24 593 ruby 594 x86_64-darwin-22 595 + x86_64-darwin-23 596 + x86_64-darwin-24 597 598 DEPENDENCIES 599 + actionmailer (~> 7.2.0) 600 + actionpack (~> 7.2.0) 601 + actionview (~> 7.2.0) 602 actionview_precompiler 603 active_model_serializers (~> 0.8.3) 604 + activemodel (~> 7.2.0) 605 + activerecord (~> 7.2.0) 606 + activesupport (~> 7.2.0) 607 addressable 608 annotate 609 aws-sdk-s3 ··· 624 csv 625 diffy 626 digest 627 + digest-xxhash 628 discourse-fonts 629 discourse-seed-fu 630 discourse_dev_assets 631 + dry-initializer (~> 3.1) 632 email_reply_trimmer 633 excon 634 execjs 635 + extralite-bundle 636 fabrication 637 faker (~> 2.16) 638 fakeweb ··· 660 message_bus 661 messageformat-wrapper 662 mini_mime 663 + mini_racer (= 0.17.pre13) 664 mini_scheduler 665 mini_sql 666 mini_suffix ··· 668 mocha 669 multi_json 670 mustache 671 net-http 672 net-imap 673 net-pop ··· 680 omniauth-google-oauth2 681 omniauth-oauth2 682 omniauth-twitter 683 + parallel 684 parallel_tests 685 pg 686 pry-byebug ··· 693 rails-dom-testing 694 rails_failover 695 rails_multisite 696 + railties (~> 7.2.0) 697 rake 698 rb-fsevent 699 rbtrace ··· 707 rrule 708 rspec 709 rspec-html-matchers 710 + rspec-multi-mock 711 rspec-rails 712 rss 713 rswag-specs 714 rtlcss 715 rubocop-discourse 716 ruby-prof 717 + ruby-progressbar 718 ruby-readability 719 rubyzip 720 sanitize ··· 733 syntax_tree-disable_ternary 734 test-prof 735 thor 736 + trilogy 737 tzinfo-data 738 uglifier 739 unf ··· 742 webmock 743 yaml-lint 744 yard 745 + zeitwerk 746 747 BUNDLED WITH 748 + 2.5.22
+419 -278
pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix
··· 6 "activejob" 7 "activesupport" 8 "mail" 9 - "net-imap" 10 - "net-pop" 11 - "net-smtp" 12 "rails-dom-testing" 13 ]; 14 groups = [ "default" ]; 15 platforms = [ ]; 16 source = { 17 remotes = [ "https://rubygems.org" ]; 18 - sha256 = "0l835a50h95wlzcy76c2vg54ix3i55kqmnrmz67b11q5fjb6068z"; 19 type = "gem"; 20 }; 21 - version = "7.1.3.4"; 22 }; 23 actionpack = { 24 dependencies = [ ··· 31 "rack-test" 32 "rails-dom-testing" 33 "rails-html-sanitizer" 34 ]; 35 groups = [ 36 "default" ··· 40 platforms = [ ]; 41 source = { 42 remotes = [ "https://rubygems.org" ]; 43 - sha256 = "1lpd0lvn6abcq5k8g0qw8kmzx6igirlqxvd1hhwmr5vaxhdwgbyw"; 44 type = "gem"; 45 }; 46 - version = "7.1.3.4"; 47 }; 48 actionview = { 49 dependencies = [ ··· 61 platforms = [ ]; 62 source = { 63 remotes = [ "https://rubygems.org" ]; 64 - sha256 = "0nv1ifjhm59abc52k2hwazl38r9cc4bkfgdsl00f24gc5ljgbz21"; 65 type = "gem"; 66 }; 67 - version = "7.1.3.4"; 68 }; 69 actionview_precompiler = { 70 dependencies = [ "actionview" ]; ··· 97 platforms = [ ]; 98 source = { 99 remotes = [ "https://rubygems.org" ]; 100 - sha256 = "0qhg0izdckgyqmrsgigh1vkqg8ccrkdjhf36k9gxcbgvzpqfx2iz"; 101 type = "gem"; 102 }; 103 - version = "7.1.3.4"; 104 }; 105 activemodel = { 106 dependencies = [ "activesupport" ]; ··· 112 platforms = [ ]; 113 source = { 114 remotes = [ "https://rubygems.org" ]; 115 - sha256 = "0wmdw440l4h75zk6c4ynbnv21bj26dh8kb1kwikqkjnzfvm3ij7l"; 116 type = "gem"; 117 }; 118 - version = "7.1.3.4"; 119 }; 120 activerecord = { 121 dependencies = [ ··· 131 platforms = [ ]; 132 source = { 133 remotes = [ "https://rubygems.org" ]; 134 - sha256 = "1wihj9xhr7yj10hh8fqw6ralanbwlisncbam8pa92czjssjfqkkq"; 135 type = "gem"; 136 }; 137 - version = "7.1.3.4"; 138 }; 139 activesupport = { 140 dependencies = [ 141 "base64" 142 "bigdecimal" 143 "concurrent-ruby" 144 "connection_pool" 145 "drb" 146 "i18n" 147 "minitest" 148 - "mutex_m" 149 "tzinfo" 150 ]; 151 groups = [ ··· 156 platforms = [ ]; 157 source = { 158 remotes = [ "https://rubygems.org" ]; 159 - sha256 = "0283wk1zxb76lg79dk501kcf5xy9h25qiw15m86s4nrfv11vqns5"; 160 type = "gem"; 161 }; 162 - version = "7.1.3.4"; 163 }; 164 addressable = { 165 dependencies = [ "public_suffix" ]; ··· 310 }; 311 version = "0.2.0"; 312 }; 313 better_errors = { 314 dependencies = [ 315 "erubi" ··· 341 platforms = [ ]; 342 source = { 343 remotes = [ "https://rubygems.org" ]; 344 - sha256 = "1gi7zqgmqwi5lizggs1jhc3zlwaqayy9rx2ah80sxy24bbnng558"; 345 type = "gem"; 346 }; 347 - version = "3.1.8"; 348 }; 349 binding_of_caller = { 350 dependencies = [ "debug_inspector" ]; ··· 373 ]; 374 source = { 375 remotes = [ "https://rubygems.org" ]; 376 - sha256 = "1srlq3gqirzdkhv12ljpnp5cb0f8jfrl3n8xs9iivyz2c7khvdyp"; 377 type = "gem"; 378 }; 379 - version = "1.18.3"; 380 }; 381 builder = { 382 groups = [ ··· 401 platforms = [ ]; 402 source = { 403 remotes = [ "https://rubygems.org" ]; 404 - sha256 = "12gacycw1adsdjp14pm43619c6lcdaddhgbdizy7gnzmnjhwh0im"; 405 type = "gem"; 406 }; 407 - version = "7.2.0"; 408 }; 409 byebug = { 410 groups = [ ··· 514 platforms = [ ]; 515 source = { 516 remotes = [ "https://rubygems.org" ]; 517 - sha256 = "1zj06gjqwykgzxmbkp2hmg3wv5kv8zz5d77acxipzcgicdjgvfan"; 518 type = "gem"; 519 }; 520 - version = "4.0.0"; 521 }; 522 concurrent-ruby = { 523 groups = [ ··· 528 platforms = [ ]; 529 source = { 530 remotes = [ "https://rubygems.org" ]; 531 - sha256 = "0skwdasxq7mnlcccn6aqabl7n9r3jd7k19ryzlzzip64cn4x572g"; 532 type = "gem"; 533 }; 534 - version = "1.3.3"; 535 }; 536 connection_pool = { 537 - groups = [ "default" ]; 538 platforms = [ ]; 539 source = { 540 remotes = [ "https://rubygems.org" ]; 541 - sha256 = "1x32mcpm2cl5492kd6lbjbaf17qsssmpx9kdyr7z1wcif2cwyh0g"; 542 type = "gem"; 543 }; 544 - version = "2.4.1"; 545 }; 546 cose = { 547 dependencies = [ ··· 552 platforms = [ ]; 553 source = { 554 remotes = [ "https://rubygems.org" ]; 555 - sha256 = "00c6x4ha7qiaaf88qdbyf240mk146zz78rbm4qwyaxmwlmk7q933"; 556 type = "gem"; 557 }; 558 - version = "1.3.0"; 559 }; 560 cppjieba_rb = { 561 groups = [ "default" ]; 562 platforms = [ ]; 563 source = { 564 remotes = [ "https://rubygems.org" ]; 565 - sha256 = "0ijzvnm5jclyhf6ls30kv7dqy05f3hbha69f59jwbzdid7dndla5"; 566 type = "gem"; 567 }; 568 - version = "0.4.2"; 569 }; 570 crack = { 571 dependencies = [ ··· 604 platforms = [ ]; 605 source = { 606 remotes = [ "https://rubygems.org" ]; 607 - sha256 = "1rhqn05w27w2mjrf0a6ppb4fxpxbfvyhwgdxa8z886jr4qnhywzb"; 608 type = "gem"; 609 }; 610 - version = "1.17.1"; 611 }; 612 csv = { 613 groups = [ "default" ]; 614 platforms = [ ]; 615 source = { 616 remotes = [ "https://rubygems.org" ]; 617 - sha256 = "0zfn40dvgjk1xv1z8l11hr9jfg3jncwsc9yhzsz4l4rivkpivg8b"; 618 type = "gem"; 619 }; 620 - version = "3.3.0"; 621 }; 622 date = { 623 - groups = [ "default" ]; 624 platforms = [ ]; 625 source = { 626 remotes = [ "https://rubygems.org" ]; 627 - sha256 = "149jknsq999gnhy865n33fkk22s0r447k76x9pmcnnwldfv2q7wp"; 628 type = "gem"; 629 }; 630 - version = "3.3.4"; 631 }; 632 debug_inspector = { 633 groups = [ ··· 661 platforms = [ ]; 662 source = { 663 remotes = [ "https://rubygems.org" ]; 664 - sha256 = "1qcsv29ljfhy76gq4xi8zpn6dc6nv15c41r131bdr38kwpxjzd1n"; 665 type = "gem"; 666 }; 667 - version = "3.4.2"; 668 }; 669 digest = { 670 groups = [ "default" ]; 671 platforms = [ ]; 672 source = { 673 remotes = [ "https://rubygems.org" ]; 674 - sha256 = "01qkpbkxq83ip3iysfh2kjrg9sh2n2q91prhyxh3vq10lcfzv9l1"; 675 type = "gem"; 676 }; 677 - version = "3.1.1"; 678 }; 679 discourse-fonts = { 680 groups = [ "default" ]; 681 platforms = [ ]; 682 source = { 683 remotes = [ "https://rubygems.org" ]; 684 - sha256 = "1q1q9fmqc7dir2nj94nai58h26zsh6fqmbr6hfax5d6xpy4pm1yf"; 685 type = "gem"; 686 }; 687 - version = "0.0.9"; 688 }; 689 discourse-seed-fu = { 690 dependencies = [ ··· 740 }; 741 version = "2.2.1"; 742 }; 743 email_reply_trimmer = { 744 groups = [ "default" ]; 745 platforms = [ ]; 746 source = { 747 remotes = [ "https://rubygems.org" ]; 748 - sha256 = "1jgcxifm48xq5dz9k47q43pqm5bfnf14l62l3bqhmv8f6z8dw4ki"; 749 type = "gem"; 750 }; 751 - version = "0.1.13"; 752 }; 753 erubi = { 754 groups = [ ··· 766 ]; 767 source = { 768 remotes = [ "https://rubygems.org" ]; 769 - sha256 = "0qnd6ff4az22ysnmni3730c41b979xinilahzg86bn7gv93ip9pw"; 770 type = "gem"; 771 }; 772 - version = "1.13.0"; 773 }; 774 excon = { 775 groups = [ "default" ]; 776 platforms = [ ]; 777 source = { 778 remotes = [ "https://rubygems.org" ]; 779 - sha256 = "0ala6123d3cv965ss48iyi0q4hcbzrznfwv2f1mr91sy98cigq4h"; 780 type = "gem"; 781 }; 782 - version = "0.111.0"; 783 }; 784 execjs = { 785 groups = [ ··· 789 platforms = [ ]; 790 source = { 791 remotes = [ "https://rubygems.org" ]; 792 - sha256 = "1yywajqlpjhrj1m43s3lfg3i4lkb6pxwccmwps7qw37ndmphdzg8"; 793 type = "gem"; 794 }; 795 - version = "2.9.1"; 796 }; 797 exifr = { 798 groups = [ "default" ]; 799 platforms = [ ]; 800 source = { 801 remotes = [ "https://rubygems.org" ]; 802 - sha256 = "11v201jljn327fwjqcsglrbdnyhivnj7j6nh6wym5zjqgrwxy3kn"; 803 type = "gem"; 804 }; 805 - version = "1.4.0"; 806 }; 807 fabrication = { 808 groups = [ ··· 844 faraday = { 845 dependencies = [ 846 "faraday-net_http" 847 "logger" 848 ]; 849 groups = [ "default" ]; 850 platforms = [ ]; 851 source = { 852 remotes = [ "https://rubygems.org" ]; 853 - sha256 = "1adx342h7s3imyrwwbda73g9ni1y07qj35br9lrzq4f5mh16qghs"; 854 type = "gem"; 855 }; 856 - version = "2.10.0"; 857 }; 858 faraday-net_http = { 859 dependencies = [ "net-http" ]; ··· 861 platforms = [ ]; 862 source = { 863 remotes = [ "https://rubygems.org" ]; 864 - sha256 = "0f49frpfdr8czwm2mjkfny4pini6fy49b6hamw4jrppl4vsg14ys"; 865 type = "gem"; 866 }; 867 - version = "3.1.1"; 868 }; 869 faraday-retry = { 870 dependencies = [ "faraday" ]; ··· 923 ]; 924 source = { 925 remotes = [ "https://rubygems.org" ]; 926 - sha256 = "07139870npj59jnl8vmk39ja3gdk3fb5z9vc0lf32y2h891hwqsi"; 927 type = "gem"; 928 }; 929 - version = "1.17.0"; 930 }; 931 fspath = { 932 groups = [ "default" ]; ··· 958 platforms = [ ]; 959 source = { 960 remotes = [ "https://rubygems.org" ]; 961 - sha256 = "0vwnr6fmxig4pkag86yzbznpxk8ii7rhjz0rrprkqvnymhhfnscz"; 962 type = "gem"; 963 }; 964 - version = "4.27.2"; 965 }; 966 guess_html_encoding = { 967 groups = [ "default" ]; ··· 991 platforms = [ ]; 992 source = { 993 remotes = [ "https://rubygems.org" ]; 994 - sha256 = "1jf9dxgjz6z7fvymyz2acyvn9iyvwkn6d9sk7y4fxwbmfc75yimm"; 995 type = "gem"; 996 }; 997 - version = "1.1.0"; 998 }; 999 hashie = { 1000 groups = [ "default" ]; ··· 1012 platforms = [ ]; 1013 source = { 1014 remotes = [ "https://rubygems.org" ]; 1015 - sha256 = "1sxqnaz6wvkwbwzsipwsqcg1zw2kn67x7l362whv87zl5133w60l"; 1016 type = "gem"; 1017 }; 1018 - version = "3.1.0"; 1019 }; 1020 htmlentities = { 1021 groups = [ "default" ]; ··· 1047 platforms = [ ]; 1048 source = { 1049 remotes = [ "https://rubygems.org" ]; 1050 - sha256 = "1ffix518y7976qih9k1lgnc17i3v6yrlh0a3mckpxdb4wc2vrp16"; 1051 type = "gem"; 1052 }; 1053 - version = "1.14.5"; 1054 }; 1055 image_optim = { 1056 dependencies = [ ··· 1064 platforms = [ ]; 1065 source = { 1066 remotes = [ "https://rubygems.org" ]; 1067 - sha256 = "02iw1plldayr1l8bdw2gshq0h083h0fxwji1m1nfhzikz917c07p"; 1068 type = "gem"; 1069 }; 1070 - version = "0.31.3"; 1071 }; 1072 image_size = { 1073 groups = [ "default" ]; ··· 1098 platforms = [ ]; 1099 source = { 1100 remotes = [ "https://rubygems.org" ]; 1101 - sha256 = "08d2lx42pa8jjav0lcjbzfzmw61b8imxr9041pva8xzqabrczp7h"; 1102 type = "gem"; 1103 }; 1104 - version = "0.7.2"; 1105 }; 1106 irb = { 1107 dependencies = [ 1108 "rdoc" 1109 "reline" 1110 ]; ··· 1116 platforms = [ ]; 1117 source = { 1118 remotes = [ "https://rubygems.org" ]; 1119 - sha256 = "05g6vpz3997q4j3xhrliswfx3g5flsn5cfn1p1s4h6dx7c0hbn2k"; 1120 type = "gem"; 1121 }; 1122 - version = "1.14.0"; 1123 }; 1124 iso8601 = { 1125 groups = [ "default" ]; ··· 1150 platforms = [ ]; 1151 source = { 1152 remotes = [ "https://rubygems.org" ]; 1153 - sha256 = "0b4qsi8gay7ncmigr0pnbxyb17y3h8kavdyhsh7nrlqwr35vb60q"; 1154 type = "gem"; 1155 }; 1156 - version = "2.7.2"; 1157 }; 1158 json-schema = { 1159 - dependencies = [ "addressable" ]; 1160 groups = [ 1161 "default" 1162 "development" ··· 1165 platforms = [ ]; 1166 source = { 1167 remotes = [ "https://rubygems.org" ]; 1168 - sha256 = "09bq393nrxa7hmphc3li8idgxdnb5hwgj15d0q5qsh4l5g1qvrnm"; 1169 type = "gem"; 1170 }; 1171 - version = "4.3.1"; 1172 }; 1173 json_schemer = { 1174 dependencies = [ ··· 1181 platforms = [ ]; 1182 source = { 1183 remotes = [ "https://rubygems.org" ]; 1184 - sha256 = "0dgbrps0ydiyxcgj5n4dny0cmzwj125x1s792l7m5jjrp1rs27wz"; 1185 type = "gem"; 1186 }; 1187 - version = "2.3.0"; 1188 }; 1189 jwt = { 1190 dependencies = [ "base64" ]; ··· 1192 platforms = [ ]; 1193 source = { 1194 remotes = [ "https://rubygems.org" ]; 1195 - sha256 = "04mw326i9vsdcqwm4bf0zvnqw237f8l7022nhlbmak92bqqpg62s"; 1196 type = "gem"; 1197 }; 1198 - version = "2.8.2"; 1199 }; 1200 kgio = { 1201 groups = [ "default" ]; ··· 1226 platforms = [ ]; 1227 source = { 1228 remotes = [ "https://rubygems.org" ]; 1229 - sha256 = "0gvb1j8xsqxms9mww01rmdl78zkd72zgxaap56bhv8j45z05hp1x"; 1230 type = "gem"; 1231 }; 1232 - version = "3.17.0.3"; 1233 }; 1234 libv8-node = { 1235 groups = [ "default" ]; 1236 platforms = [ ]; 1237 source = { 1238 remotes = [ "https://rubygems.org" ]; 1239 - sha256 = "13gmrl4lq1rfpdn76v5nid2hsajhrw27s6n88j09v26f0axgp4vp"; 1240 type = "gem"; 1241 }; 1242 - version = "18.19.0.0"; 1243 }; 1244 listen = { 1245 dependencies = [ ··· 1274 logger = { 1275 groups = [ 1276 "default" 1277 "test" 1278 ]; 1279 platforms = [ ]; 1280 source = { 1281 remotes = [ "https://rubygems.org" ]; 1282 - sha256 = "0gpg8gzi0xwymw4aaq2iafcbx31i3xzkg3fb30mdxn1d4qhc3dqa"; 1283 type = "gem"; 1284 }; 1285 - version = "1.6.0"; 1286 }; 1287 lograge = { 1288 dependencies = [ ··· 1333 platforms = [ ]; 1334 source = { 1335 remotes = [ "https://rubygems.org" ]; 1336 - sha256 = "1zkjqf37v2d7s11176cb35cl83wls5gm3adnfkn2zcc61h3nxmqh"; 1337 type = "gem"; 1338 }; 1339 - version = "2.22.0"; 1340 }; 1341 lru_redux = { 1342 groups = [ "default" ]; ··· 1419 ]; 1420 source = { 1421 remotes = [ "https://rubygems.org" ]; 1422 - sha256 = "1pv28xh8mss25fj4nd5r6zds1br8ssr2bpxr0md5pskv38m5qz0f"; 1423 type = "gem"; 1424 }; 1425 - version = "1.0.2"; 1426 }; 1427 message_bus = { 1428 dependencies = [ "rack" ]; ··· 1483 platforms = [ ]; 1484 source = { 1485 remotes = [ "https://rubygems.org" ]; 1486 - sha256 = "1q1f2sdw3y3y9mnym9dhjgsjr72sq975cfg5c4yx7gwv8nmzbvhk"; 1487 type = "gem"; 1488 }; 1489 - version = "2.8.7"; 1490 }; 1491 mini_racer = { 1492 dependencies = [ "libv8-node" ]; ··· 1494 platforms = [ ]; 1495 source = { 1496 remotes = [ "https://rubygems.org" ]; 1497 - sha256 = "1ling4ynn7na1cw69wzn8zn00jifwjrnprnynn05rcca1pzs58d1"; 1498 type = "gem"; 1499 }; 1500 - version = "0.14.1"; 1501 }; 1502 mini_scheduler = { 1503 dependencies = [ "sidekiq" ]; ··· 1505 platforms = [ ]; 1506 source = { 1507 remotes = [ "https://rubygems.org" ]; 1508 - sha256 = "19c72wlr0zsrg1fiak61h0z1b3glv2l23041xvlwv2i71fw5xavy"; 1509 type = "gem"; 1510 }; 1511 - version = "0.16.0"; 1512 }; 1513 mini_sql = { 1514 groups = [ "default" ]; 1515 platforms = [ ]; 1516 source = { 1517 remotes = [ "https://rubygems.org" ]; 1518 - sha256 = "0yrxjmwhfnvcwbj9vscyq0z67sq09zl8qhmzgakq2ywy4yvcpwgg"; 1519 type = "gem"; 1520 }; 1521 - version = "1.5.0"; 1522 }; 1523 mini_suffix = { 1524 dependencies = [ "ffi" ]; ··· 1550 platforms = [ ]; 1551 source = { 1552 remotes = [ "https://rubygems.org" ]; 1553 - sha256 = "0jj629q3vw5yn90q4di4dyb87pil4a8qfm2srhgy5nc8j2n33v1i"; 1554 type = "gem"; 1555 }; 1556 - version = "5.24.1"; 1557 }; 1558 mocha = { 1559 dependencies = [ "ruby2_keywords" ]; ··· 1564 platforms = [ ]; 1565 source = { 1566 remotes = [ "https://rubygems.org" ]; 1567 - sha256 = "04k1k9cmdv7q2p1b2z2y1k9dn1hhwjdlwkrp46gfq84v7887xhdl"; 1568 type = "gem"; 1569 }; 1570 - version = "2.4.5"; 1571 }; 1572 msgpack = { 1573 groups = [ "default" ]; ··· 1581 ]; 1582 source = { 1583 remotes = [ "https://rubygems.org" ]; 1584 - sha256 = "1a5adcb7bwan09mqhj3wi9ib52hmdzmqg7q08pggn3adibyn5asr"; 1585 type = "gem"; 1586 }; 1587 - version = "1.7.2"; 1588 }; 1589 multi_json = { 1590 groups = [ "default" ]; ··· 1617 }; 1618 version = "1.1.1"; 1619 }; 1620 - mutex_m = { 1621 - groups = [ "default" ]; 1622 - platforms = [ ]; 1623 - source = { 1624 - remotes = [ "https://rubygems.org" ]; 1625 - sha256 = "1ma093ayps1m92q845hmpk0dmadicvifkbf05rpq9pifhin0rvxn"; 1626 - type = "gem"; 1627 - }; 1628 - version = "0.2.0"; 1629 - }; 1630 net-http = { 1631 dependencies = [ "uri" ]; 1632 groups = [ "default" ]; 1633 platforms = [ ]; 1634 source = { 1635 remotes = [ "https://rubygems.org" ]; 1636 - sha256 = "10n2n9aq00ih8v881af88l1zyrqgs5cl3njdw8argjwbl5ggqvm9"; 1637 type = "gem"; 1638 }; 1639 - version = "0.4.1"; 1640 }; 1641 net-imap = { 1642 dependencies = [ ··· 1647 platforms = [ ]; 1648 source = { 1649 remotes = [ "https://rubygems.org" ]; 1650 - sha256 = "0rc08fxm10vv73bg0nqyp5bdvl4cvzb3y4cdk4kwmxx414zln652"; 1651 type = "gem"; 1652 }; 1653 - version = "0.4.14"; 1654 }; 1655 net-pop = { 1656 dependencies = [ "net-protocol" ]; ··· 1690 platforms = [ ]; 1691 source = { 1692 remotes = [ "https://rubygems.org" ]; 1693 - sha256 = "017nbw87dpr4wyk81cgj8kxkxqgsgblrkxnmmadc77cg9gflrfal"; 1694 type = "gem"; 1695 }; 1696 - version = "2.7.3"; 1697 }; 1698 nokogiri = { 1699 dependencies = [ ··· 1708 platforms = [ ]; 1709 source = { 1710 remotes = [ "https://rubygems.org" ]; 1711 - sha256 = "15gysw8rassqgdq3kwgl4mhqmrgh7nk2qvrcqp4ijyqazgywn6gq"; 1712 type = "gem"; 1713 }; 1714 - version = "1.16.7"; 1715 }; 1716 oauth = { 1717 dependencies = [ ··· 1757 version = "1.4.11"; 1758 }; 1759 oj = { 1760 - dependencies = [ "bigdecimal" ]; 1761 groups = [ "default" ]; 1762 platforms = [ ]; 1763 source = { 1764 remotes = [ "https://rubygems.org" ]; 1765 - sha256 = "0b2narmcw4723lfyy7j0l4pfyv5n0qnmkm4mqgi832p5cg31k090"; 1766 type = "gem"; 1767 }; 1768 - version = "3.16.4"; 1769 }; 1770 omniauth = { 1771 dependencies = [ ··· 1826 dependencies = [ 1827 "oauth" 1828 "omniauth" 1829 ]; 1830 groups = [ "default" ]; 1831 platforms = [ ]; 1832 source = { 1833 remotes = [ "https://rubygems.org" ]; 1834 - sha256 = "0yw2vzx633p9wpdkd4jxsih6mw604mj7f6myyfikmj4d95c8d9z7"; 1835 type = "gem"; 1836 }; 1837 - version = "1.2.0"; 1838 }; 1839 omniauth-oauth2 = { 1840 dependencies = [ ··· 1869 platforms = [ ]; 1870 source = { 1871 remotes = [ "https://rubygems.org" ]; 1872 - sha256 = "054d6ybgjdzxw567m7rbnd46yp6gkdbc5ihr536vxd3p15vbhjrw"; 1873 type = "gem"; 1874 }; 1875 - version = "3.2.0"; 1876 }; 1877 openssl-signature_algorithm = { 1878 dependencies = [ "openssl" ]; ··· 1897 ]; 1898 source = { 1899 remotes = [ "https://rubygems.org" ]; 1900 - sha256 = "0q4jqq3v1bxlfr9jgqmahnygkvl81lr6s1rhm8qg66c9xr9nz241"; 1901 type = "gem"; 1902 }; 1903 - version = "3.1.0"; 1904 }; 1905 parallel = { 1906 groups = [ ··· 1911 platforms = [ ]; 1912 source = { 1913 remotes = [ "https://rubygems.org" ]; 1914 - sha256 = "145bn5q7ysnjj02jdf1x4nc1f0xxrv7ihgz9yr1j7sinmawqkq0j"; 1915 type = "gem"; 1916 }; 1917 - version = "1.25.1"; 1918 }; 1919 parallel_tests = { 1920 dependencies = [ "parallel" ]; ··· 1925 platforms = [ ]; 1926 source = { 1927 remotes = [ "https://rubygems.org" ]; 1928 - sha256 = "0q5q38sfrpwgcqwf5sl6xals5w11xayh8i9nq1vxya2sbrzrgbcq"; 1929 type = "gem"; 1930 }; 1931 - version = "4.7.1"; 1932 }; 1933 parser = { 1934 dependencies = [ ··· 1943 platforms = [ ]; 1944 source = { 1945 remotes = [ "https://rubygems.org" ]; 1946 - sha256 = "10ly2wind06nylyqa5724ld2l0l46d3ag4fm04ifjgw7qdlpf94d"; 1947 type = "gem"; 1948 }; 1949 - version = "3.3.4.0"; 1950 }; 1951 pg = { 1952 groups = [ "default" ]; 1953 platforms = [ ]; 1954 source = { 1955 remotes = [ "https://rubygems.org" ]; 1956 - sha256 = "0pfj771p5a29yyyw58qacks464sl86d5m3jxjl5rlqqw2m3v5xq4"; 1957 type = "gem"; 1958 }; 1959 - version = "1.5.4"; 1960 }; 1961 prettier_print = { 1962 groups = [ ··· 1972 }; 1973 version = "1.2.1"; 1974 }; 1975 progress = { 1976 groups = [ "default" ]; 1977 platforms = [ ]; ··· 2039 version = "0.6.1"; 2040 }; 2041 psych = { 2042 - dependencies = [ "stringio" ]; 2043 groups = [ 2044 "default" 2045 "development" ··· 2048 platforms = [ ]; 2049 source = { 2050 remotes = [ "https://rubygems.org" ]; 2051 - sha256 = "0s5383m6004q76xm3lb732bp4sjzb6mxb6rbgn129gy2izsj4wrk"; 2052 type = "gem"; 2053 }; 2054 - version = "5.1.2"; 2055 }; 2056 public_suffix = { 2057 groups = [ ··· 2073 platforms = [ ]; 2074 source = { 2075 remotes = [ "https://rubygems.org" ]; 2076 - sha256 = "0i2vaww6qcazj0ywva1plmjnj6rk23b01szswc5jhcq7s2cikd1y"; 2077 type = "gem"; 2078 }; 2079 - version = "6.4.2"; 2080 }; 2081 racc = { 2082 groups = [ ··· 2087 platforms = [ ]; 2088 source = { 2089 remotes = [ "https://rubygems.org" ]; 2090 - sha256 = "021s7maw0c4d9a6s07vbmllrzqsj2sgmrwimlh8ffkvwqdjrld09"; 2091 type = "gem"; 2092 }; 2093 - version = "1.8.0"; 2094 }; 2095 rack = { 2096 groups = [ ··· 2108 ]; 2109 source = { 2110 remotes = [ "https://rubygems.org" ]; 2111 - sha256 = "0hj0rkw2z9r1lcg2wlrcld2n3phwrcgqcp7qd1g9a7hwgalh2qzx"; 2112 type = "gem"; 2113 }; 2114 - version = "2.2.9"; 2115 }; 2116 rack-mini-profiler = { 2117 dependencies = [ "rack" ]; ··· 2163 platforms = [ ]; 2164 source = { 2165 remotes = [ "https://rubygems.org" ]; 2166 - sha256 = "1ysx29gk9k14a14zsp5a8czys140wacvp91fja8xcja0j1hzqq8c"; 2167 type = "gem"; 2168 }; 2169 - version = "2.1.0"; 2170 }; 2171 rackup = { 2172 dependencies = [ ··· 2181 platforms = [ ]; 2182 source = { 2183 remotes = [ "https://rubygems.org" ]; 2184 - sha256 = "1wbr03334ba9ilcq25wh9913xciwj0j117zs60vsqm0zgwdkwpp9"; 2185 type = "gem"; 2186 }; 2187 - version = "1.0.0"; 2188 }; 2189 rails-dom-testing = { 2190 dependencies = [ ··· 2218 platforms = [ ]; 2219 source = { 2220 remotes = [ "https://rubygems.org" ]; 2221 - sha256 = "1pm4z853nyz1bhhqr7fzl44alnx4bjachcr6rh6qjj375sfz3sc6"; 2222 type = "gem"; 2223 }; 2224 - version = "1.6.0"; 2225 }; 2226 rails_failover = { 2227 dependencies = [ ··· 2233 platforms = [ ]; 2234 source = { 2235 remotes = [ "https://rubygems.org" ]; 2236 - sha256 = "1yxbh9xim46jqv9ap63ygvwv9bglbkqssn5hvr065gqly32mi407"; 2237 type = "gem"; 2238 }; 2239 - version = "2.1.1"; 2240 }; 2241 rails_multisite = { 2242 dependencies = [ ··· 2247 platforms = [ ]; 2248 source = { 2249 remotes = [ "https://rubygems.org" ]; 2250 - sha256 = "1zlfmm19k0p19jzknimqhhzs1phswmfgispph9b5fkag0w3ajxci"; 2251 type = "gem"; 2252 }; 2253 - version = "6.0.0"; 2254 }; 2255 railties = { 2256 dependencies = [ ··· 2270 platforms = [ ]; 2271 source = { 2272 remotes = [ "https://rubygems.org" ]; 2273 - sha256 = "1z0slb2dlwrwgqijbk37hl4r9bh4h8vzcyswz6a9srl8lzrljq3c"; 2274 type = "gem"; 2275 }; 2276 - version = "7.1.3.4"; 2277 }; 2278 rainbow = { 2279 groups = [ ··· 2378 platforms = [ ]; 2379 source = { 2380 remotes = [ "https://rubygems.org" ]; 2381 - sha256 = "1isj1b3ywgg2m1vdlnr41lpvpm3dbyarf1lla4dfibfmad9csfk9"; 2382 type = "gem"; 2383 }; 2384 - version = "1.8.0"; 2385 }; 2386 rdoc = { 2387 dependencies = [ "psych" ]; ··· 2393 platforms = [ ]; 2394 source = { 2395 remotes = [ "https://rubygems.org" ]; 2396 - sha256 = "0ygk2zk0ky3d88v3ll7qh6xqvbvw5jin0hqdi1xkv1dhaw7myzdi"; 2397 type = "gem"; 2398 }; 2399 - version = "6.7.0"; 2400 }; 2401 redcarpet = { 2402 groups = [ "generic_import" ]; ··· 2438 platforms = [ ]; 2439 source = { 2440 remotes = [ "https://rubygems.org" ]; 2441 - sha256 = "0ik40vcv7mqigsfpqpca36hpmnx0536xa825ai5qlkv3mmkyf9ss"; 2442 type = "gem"; 2443 }; 2444 - version = "2.9.2"; 2445 }; 2446 reline = { 2447 dependencies = [ "io-console" ]; ··· 2453 platforms = [ ]; 2454 source = { 2455 remotes = [ "https://rubygems.org" ]; 2456 - sha256 = "0y6kyz7kcilwdpfy3saqfgnar38vr5ys9sp40ndffy6h1znxfbax"; 2457 type = "gem"; 2458 }; 2459 - version = "0.5.9"; 2460 }; 2461 request_store = { 2462 dependencies = [ "rack" ]; ··· 2470 version = "1.7.0"; 2471 }; 2472 rexml = { 2473 - dependencies = [ "strscan" ]; 2474 groups = [ 2475 "default" 2476 - "development" 2477 "test" 2478 ]; 2479 platforms = [ ]; 2480 source = { 2481 remotes = [ "https://rubygems.org" ]; 2482 - sha256 = "0zr5qpa8lampaqzhdcjcvyqnrqcjl7439mqjlkjz43wdhmpnh4s5"; 2483 type = "gem"; 2484 }; 2485 - version = "3.3.2"; 2486 }; 2487 rinku = { 2488 groups = [ "default" ]; ··· 2519 ]; 2520 source = { 2521 remotes = [ "https://rubygems.org" ]; 2522 - sha256 = "072qvvrcqj0yfr3b0j932mlhvn41i38bq37z7z07i3ikagndkqwy"; 2523 type = "gem"; 2524 }; 2525 - version = "4.3.0"; 2526 }; 2527 rqrcode = { 2528 dependencies = [ ··· 2587 platforms = [ ]; 2588 source = { 2589 remotes = [ "https://rubygems.org" ]; 2590 - sha256 = "0k252n7s80bvjvpskgfm285a3djjjqyjcarlh3aq7a4dx2s94xsm"; 2591 type = "gem"; 2592 }; 2593 - version = "3.13.0"; 2594 }; 2595 rspec-expectations = { 2596 dependencies = [ ··· 2605 platforms = [ ]; 2606 source = { 2607 remotes = [ "https://rubygems.org" ]; 2608 - sha256 = "0022nxs9gqfhx35n4klibig770n0j31pnkd8anz00yvrvkdghk41"; 2609 type = "gem"; 2610 }; 2611 - version = "3.13.1"; 2612 }; 2613 rspec-html-matchers = { 2614 dependencies = [ ··· 2640 platforms = [ ]; 2641 source = { 2642 remotes = [ "https://rubygems.org" ]; 2643 - sha256 = "0f3vgp43hajw716vmgjv6f4ar6f97zf50snny6y3fy9kkj4qjw88"; 2644 type = "gem"; 2645 }; 2646 - version = "3.13.1"; 2647 }; 2648 rspec-rails = { 2649 dependencies = [ ··· 2662 platforms = [ ]; 2663 source = { 2664 remotes = [ "https://rubygems.org" ]; 2665 - sha256 = "0nqwvyma86zchh4ki416h7cms38h521ghyypaq27b6yvkmp3h8yw"; 2666 type = "gem"; 2667 }; 2668 - version = "6.1.3"; 2669 }; 2670 rspec-support = { 2671 groups = [ ··· 2676 platforms = [ ]; 2677 source = { 2678 remotes = [ "https://rubygems.org" ]; 2679 - sha256 = "03z7gpqz5xkw9rf53835pa8a9vgj4lic54rnix9vfwmp2m7pv1s8"; 2680 type = "gem"; 2681 }; 2682 - version = "3.13.1"; 2683 }; 2684 rss = { 2685 dependencies = [ "rexml" ]; ··· 2687 platforms = [ ]; 2688 source = { 2689 remotes = [ "https://rubygems.org" ]; 2690 - sha256 = "1wv27axi39hhr0nmaffdl5bdjqiafcvp9xhfgnsgfczsblja50sn"; 2691 type = "gem"; 2692 }; 2693 - version = "0.3.0"; 2694 }; 2695 rswag-specs = { 2696 dependencies = [ ··· 2706 platforms = [ ]; 2707 source = { 2708 remotes = [ "https://rubygems.org" ]; 2709 - sha256 = "1iyqd95l8r8m6jna451xb20lsp0jiajk1gbw845qlyqf6d69xyx2"; 2710 type = "gem"; 2711 }; 2712 - version = "2.13.0"; 2713 }; 2714 rtlcss = { 2715 dependencies = [ "mini_racer" ]; ··· 2730 "parser" 2731 "rainbow" 2732 "regexp_parser" 2733 - "rexml" 2734 "rubocop-ast" 2735 "ruby-progressbar" 2736 "unicode-display_width" ··· 2743 platforms = [ ]; 2744 source = { 2745 remotes = [ "https://rubygems.org" ]; 2746 - sha256 = "18g462bccr0rvszc7kirr89laggdf6254p7pqsckk3izg901chv2"; 2747 type = "gem"; 2748 }; 2749 - version = "1.65.0"; 2750 }; 2751 rubocop-ast = { 2752 dependencies = [ "parser" ]; ··· 2758 platforms = [ ]; 2759 source = { 2760 remotes = [ "https://rubygems.org" ]; 2761 - sha256 = "063qgvqbyv354icl2sgx758z22wzq38hd9skc3n96sbpv0cdc1qv"; 2762 type = "gem"; 2763 }; 2764 - version = "1.31.3"; 2765 }; 2766 rubocop-capybara = { 2767 dependencies = [ "rubocop" ]; ··· 2795 platforms = [ ]; 2796 source = { 2797 remotes = [ "https://rubygems.org" ]; 2798 - sha256 = "1bcy1zl88f4fxjsda2nf6k13kqrj60z8nsqdv9z51fdkv0aj82wk"; 2799 type = "gem"; 2800 }; 2801 - version = "3.8.1"; 2802 }; 2803 rubocop-factory_bot = { 2804 dependencies = [ "rubocop" ]; ··· 2830 platforms = [ ]; 2831 source = { 2832 remotes = [ "https://rubygems.org" ]; 2833 - sha256 = "19g6m8ladix1dq8darrqnhbj6n3cgp2ivxnh48yj3nrgw0z97229"; 2834 type = "gem"; 2835 }; 2836 - version = "2.25.1"; 2837 }; 2838 rubocop-rspec = { 2839 dependencies = [ "rubocop" ]; ··· 2845 platforms = [ ]; 2846 source = { 2847 remotes = [ "https://rubygems.org" ]; 2848 - sha256 = "0495y1bwv5j6r9dak7860i6qnm68c53vz2bx2js5lwm6p7py147f"; 2849 type = "gem"; 2850 }; 2851 - version = "3.0.3"; 2852 }; 2853 rubocop-rspec_rails = { 2854 dependencies = [ ··· 2880 ]; 2881 source = { 2882 remotes = [ "https://rubygems.org" ]; 2883 - sha256 = "0hnalxnvli6248g34n0bj8p3v35vpabak34qjg778bbaavbqg5h5"; 2884 type = "gem"; 2885 }; 2886 - version = "1.7.0"; 2887 }; 2888 ruby-progressbar = { 2889 groups = [ ··· 2908 platforms = [ ]; 2909 source = { 2910 remotes = [ "https://rubygems.org" ]; 2911 - sha256 = "11kqx5yp6syd99k1ksnw84b0sc3cr7icf63dibn2m025qg27ml2i"; 2912 type = "gem"; 2913 }; 2914 - version = "0.7.1"; 2915 }; 2916 ruby2_keywords = { 2917 groups = [ ··· 2928 version = "0.0.5"; 2929 }; 2930 rubyzip = { 2931 - groups = [ "default" ]; 2932 platforms = [ ]; 2933 source = { 2934 remotes = [ "https://rubygems.org" ]; 2935 - sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz"; 2936 type = "gem"; 2937 }; 2938 - version = "2.3.2"; 2939 }; 2940 sanitize = { 2941 dependencies = [ ··· 2946 platforms = [ ]; 2947 source = { 2948 remotes = [ "https://rubygems.org" ]; 2949 - sha256 = "1c9j1rwdp87k7b7mawf8agpdycdr2dsl2wvjipmcy1c55kllp2qp"; 2950 type = "gem"; 2951 }; 2952 - version = "6.1.2"; 2953 }; 2954 sass-embedded = { 2955 dependencies = [ ··· 2976 }; 2977 version = "1.77.7"; 2978 }; 2979 selenium-devtools = { 2980 dependencies = [ "selenium-webdriver" ]; 2981 groups = [ "test" ]; 2982 platforms = [ ]; 2983 source = { 2984 remotes = [ "https://rubygems.org" ]; 2985 - sha256 = "0ph7b947h5cgqyhb5a4jk467bggx48xy619ggh6p38ys8bjszp1l"; 2986 type = "gem"; 2987 }; 2988 - version = "0.126.0"; 2989 }; 2990 selenium-webdriver = { 2991 dependencies = [ ··· 2999 platforms = [ ]; 3000 source = { 3001 remotes = [ "https://rubygems.org" ]; 3002 - sha256 = "00dq3450kadsvxh1lpndasy0bab0ilrjhrnvlicfmkvrx3gfs2j9"; 3003 type = "gem"; 3004 }; 3005 - version = "4.23.0"; 3006 }; 3007 shoulda-matchers = { 3008 dependencies = [ "activesupport" ]; ··· 3013 platforms = [ ]; 3014 source = { 3015 remotes = [ "https://rubygems.org" ]; 3016 - sha256 = "1pfq0w167v4055k0km64sxik1qslhsi32wl2jlidmfzkqmcw00m7"; 3017 type = "gem"; 3018 }; 3019 - version = "6.2.0"; 3020 }; 3021 sidekiq = { 3022 dependencies = [ ··· 3056 platforms = [ ]; 3057 source = { 3058 remotes = [ "https://rubygems.org" ]; 3059 - sha256 = "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb"; 3060 type = "gem"; 3061 }; 3062 - version = "0.12.3"; 3063 }; 3064 simplecov_json_formatter = { 3065 groups = [ ··· 3108 platforms = [ ]; 3109 source = { 3110 remotes = [ "https://rubygems.org" ]; 3111 - sha256 = "0lyc6mx4yalsnxc9yp4a5xra4nz1nwwbk5634wlfncml0ll1bnnw"; 3112 type = "gem"; 3113 }; 3114 - version = "3.7.3"; 3115 }; 3116 sprockets-rails = { 3117 dependencies = [ ··· 3123 platforms = [ ]; 3124 source = { 3125 remotes = [ "https://rubygems.org" ]; 3126 - sha256 = "0j7gwm749b3ff6544wxa878fpd1kvf2qc9fafassi8c7735jcin4"; 3127 type = "gem"; 3128 }; 3129 - version = "3.5.1"; 3130 }; 3131 sqlite3 = { 3132 dependencies = [ "mini_portile2" ]; ··· 3134 platforms = [ ]; 3135 source = { 3136 remotes = [ "https://rubygems.org" ]; 3137 - sha256 = "0k8myqn1g7sfmxs1h0x7jijh5ybszxw5153l0aq0w1cxp3zm6vij"; 3138 type = "gem"; 3139 }; 3140 - version = "2.0.2"; 3141 }; 3142 sshkey = { 3143 groups = [ "default" ]; ··· 3161 ]; 3162 source = { 3163 remotes = [ "https://rubygems.org" ]; 3164 - sha256 = "1gdqqwnampxmc54nf6zfy9apkmkpdavzipvfssmjlhnrrjy8qh7f"; 3165 type = "gem"; 3166 }; 3167 - version = "0.2.26"; 3168 }; 3169 stringio = { 3170 groups = [ ··· 3175 platforms = [ ]; 3176 source = { 3177 remotes = [ "https://rubygems.org" ]; 3178 - sha256 = "07mfqb40b2wh53k33h91zva78f9zwcdnl85jiq74wnaw2wa6wiak"; 3179 type = "gem"; 3180 }; 3181 - version = "3.1.1"; 3182 - }; 3183 - strscan = { 3184 - groups = [ 3185 - "default" 3186 - "development" 3187 - "test" 3188 - ]; 3189 - platforms = [ ]; 3190 - source = { 3191 - remotes = [ "https://rubygems.org" ]; 3192 - sha256 = "0mamrl7pxacbc79ny5hzmakc9grbjysm3yy6119ppgsg44fsif01"; 3193 - type = "gem"; 3194 - }; 3195 - version = "3.1.0"; 3196 }; 3197 syntax_tree = { 3198 dependencies = [ "prettier_print" ]; ··· 3226 platforms = [ ]; 3227 source = { 3228 remotes = [ "https://rubygems.org" ]; 3229 - sha256 = "0lxik4ngvbphivyhss9i59c67zxkc0z7k0r683qshw1gdkfxzd8f"; 3230 type = "gem"; 3231 }; 3232 - version = "1.3.3.1"; 3233 }; 3234 thor = { 3235 groups = [ ··· 3240 platforms = [ ]; 3241 source = { 3242 remotes = [ "https://rubygems.org" ]; 3243 - sha256 = "1vq1fjp45az9hfp6fxljhdrkv75cvbab1jfrwcw738pnsiqk8zps"; 3244 type = "gem"; 3245 }; 3246 - version = "1.3.1"; 3247 }; 3248 timeout = { 3249 - groups = [ "default" ]; 3250 platforms = [ ]; 3251 source = { 3252 remotes = [ "https://rubygems.org" ]; 3253 - sha256 = "16mvvsmx90023wrhf8dxc1lpqh0m8alk65shb7xcya6a9gflw7vg"; 3254 type = "gem"; 3255 }; 3256 - version = "0.4.1"; 3257 }; 3258 tzinfo = { 3259 dependencies = [ "concurrent-ruby" ]; ··· 3276 platforms = [ ]; 3277 source = { 3278 remotes = [ "https://rubygems.org" ]; 3279 - sha256 = "1rg1dmx6mknjazb8qq0j9sb9fah470my5sbjb6f3pa6si5018682"; 3280 type = "gem"; 3281 }; 3282 - version = "1.2024.1"; 3283 }; 3284 uglifier = { 3285 dependencies = [ "execjs" ]; ··· 3287 platforms = [ ]; 3288 source = { 3289 remotes = [ "https://rubygems.org" ]; 3290 - sha256 = "0wgh7bzy68vhv9v68061519dd8samcy8sazzz0w3k8kqpy3g4s5f"; 3291 type = "gem"; 3292 }; 3293 - version = "4.2.0"; 3294 }; 3295 unf = { 3296 - dependencies = [ "unf_ext" ]; 3297 groups = [ "default" ]; 3298 platforms = [ ]; 3299 source = { 3300 remotes = [ "https://rubygems.org" ]; 3301 - sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"; 3302 type = "gem"; 3303 }; 3304 - version = "0.1.4"; 3305 }; 3306 - unf_ext = { 3307 - groups = [ "default" ]; 3308 platforms = [ ]; 3309 source = { 3310 remotes = [ "https://rubygems.org" ]; 3311 - sha256 = "1sf6bxvf6x8gihv6j63iakixmdddgls58cpxpg32chckb2l18qcj"; 3312 type = "gem"; 3313 }; 3314 - version = "0.0.9.1"; 3315 }; 3316 - unicode-display_width = { 3317 groups = [ 3318 "default" 3319 "development" ··· 3322 platforms = [ ]; 3323 source = { 3324 remotes = [ "https://rubygems.org" ]; 3325 - sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky"; 3326 type = "gem"; 3327 }; 3328 - version = "2.5.0"; 3329 }; 3330 unicorn = { 3331 dependencies = [ ··· 3369 platforms = [ ]; 3370 source = { 3371 remotes = [ "https://rubygems.org" ]; 3372 - sha256 = "094gk72ckazf495qc76gk09b5i318d5l9m7bicg2wxlrjcm3qm96"; 3373 type = "gem"; 3374 }; 3375 - version = "0.13.0"; 3376 }; 3377 version_gem = { 3378 groups = [ "default" ]; ··· 3408 platforms = [ ]; 3409 source = { 3410 remotes = [ "https://rubygems.org" ]; 3411 - sha256 = "158d2ikjfzw43kgm095klp43ihphk0cv5xjprk44w73xfv03i9qg"; 3412 type = "gem"; 3413 }; 3414 - version = "3.23.1"; 3415 }; 3416 webrick = { 3417 groups = [ ··· 3422 platforms = [ ]; 3423 source = { 3424 remotes = [ "https://rubygems.org" ]; 3425 - sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r"; 3426 type = "gem"; 3427 }; 3428 - version = "1.8.1"; 3429 }; 3430 websocket = { 3431 groups = [ ··· 3469 platforms = [ ]; 3470 source = { 3471 remotes = [ "https://rubygems.org" ]; 3472 - sha256 = "1r0b8w58p7gy06wph1qdjv2p087hfnmhd9jk23vjdj803dn761am"; 3473 type = "gem"; 3474 }; 3475 - version = "0.9.36"; 3476 }; 3477 zeitwerk = { 3478 groups = [ 3479 "default" 3480 "development" 3481 "test" 3482 ]; 3483 platforms = [ ]; 3484 source = { 3485 remotes = [ "https://rubygems.org" ]; 3486 - sha256 = "08cfb35232p9s1r4jqv8wacv38vxh699mgbr9y03ga89gx9lipqp"; 3487 type = "gem"; 3488 }; 3489 - version = "2.6.16"; 3490 }; 3491 }
··· 6 "activejob" 7 "activesupport" 8 "mail" 9 "rails-dom-testing" 10 ]; 11 groups = [ "default" ]; 12 platforms = [ ]; 13 source = { 14 remotes = [ "https://rubygems.org" ]; 15 + sha256 = "07xjqxmwif57wxz28ch10c3c2261ydv1x56vsiidg2icqciyaamh"; 16 type = "gem"; 17 }; 18 + version = "7.2.2.1"; 19 }; 20 actionpack = { 21 dependencies = [ ··· 28 "rack-test" 29 "rails-dom-testing" 30 "rails-html-sanitizer" 31 + "useragent" 32 ]; 33 groups = [ 34 "default" ··· 38 platforms = [ ]; 39 source = { 40 remotes = [ "https://rubygems.org" ]; 41 + sha256 = "0d7pq6fsf041fvskzmqm12xcgk5m9d5fa6kbs1lsbmfbgc51dchp"; 42 type = "gem"; 43 }; 44 + version = "7.2.2.1"; 45 }; 46 actionview = { 47 dependencies = [ ··· 59 platforms = [ ]; 60 source = { 61 remotes = [ "https://rubygems.org" ]; 62 + sha256 = "19arngl1nshasvbh90gzc23z1vpid2xzg3043grbmcfqyc68iz39"; 63 type = "gem"; 64 }; 65 + version = "7.2.2.1"; 66 }; 67 actionview_precompiler = { 68 dependencies = [ "actionview" ]; ··· 95 platforms = [ ]; 96 source = { 97 remotes = [ "https://rubygems.org" ]; 98 + sha256 = "0nryqb19i3frxhanykf6lmrw0rb09863z114gi7sm55kff2mmygj"; 99 type = "gem"; 100 }; 101 + version = "7.2.2.1"; 102 }; 103 activemodel = { 104 dependencies = [ "activesupport" ]; ··· 110 platforms = [ ]; 111 source = { 112 remotes = [ "https://rubygems.org" ]; 113 + sha256 = "1bzxvccj8349slymls7navb5y14anglkkasphcd6gi72kqgqd643"; 114 type = "gem"; 115 }; 116 + version = "7.2.2.1"; 117 }; 118 activerecord = { 119 dependencies = [ ··· 129 platforms = [ ]; 130 source = { 131 remotes = [ "https://rubygems.org" ]; 132 + sha256 = "1fgscw775wj4l7f5pj274a984paz23zy0111giqkhl9dqdqiz8vr"; 133 type = "gem"; 134 }; 135 + version = "7.2.2.1"; 136 }; 137 activesupport = { 138 dependencies = [ 139 "base64" 140 + "benchmark" 141 "bigdecimal" 142 "concurrent-ruby" 143 "connection_pool" 144 "drb" 145 "i18n" 146 + "logger" 147 "minitest" 148 + "securerandom" 149 "tzinfo" 150 ]; 151 groups = [ ··· 156 platforms = [ ]; 157 source = { 158 remotes = [ "https://rubygems.org" ]; 159 + sha256 = "1xa7hr4gp2p86ly6n1j2skyx8pfg6yi621kmnh7zhxr9m7wcnaw4"; 160 type = "gem"; 161 }; 162 + version = "7.2.2.1"; 163 }; 164 addressable = { 165 dependencies = [ "public_suffix" ]; ··· 310 }; 311 version = "0.2.0"; 312 }; 313 + benchmark = { 314 + groups = [ 315 + "default" 316 + "development" 317 + "test" 318 + ]; 319 + platforms = [ ]; 320 + source = { 321 + remotes = [ "https://rubygems.org" ]; 322 + sha256 = "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg"; 323 + type = "gem"; 324 + }; 325 + version = "0.4.0"; 326 + }; 327 better_errors = { 328 dependencies = [ 329 "erubi" ··· 355 platforms = [ ]; 356 source = { 357 remotes = [ "https://rubygems.org" ]; 358 + sha256 = "1k6qzammv9r6b2cw3siasaik18i6wjc5m0gw5nfdc6jj64h79z1g"; 359 type = "gem"; 360 }; 361 + version = "3.1.9"; 362 }; 363 binding_of_caller = { 364 dependencies = [ "debug_inspector" ]; ··· 387 ]; 388 source = { 389 remotes = [ "https://rubygems.org" ]; 390 + sha256 = "0mdgj9yw1hmx3xh2qxyjc31y8igmxzd9h0c245ay2zkz76pl4k5c"; 391 type = "gem"; 392 }; 393 + version = "1.18.4"; 394 }; 395 builder = { 396 groups = [ ··· 415 platforms = [ ]; 416 source = { 417 remotes = [ "https://rubygems.org" ]; 418 + sha256 = "0kfyg2j6a4sg94sajnmy0scv9dxjh7jka9dlil1fzpx137g2zw3p"; 419 type = "gem"; 420 }; 421 + version = "8.0.0"; 422 }; 423 byebug = { 424 groups = [ ··· 528 platforms = [ ]; 529 source = { 530 remotes = [ "https://rubygems.org" ]; 531 + sha256 = "0drbrv5m3l3qpal7s87gvss81cbzl76gad1hqkpqfqlphf0h7qb3"; 532 type = "gem"; 533 }; 534 + version = "4.0.3"; 535 }; 536 concurrent-ruby = { 537 groups = [ ··· 542 platforms = [ ]; 543 source = { 544 remotes = [ "https://rubygems.org" ]; 545 + sha256 = "1ipbrgvf0pp6zxdk5ascp6i29aybz2bx9wdrlchjmpx6mhvkwfw1"; 546 type = "gem"; 547 }; 548 + version = "1.3.5"; 549 }; 550 connection_pool = { 551 + groups = [ 552 + "default" 553 + "development" 554 + "test" 555 + ]; 556 platforms = [ ]; 557 source = { 558 remotes = [ "https://rubygems.org" ]; 559 + sha256 = "1z7bag6zb2vwi7wp2bkdkmk7swkj6zfnbsnc949qq0wfsgw94fr3"; 560 type = "gem"; 561 }; 562 + version = "2.5.0"; 563 }; 564 cose = { 565 dependencies = [ ··· 570 platforms = [ ]; 571 source = { 572 remotes = [ "https://rubygems.org" ]; 573 + sha256 = "1rbdzl9n8ppyp38y75hw06s17kp922ybj6jfvhz52p83dg6xpm6m"; 574 type = "gem"; 575 }; 576 + version = "1.3.1"; 577 }; 578 cppjieba_rb = { 579 groups = [ "default" ]; 580 platforms = [ ]; 581 source = { 582 remotes = [ "https://rubygems.org" ]; 583 + sha256 = "1bzsr3k926cwz6r0sx6p60cjyhqls7n8fd123f6qmhkfgfspm6ii"; 584 type = "gem"; 585 }; 586 + version = "0.4.4"; 587 }; 588 crack = { 589 dependencies = [ ··· 622 platforms = [ ]; 623 source = { 624 remotes = [ "https://rubygems.org" ]; 625 + sha256 = "0625073hwx41c246v9dvkp0rk0xgh9d0sc0gm73dbmlxnjwgalv7"; 626 type = "gem"; 627 }; 628 + version = "1.21.0"; 629 }; 630 csv = { 631 groups = [ "default" ]; 632 platforms = [ ]; 633 source = { 634 remotes = [ "https://rubygems.org" ]; 635 + sha256 = "0kmx36jjh2sahd989vcvw74lrlv07dqc3rnxchc5sj2ywqsw3w3g"; 636 type = "gem"; 637 }; 638 + version = "3.3.2"; 639 }; 640 date = { 641 + groups = [ 642 + "default" 643 + "development" 644 + "test" 645 + ]; 646 platforms = [ ]; 647 source = { 648 remotes = [ "https://rubygems.org" ]; 649 + sha256 = "0kz6mc4b9m49iaans6cbx031j9y7ldghpi5fzsdh0n3ixwa8w9mz"; 650 type = "gem"; 651 }; 652 + version = "3.4.1"; 653 }; 654 debug_inspector = { 655 groups = [ ··· 683 platforms = [ ]; 684 source = { 685 remotes = [ "https://rubygems.org" ]; 686 + sha256 = "19xaz5qmw0kg1rdsjh13vk7674bpcmjy6cnddx1cvl80vgkvjr22"; 687 type = "gem"; 688 }; 689 + version = "3.4.3"; 690 }; 691 digest = { 692 groups = [ "default" ]; 693 platforms = [ ]; 694 source = { 695 remotes = [ "https://rubygems.org" ]; 696 + sha256 = "149r5nnr76g0lp0iz7xiw0zf4civrbs5zpmd5zc6agv8xj970bps"; 697 type = "gem"; 698 }; 699 + version = "3.2.0"; 700 + }; 701 + digest-xxhash = { 702 + groups = [ "migrations" ]; 703 + platforms = [ ]; 704 + source = { 705 + remotes = [ "https://rubygems.org" ]; 706 + sha256 = "1mwqln5078r4arxzngbzvr82fshl1bn836ga9dm17i03khqdi2d9"; 707 + type = "gem"; 708 + }; 709 + version = "0.2.9"; 710 }; 711 discourse-fonts = { 712 groups = [ "default" ]; 713 platforms = [ ]; 714 source = { 715 remotes = [ "https://rubygems.org" ]; 716 + sha256 = "18bj5d0hf7bwy0pppah55aawg7yn61sjgjhh03j5lcnkxl9mrlm7"; 717 type = "gem"; 718 }; 719 + version = "0.0.18"; 720 }; 721 discourse-seed-fu = { 722 dependencies = [ ··· 772 }; 773 version = "2.2.1"; 774 }; 775 + dry-initializer = { 776 + groups = [ "default" ]; 777 + platforms = [ ]; 778 + source = { 779 + remotes = [ "https://rubygems.org" ]; 780 + sha256 = "1qy4cv0j0ahabprdbp02nc3r1606jd5dp90lzqg0mp0jz6c9gm9p"; 781 + type = "gem"; 782 + }; 783 + version = "3.2.0"; 784 + }; 785 email_reply_trimmer = { 786 groups = [ "default" ]; 787 platforms = [ ]; 788 source = { 789 remotes = [ "https://rubygems.org" ]; 790 + sha256 = "09f5sq41fb912jxsbzh68hmkwq9gj9p8fg0zbwikf80sxsjkz105"; 791 type = "gem"; 792 }; 793 + version = "0.2.0"; 794 }; 795 erubi = { 796 groups = [ ··· 808 ]; 809 source = { 810 remotes = [ "https://rubygems.org" ]; 811 + sha256 = "1naaxsqkv5b3vklab5sbb9sdpszrjzlfsbqpy7ncbnw510xi10m0"; 812 type = "gem"; 813 }; 814 + version = "1.13.1"; 815 }; 816 excon = { 817 groups = [ "default" ]; 818 platforms = [ ]; 819 source = { 820 remotes = [ "https://rubygems.org" ]; 821 + sha256 = "1am69fn9nzj2pa05fd02q4zbzn1g7c9w5g52yjzdsbhm1x9n9g95"; 822 type = "gem"; 823 }; 824 + version = "1.2.3"; 825 }; 826 execjs = { 827 groups = [ ··· 831 platforms = [ ]; 832 source = { 833 remotes = [ "https://rubygems.org" ]; 834 + sha256 = "03a590q16nhqvfms0lh42mp6a1i41w41qpdnf39zjbq5y3l8pjvb"; 835 type = "gem"; 836 }; 837 + version = "2.10.0"; 838 }; 839 exifr = { 840 groups = [ "default" ]; 841 platforms = [ ]; 842 source = { 843 remotes = [ "https://rubygems.org" ]; 844 + sha256 = "155qqhai5z2742aqa4mwkxmqrpcv48siqz55rcx79wvgdg6790vn"; 845 type = "gem"; 846 }; 847 + version = "1.4.1"; 848 + }; 849 + extralite-bundle = { 850 + groups = [ "migrations" ]; 851 + platforms = [ ]; 852 + source = { 853 + remotes = [ "https://rubygems.org" ]; 854 + sha256 = "1x73a43hjw7f9vwlhfax4rmp7hpwaadvcamnbw31hh94bx3i71lv"; 855 + type = "gem"; 856 + }; 857 + version = "2.8.2"; 858 }; 859 fabrication = { 860 groups = [ ··· 896 faraday = { 897 dependencies = [ 898 "faraday-net_http" 899 + "json" 900 "logger" 901 ]; 902 groups = [ "default" ]; 903 platforms = [ ]; 904 source = { 905 remotes = [ "https://rubygems.org" ]; 906 + sha256 = "1mls9g490k63rdmjc9shqshqzznfn1y21wawkxrwp2vvbk13jwqm"; 907 type = "gem"; 908 }; 909 + version = "2.12.2"; 910 }; 911 faraday-net_http = { 912 dependencies = [ "net-http" ]; ··· 914 platforms = [ ]; 915 source = { 916 remotes = [ "https://rubygems.org" ]; 917 + sha256 = "0jp5ci6g40d6i50bsywp35l97nc2fpi9a592r2cibwicdb6y9wd1"; 918 type = "gem"; 919 }; 920 + version = "3.4.0"; 921 }; 922 faraday-retry = { 923 dependencies = [ "faraday" ]; ··· 976 ]; 977 source = { 978 remotes = [ "https://rubygems.org" ]; 979 + sha256 = "0fgwn1grxf4zxmyqmb9i4z2hr111585n9jnk17y6y7hhs7dv1xi6"; 980 type = "gem"; 981 }; 982 + version = "1.17.1"; 983 }; 984 fspath = { 985 groups = [ "default" ]; ··· 1011 platforms = [ ]; 1012 source = { 1013 remotes = [ "https://rubygems.org" ]; 1014 + sha256 = "0rmmp533ypc5c2r3ks8zqxchqkf1g8laig87f7hdfmwz0p07cmcs"; 1015 type = "gem"; 1016 }; 1017 + version = "4.29.3"; 1018 }; 1019 guess_html_encoding = { 1020 groups = [ "default" ]; ··· 1044 platforms = [ ]; 1045 source = { 1046 remotes = [ "https://rubygems.org" ]; 1047 + sha256 = "0xqsnx25lm1wwgchvrl5xla5zzk3d6gbkdfj062cwggdsvgfwc1c"; 1048 type = "gem"; 1049 }; 1050 + version = "1.1.2"; 1051 }; 1052 hashie = { 1053 groups = [ "default" ]; ··· 1065 platforms = [ ]; 1066 source = { 1067 remotes = [ "https://rubygems.org" ]; 1068 + sha256 = "0jmvyhjp2v3iq47la7w6psrxbprnbnmzz0hxxski3vzn356x7jv7"; 1069 type = "gem"; 1070 }; 1071 + version = "3.1.2"; 1072 }; 1073 htmlentities = { 1074 groups = [ "default" ]; ··· 1100 platforms = [ ]; 1101 source = { 1102 remotes = [ "https://rubygems.org" ]; 1103 + sha256 = "03sx3ahz1v5kbqjwxj48msw3maplpp2iyzs22l4jrzrqh4zmgfnf"; 1104 type = "gem"; 1105 }; 1106 + version = "1.14.7"; 1107 }; 1108 image_optim = { 1109 dependencies = [ ··· 1117 platforms = [ ]; 1118 source = { 1119 remotes = [ "https://rubygems.org" ]; 1120 + sha256 = "1h3n8x1rlxz4mkk49lij22x1nn0qk5cvir3fsj4x3s382a4x1zsv"; 1121 type = "gem"; 1122 }; 1123 + version = "0.31.4"; 1124 }; 1125 image_size = { 1126 groups = [ "default" ]; ··· 1151 platforms = [ ]; 1152 source = { 1153 remotes = [ "https://rubygems.org" ]; 1154 + sha256 = "18pgvl7lfjpichdfh1g50rpz0zpaqrpr52ybn9liv1v9pjn9ysnd"; 1155 type = "gem"; 1156 }; 1157 + version = "0.8.0"; 1158 }; 1159 irb = { 1160 dependencies = [ 1161 + "pp" 1162 "rdoc" 1163 "reline" 1164 ]; ··· 1170 platforms = [ ]; 1171 source = { 1172 remotes = [ "https://rubygems.org" ]; 1173 + sha256 = "1478m97wiy6nwg6lnl0szy39p46acsvrhax552vsh1s2mi2sgg6r"; 1174 type = "gem"; 1175 }; 1176 + version = "1.15.1"; 1177 }; 1178 iso8601 = { 1179 groups = [ "default" ]; ··· 1204 platforms = [ ]; 1205 source = { 1206 remotes = [ "https://rubygems.org" ]; 1207 + sha256 = "048danb0x10mpch6mf88mky35zjn6wk4hpbqq68ssbq58i3fzgfj"; 1208 type = "gem"; 1209 }; 1210 + version = "2.9.1"; 1211 }; 1212 json-schema = { 1213 + dependencies = [ 1214 + "addressable" 1215 + "bigdecimal" 1216 + ]; 1217 groups = [ 1218 "default" 1219 "development" ··· 1222 platforms = [ ]; 1223 source = { 1224 remotes = [ "https://rubygems.org" ]; 1225 + sha256 = "1gzrf6q4d9kbixj6bpi2bp8dizmqxcmlq30ni86h3ifzpkcrm0mk"; 1226 type = "gem"; 1227 }; 1228 + version = "5.1.1"; 1229 }; 1230 json_schemer = { 1231 dependencies = [ ··· 1238 platforms = [ ]; 1239 source = { 1240 remotes = [ "https://rubygems.org" ]; 1241 + sha256 = "093wb42zyy0a7kk7zxdvs0jivm0knlaz9lrsncjxjj2ppcbn3jsn"; 1242 type = "gem"; 1243 }; 1244 + version = "2.4.0"; 1245 }; 1246 jwt = { 1247 dependencies = [ "base64" ]; ··· 1249 platforms = [ ]; 1250 source = { 1251 remotes = [ "https://rubygems.org" ]; 1252 + sha256 = "1i8wmzgb5nfhvkx1f6bhdwfm7v772172imh439v3xxhkv3hllhp6"; 1253 type = "gem"; 1254 }; 1255 + version = "2.10.1"; 1256 }; 1257 kgio = { 1258 groups = [ "default" ]; ··· 1283 platforms = [ ]; 1284 source = { 1285 remotes = [ "https://rubygems.org" ]; 1286 + sha256 = "0scnz2fvdczdgadvjn0j9d49118aqm3hj66qh8sd2kv6g1j65164"; 1287 type = "gem"; 1288 }; 1289 + version = "3.17.0.4"; 1290 }; 1291 libv8-node = { 1292 groups = [ "default" ]; 1293 platforms = [ ]; 1294 source = { 1295 remotes = [ "https://rubygems.org" ]; 1296 + sha256 = "1ki1vjkq8nhmlz7rqi1ic0mjmbjsa7d1bgcvkzdl4q9vhaa5dzvn"; 1297 type = "gem"; 1298 }; 1299 + version = "22.7.0.4"; 1300 }; 1301 listen = { 1302 dependencies = [ ··· 1331 logger = { 1332 groups = [ 1333 "default" 1334 + "development" 1335 "test" 1336 ]; 1337 platforms = [ ]; 1338 source = { 1339 remotes = [ "https://rubygems.org" ]; 1340 + sha256 = "0sz584vw17pwrrc5zg6yd8lqcgfpjf4qplq3s7fr0r3505nybky3"; 1341 type = "gem"; 1342 }; 1343 + version = "1.6.5"; 1344 }; 1345 lograge = { 1346 dependencies = [ ··· 1391 platforms = [ ]; 1392 source = { 1393 remotes = [ "https://rubygems.org" ]; 1394 + sha256 = "07pfa5kgl7k2hxlzzn89qna6bmiyrxlchgbzi0885frsi08agrk1"; 1395 type = "gem"; 1396 }; 1397 + version = "2.24.0"; 1398 }; 1399 lru_redux = { 1400 groups = [ "default" ]; ··· 1477 ]; 1478 source = { 1479 remotes = [ "https://rubygems.org" ]; 1480 + sha256 = "1y58ba08n4lx123c0hjcc752fc4x802mjy39qj1hq50ak3vpv8br"; 1481 type = "gem"; 1482 }; 1483 + version = "1.1.0"; 1484 }; 1485 message_bus = { 1486 dependencies = [ "rack" ]; ··· 1541 platforms = [ ]; 1542 source = { 1543 remotes = [ "https://rubygems.org" ]; 1544 + sha256 = "0x8asxl83msn815lwmb2d7q5p29p7drhjv5va0byhk60v9n16iwf"; 1545 type = "gem"; 1546 }; 1547 + version = "2.8.8"; 1548 }; 1549 mini_racer = { 1550 dependencies = [ "libv8-node" ]; ··· 1552 platforms = [ ]; 1553 source = { 1554 remotes = [ "https://rubygems.org" ]; 1555 + sha256 = "168a3crdgakm9mk5yrqlqsrx587rm7sk1f2l7sfs9cg87f7xb7ji"; 1556 type = "gem"; 1557 }; 1558 + version = "0.17.0.pre13"; 1559 }; 1560 mini_scheduler = { 1561 dependencies = [ "sidekiq" ]; ··· 1563 platforms = [ ]; 1564 source = { 1565 remotes = [ "https://rubygems.org" ]; 1566 + sha256 = "00rmlcnwhi6gnrwpcv2yicm9ij8zs1mhsbx98ic6rmx8iprq9w6j"; 1567 type = "gem"; 1568 }; 1569 + version = "0.18.0"; 1570 }; 1571 mini_sql = { 1572 groups = [ "default" ]; 1573 platforms = [ ]; 1574 source = { 1575 remotes = [ "https://rubygems.org" ]; 1576 + sha256 = "1vnn88gv935szjz2hndnisfgys19k9z07237w11vpxaad9zn75jj"; 1577 type = "gem"; 1578 }; 1579 + version = "1.6.0"; 1580 }; 1581 mini_suffix = { 1582 dependencies = [ "ffi" ]; ··· 1608 platforms = [ ]; 1609 source = { 1610 remotes = [ "https://rubygems.org" ]; 1611 + sha256 = "0izrg03wn2yj3gd76ck7ifbm9h2kgy8kpg4fk06ckpy4bbicmwlw"; 1612 type = "gem"; 1613 }; 1614 + version = "5.25.4"; 1615 }; 1616 mocha = { 1617 dependencies = [ "ruby2_keywords" ]; ··· 1622 platforms = [ ]; 1623 source = { 1624 remotes = [ "https://rubygems.org" ]; 1625 + sha256 = "0lgqyxxdxgfik77a7lk2hjkr6flimgxr4gcbg3y7bg1ybn6m6zcg"; 1626 type = "gem"; 1627 }; 1628 + version = "2.7.1"; 1629 }; 1630 msgpack = { 1631 groups = [ "default" ]; ··· 1639 ]; 1640 source = { 1641 remotes = [ "https://rubygems.org" ]; 1642 + sha256 = "1a5fsgchkpcca4wf3pipbb2jbj523l7fbaq37j10cr0yymwlkc7z"; 1643 type = "gem"; 1644 }; 1645 + version = "1.7.5"; 1646 }; 1647 multi_json = { 1648 groups = [ "default" ]; ··· 1675 }; 1676 version = "1.1.1"; 1677 }; 1678 net-http = { 1679 dependencies = [ "uri" ]; 1680 groups = [ "default" ]; 1681 platforms = [ ]; 1682 source = { 1683 remotes = [ "https://rubygems.org" ]; 1684 + sha256 = "1ysrwaabhf0sn24jrp0nnp51cdv0jf688mh5i6fsz63q2c6b48cn"; 1685 type = "gem"; 1686 }; 1687 + version = "0.6.0"; 1688 }; 1689 net-imap = { 1690 dependencies = [ ··· 1695 platforms = [ ]; 1696 source = { 1697 remotes = [ "https://rubygems.org" ]; 1698 + sha256 = "0ak8w6ypw4lba1y1mdmqwvkrh84ps6h9kd7hn029h9k85j9sirmb"; 1699 type = "gem"; 1700 }; 1701 + version = "0.5.5"; 1702 }; 1703 net-pop = { 1704 dependencies = [ "net-protocol" ]; ··· 1738 platforms = [ ]; 1739 source = { 1740 remotes = [ "https://rubygems.org" ]; 1741 + sha256 = "1a9www524fl1ykspznz54i0phfqya4x45hqaz67in9dvw1lfwpfr"; 1742 type = "gem"; 1743 }; 1744 + version = "2.7.4"; 1745 }; 1746 nokogiri = { 1747 dependencies = [ ··· 1756 platforms = [ ]; 1757 source = { 1758 remotes = [ "https://rubygems.org" ]; 1759 + sha256 = "1gzqcs1kkykj8lrnbxc1iwr1wqmmaml8l6wyxdvy0vqq6gxiqyck"; 1760 type = "gem"; 1761 }; 1762 + version = "1.18.2"; 1763 }; 1764 oauth = { 1765 dependencies = [ ··· 1805 version = "1.4.11"; 1806 }; 1807 oj = { 1808 + dependencies = [ 1809 + "bigdecimal" 1810 + "ostruct" 1811 + ]; 1812 groups = [ "default" ]; 1813 platforms = [ ]; 1814 source = { 1815 remotes = [ "https://rubygems.org" ]; 1816 + sha256 = "091kbavd1rfiwr6kn1laladspyk67y6hdlsdilz752nqxm9w3ibg"; 1817 type = "gem"; 1818 }; 1819 + version = "3.16.9"; 1820 }; 1821 omniauth = { 1822 dependencies = [ ··· 1877 dependencies = [ 1878 "oauth" 1879 "omniauth" 1880 + "rack" 1881 ]; 1882 groups = [ "default" ]; 1883 platforms = [ ]; 1884 source = { 1885 remotes = [ "https://rubygems.org" ]; 1886 + sha256 = "1a4dqmlv3if6hb4ddyx4y5v7vkpi7zq901104nl0ya1l0b4j5gr5"; 1887 type = "gem"; 1888 }; 1889 + version = "1.2.1"; 1890 }; 1891 omniauth-oauth2 = { 1892 dependencies = [ ··· 1921 platforms = [ ]; 1922 source = { 1923 remotes = [ "https://rubygems.org" ]; 1924 + sha256 = "0ygfbbs3c61d32ymja2k6sznj5pr540cip9z91lhzcvsr4zmffpz"; 1925 type = "gem"; 1926 }; 1927 + version = "3.3.0"; 1928 }; 1929 openssl-signature_algorithm = { 1930 dependencies = [ "openssl" ]; ··· 1949 ]; 1950 source = { 1951 remotes = [ "https://rubygems.org" ]; 1952 + sha256 = "073pk2rhyjq2vhdiz3xh2s884r15cvprw1yfjs7h9bmwdf1f9j81"; 1953 + type = "gem"; 1954 + }; 1955 + version = "3.2.0"; 1956 + }; 1957 + ostruct = { 1958 + groups = [ "default" ]; 1959 + platforms = [ ]; 1960 + source = { 1961 + remotes = [ "https://rubygems.org" ]; 1962 + sha256 = "05xqijcf80sza5pnlp1c8whdaay8x5dc13214ngh790zrizgp8q9"; 1963 type = "gem"; 1964 }; 1965 + version = "0.6.1"; 1966 }; 1967 parallel = { 1968 groups = [ ··· 1973 platforms = [ ]; 1974 source = { 1975 remotes = [ "https://rubygems.org" ]; 1976 + sha256 = "1vy7sjs2pgz4i96v5yk9b7aafbffnvq7nn419fgvw55qlavsnsyq"; 1977 type = "gem"; 1978 }; 1979 + version = "1.26.3"; 1980 }; 1981 parallel_tests = { 1982 dependencies = [ "parallel" ]; ··· 1987 platforms = [ ]; 1988 source = { 1989 remotes = [ "https://rubygems.org" ]; 1990 + sha256 = "0nikqa0h9znbg31p3hl4y3280sqggjd7m47gmjydxw6iasm66l09"; 1991 type = "gem"; 1992 }; 1993 + version = "4.9.0"; 1994 }; 1995 parser = { 1996 dependencies = [ ··· 2005 platforms = [ ]; 2006 source = { 2007 remotes = [ "https://rubygems.org" ]; 2008 + sha256 = "16qi2qhpszm842awxghmsp64yvvawafq96w5jw98irz3f4bh2jbl"; 2009 type = "gem"; 2010 }; 2011 + version = "3.3.7.0"; 2012 }; 2013 pg = { 2014 groups = [ "default" ]; 2015 platforms = [ ]; 2016 source = { 2017 remotes = [ "https://rubygems.org" ]; 2018 + sha256 = "1p2gqqrm895fzr9vi8d118zhql67bm8ydjvgqbq1crdnfggzn7kn"; 2019 type = "gem"; 2020 }; 2021 + version = "1.5.9"; 2022 + }; 2023 + pp = { 2024 + dependencies = [ "prettyprint" ]; 2025 + groups = [ 2026 + "default" 2027 + "development" 2028 + "test" 2029 + ]; 2030 + platforms = [ ]; 2031 + source = { 2032 + remotes = [ "https://rubygems.org" ]; 2033 + sha256 = "1zxnfxjni0r9l2x42fyq0sqpnaf5nakjbap8irgik4kg1h9c6zll"; 2034 + type = "gem"; 2035 + }; 2036 + version = "0.6.2"; 2037 }; 2038 prettier_print = { 2039 groups = [ ··· 2049 }; 2050 version = "1.2.1"; 2051 }; 2052 + prettyprint = { 2053 + groups = [ 2054 + "default" 2055 + "development" 2056 + "test" 2057 + ]; 2058 + platforms = [ ]; 2059 + source = { 2060 + remotes = [ "https://rubygems.org" ]; 2061 + sha256 = "14zicq3plqi217w6xahv7b8f7aj5kpxv1j1w98344ix9h5ay3j9b"; 2062 + type = "gem"; 2063 + }; 2064 + version = "0.2.0"; 2065 + }; 2066 progress = { 2067 groups = [ "default" ]; 2068 platforms = [ ]; ··· 2130 version = "0.6.1"; 2131 }; 2132 psych = { 2133 + dependencies = [ 2134 + "date" 2135 + "stringio" 2136 + ]; 2137 groups = [ 2138 "default" 2139 "development" ··· 2142 platforms = [ ]; 2143 source = { 2144 remotes = [ "https://rubygems.org" ]; 2145 + sha256 = "1vjrx3yd596zzi42dcaq5xw7hil1921r769dlbz08iniaawlp9c4"; 2146 type = "gem"; 2147 }; 2148 + version = "5.2.3"; 2149 }; 2150 public_suffix = { 2151 groups = [ ··· 2167 platforms = [ ]; 2168 source = { 2169 remotes = [ "https://rubygems.org" ]; 2170 + sha256 = "11xd3207k5rl6bz0qxhcb3zcr941rhx7ig2f19gxxmdk7s3hcp7j"; 2171 type = "gem"; 2172 }; 2173 + version = "6.6.0"; 2174 }; 2175 racc = { 2176 groups = [ ··· 2181 platforms = [ ]; 2182 source = { 2183 remotes = [ "https://rubygems.org" ]; 2184 + sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa"; 2185 type = "gem"; 2186 }; 2187 + version = "1.8.1"; 2188 }; 2189 rack = { 2190 groups = [ ··· 2202 ]; 2203 source = { 2204 remotes = [ "https://rubygems.org" ]; 2205 + sha256 = "0ax778fsfvlhj7c11n0d1wdcb8bxvkb190a9lha5d91biwzyx9g4"; 2206 type = "gem"; 2207 }; 2208 + version = "2.2.10"; 2209 }; 2210 rack-mini-profiler = { 2211 dependencies = [ "rack" ]; ··· 2257 platforms = [ ]; 2258 source = { 2259 remotes = [ "https://rubygems.org" ]; 2260 + sha256 = "0qy4ylhcfdn65a5mz2hly7g9vl0g13p5a0rmm6sc0sih5ilkcnh0"; 2261 type = "gem"; 2262 }; 2263 + version = "2.2.0"; 2264 }; 2265 rackup = { 2266 dependencies = [ ··· 2275 platforms = [ ]; 2276 source = { 2277 remotes = [ "https://rubygems.org" ]; 2278 + sha256 = "0jf2ncj2nx56vh96hh2nh6h4r530nccxh87z7c2f37wq515611ms"; 2279 type = "gem"; 2280 }; 2281 + version = "1.0.1"; 2282 }; 2283 rails-dom-testing = { 2284 dependencies = [ ··· 2312 platforms = [ ]; 2313 source = { 2314 remotes = [ "https://rubygems.org" ]; 2315 + sha256 = "0q55i6mpad20m2x1lg5pkqfpbmmapk0sjsrvr1sqgnj2hb5f5z1m"; 2316 type = "gem"; 2317 }; 2318 + version = "1.6.2"; 2319 }; 2320 rails_failover = { 2321 dependencies = [ ··· 2327 platforms = [ ]; 2328 source = { 2329 remotes = [ "https://rubygems.org" ]; 2330 + sha256 = "0pvwgm413fza8q1zc3mmzx504wiljm9d7b9qrkzfzsb2yzpidxs2"; 2331 type = "gem"; 2332 }; 2333 + version = "2.2.0"; 2334 }; 2335 rails_multisite = { 2336 dependencies = [ ··· 2341 platforms = [ ]; 2342 source = { 2343 remotes = [ "https://rubygems.org" ]; 2344 + sha256 = "1al624kvcxa5ijprali9gxp0bqv1w1573iswb5fkg4p2i4xvimvv"; 2345 type = "gem"; 2346 }; 2347 + version = "6.1.0"; 2348 }; 2349 railties = { 2350 dependencies = [ ··· 2364 platforms = [ ]; 2365 source = { 2366 remotes = [ "https://rubygems.org" ]; 2367 + sha256 = "07zy8b88qxx493pc5sfkzvxqj3zcf363r1128n3hsvfx2vqipwg3"; 2368 type = "gem"; 2369 }; 2370 + version = "7.2.2.1"; 2371 }; 2372 rainbow = { 2373 groups = [ ··· 2472 platforms = [ ]; 2473 source = { 2474 remotes = [ "https://rubygems.org" ]; 2475 + sha256 = "1455yhd1arccrns3ghhvn4dl6gnrf4zn1xxsaa33ffyqrn399216"; 2476 type = "gem"; 2477 }; 2478 + version = "1.9.0"; 2479 }; 2480 rdoc = { 2481 dependencies = [ "psych" ]; ··· 2487 platforms = [ ]; 2488 source = { 2489 remotes = [ "https://rubygems.org" ]; 2490 + sha256 = "0h00mb8wcj937srrafpjzq0klfi8rfpd4b3xpbvn9ghrn2wnzimy"; 2491 type = "gem"; 2492 }; 2493 + version = "6.11.0"; 2494 }; 2495 redcarpet = { 2496 groups = [ "generic_import" ]; ··· 2532 platforms = [ ]; 2533 source = { 2534 remotes = [ "https://rubygems.org" ]; 2535 + sha256 = "0qccah61pjvzyyg6mrp27w27dlv6vxlbznzipxjcswl7x3fhsvyb"; 2536 type = "gem"; 2537 }; 2538 + version = "2.10.0"; 2539 }; 2540 reline = { 2541 dependencies = [ "io-console" ]; ··· 2547 platforms = [ ]; 2548 source = { 2549 remotes = [ "https://rubygems.org" ]; 2550 + sha256 = "1lirwlw59apc8m1wjk85y2xidiv0fkxjn6f7p84yqmmyvish6qjp"; 2551 type = "gem"; 2552 }; 2553 + version = "0.6.0"; 2554 }; 2555 request_store = { 2556 dependencies = [ "rack" ]; ··· 2564 version = "1.7.0"; 2565 }; 2566 rexml = { 2567 groups = [ 2568 "default" 2569 "test" 2570 ]; 2571 platforms = [ ]; 2572 source = { 2573 remotes = [ "https://rubygems.org" ]; 2574 + sha256 = "1ch4k2y80r4glr579kxliqnxld2qa91ydq8fiqam38bzpbps3gpg"; 2575 type = "gem"; 2576 }; 2577 + version = "3.4.0"; 2578 }; 2579 rinku = { 2580 groups = [ "default" ]; ··· 2611 ]; 2612 source = { 2613 remotes = [ "https://rubygems.org" ]; 2614 + sha256 = "1pchwrkr0994v7mh054lcp0na3bk3mj2sk0dc33bn6bhxrnirj1a"; 2615 type = "gem"; 2616 }; 2617 + version = "4.5.1"; 2618 }; 2619 rqrcode = { 2620 dependencies = [ ··· 2679 platforms = [ ]; 2680 source = { 2681 remotes = [ "https://rubygems.org" ]; 2682 + sha256 = "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl"; 2683 type = "gem"; 2684 }; 2685 + version = "3.13.2"; 2686 }; 2687 rspec-expectations = { 2688 dependencies = [ ··· 2697 platforms = [ ]; 2698 source = { 2699 remotes = [ "https://rubygems.org" ]; 2700 + sha256 = "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf"; 2701 type = "gem"; 2702 }; 2703 + version = "3.13.3"; 2704 }; 2705 rspec-html-matchers = { 2706 dependencies = [ ··· 2732 platforms = [ ]; 2733 source = { 2734 remotes = [ "https://rubygems.org" ]; 2735 + sha256 = "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3"; 2736 type = "gem"; 2737 }; 2738 + version = "3.13.2"; 2739 + }; 2740 + rspec-multi-mock = { 2741 + dependencies = [ "rspec" ]; 2742 + groups = [ 2743 + "development" 2744 + "test" 2745 + ]; 2746 + platforms = [ ]; 2747 + source = { 2748 + remotes = [ "https://rubygems.org" ]; 2749 + sha256 = "0k3rafylxilq9jzdz450vgiwf3bvz4a9l3ppmgncv78xipr71518"; 2750 + type = "gem"; 2751 + }; 2752 + version = "0.3.1"; 2753 }; 2754 rspec-rails = { 2755 dependencies = [ ··· 2768 platforms = [ ]; 2769 source = { 2770 remotes = [ "https://rubygems.org" ]; 2771 + sha256 = "0izfwfb9bfb5q3wjgjc85b9nlkribqn8vk75zadafv08qilmnn4l"; 2772 type = "gem"; 2773 }; 2774 + version = "7.1.0"; 2775 }; 2776 rspec-support = { 2777 groups = [ ··· 2782 platforms = [ ]; 2783 source = { 2784 remotes = [ "https://rubygems.org" ]; 2785 + sha256 = "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf"; 2786 type = "gem"; 2787 }; 2788 + version = "3.13.2"; 2789 }; 2790 rss = { 2791 dependencies = [ "rexml" ]; ··· 2793 platforms = [ ]; 2794 source = { 2795 remotes = [ "https://rubygems.org" ]; 2796 + sha256 = "0dv74a07j3ih5ykyszs1k2cjvgs5c1pzrvcb1wc2bfai8p038qml"; 2797 type = "gem"; 2798 }; 2799 + version = "0.3.1"; 2800 }; 2801 rswag-specs = { 2802 dependencies = [ ··· 2812 platforms = [ ]; 2813 source = { 2814 remotes = [ "https://rubygems.org" ]; 2815 + sha256 = "149apnslj99w2fvhlwk39k9wf5zlh1f03j0xs8pbvc08qj2n18lb"; 2816 type = "gem"; 2817 }; 2818 + version = "2.16.0"; 2819 }; 2820 rtlcss = { 2821 dependencies = [ "mini_racer" ]; ··· 2836 "parser" 2837 "rainbow" 2838 "regexp_parser" 2839 "rubocop-ast" 2840 "ruby-progressbar" 2841 "unicode-display_width" ··· 2848 platforms = [ ]; 2849 source = { 2850 remotes = [ "https://rubygems.org" ]; 2851 + sha256 = "1ypwxjy2cp44278m9ljg3s937n2cd6x4yskcyzf1k9m3hkjd3pyk"; 2852 type = "gem"; 2853 }; 2854 + version = "1.71.1"; 2855 }; 2856 rubocop-ast = { 2857 dependencies = [ "parser" ]; ··· 2863 platforms = [ ]; 2864 source = { 2865 remotes = [ "https://rubygems.org" ]; 2866 + sha256 = "1bi6pgnii77763dzwhafcp8lrmnh4n1bqbdimhc9lfj4zs96gpsg"; 2867 type = "gem"; 2868 }; 2869 + version = "1.38.0"; 2870 }; 2871 rubocop-capybara = { 2872 dependencies = [ "rubocop" ]; ··· 2900 platforms = [ ]; 2901 source = { 2902 remotes = [ "https://rubygems.org" ]; 2903 + sha256 = "13n46107615lc8lkx4dh38hpzv4qxx4a0m6dvf0r21zxnvz7ysyl"; 2904 type = "gem"; 2905 }; 2906 + version = "3.9.3"; 2907 }; 2908 rubocop-factory_bot = { 2909 dependencies = [ "rubocop" ]; ··· 2935 platforms = [ ]; 2936 source = { 2937 remotes = [ "https://rubygems.org" ]; 2938 + sha256 = "1ahpgc22shmkk1n96rz3islcpx5sgg4z3mblynjz8qjxipsgrhj1"; 2939 type = "gem"; 2940 }; 2941 + version = "2.29.1"; 2942 }; 2943 rubocop-rspec = { 2944 dependencies = [ "rubocop" ]; ··· 2950 platforms = [ ]; 2951 source = { 2952 remotes = [ "https://rubygems.org" ]; 2953 + sha256 = "11a89mzbby49hbd8nhkjrxpr8bq24fafl728mjkk15ccd8xw28c7"; 2954 type = "gem"; 2955 }; 2956 + version = "3.4.0"; 2957 }; 2958 rubocop-rspec_rails = { 2959 dependencies = [ ··· 2985 ]; 2986 source = { 2987 remotes = [ "https://rubygems.org" ]; 2988 + sha256 = "097ac9ns2j29zj5fw08libz8izibrlfgg6vkj55d4bzrii296qq2"; 2989 type = "gem"; 2990 }; 2991 + version = "1.7.1"; 2992 }; 2993 ruby-progressbar = { 2994 groups = [ ··· 3013 platforms = [ ]; 3014 source = { 3015 remotes = [ "https://rubygems.org" ]; 3016 + sha256 = "032qqqaj5v09a7r5jpblv7dc37f278qv3b1nag9wsbn6kb4dslbk"; 3017 type = "gem"; 3018 }; 3019 + version = "0.7.2"; 3020 }; 3021 ruby2_keywords = { 3022 groups = [ ··· 3033 version = "0.0.5"; 3034 }; 3035 rubyzip = { 3036 + groups = [ 3037 + "default" 3038 + "test" 3039 + ]; 3040 platforms = [ ]; 3041 source = { 3042 remotes = [ "https://rubygems.org" ]; 3043 + sha256 = "05an0wz87vkmqwcwyh5rjiaavydfn5f4q1lixcsqkphzvj7chxw5"; 3044 type = "gem"; 3045 }; 3046 + version = "2.4.1"; 3047 }; 3048 sanitize = { 3049 dependencies = [ ··· 3054 platforms = [ ]; 3055 source = { 3056 remotes = [ "https://rubygems.org" ]; 3057 + sha256 = "111r4xdcf6ihdnrs6wkfc6nqdzrjq0z69x9sf83r7ri6fffip796"; 3058 type = "gem"; 3059 }; 3060 + version = "7.0.0"; 3061 }; 3062 sass-embedded = { 3063 dependencies = [ ··· 3084 }; 3085 version = "1.77.7"; 3086 }; 3087 + securerandom = { 3088 + groups = [ 3089 + "default" 3090 + "development" 3091 + "test" 3092 + ]; 3093 + platforms = [ ]; 3094 + source = { 3095 + remotes = [ "https://rubygems.org" ]; 3096 + sha256 = "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc"; 3097 + type = "gem"; 3098 + }; 3099 + version = "0.4.1"; 3100 + }; 3101 selenium-devtools = { 3102 dependencies = [ "selenium-webdriver" ]; 3103 groups = [ "test" ]; 3104 platforms = [ ]; 3105 source = { 3106 remotes = [ "https://rubygems.org" ]; 3107 + sha256 = "076vwy4x41hahcwni4bjkpc6fira79y1f9qbvx6w5ciwvn99k9qa"; 3108 type = "gem"; 3109 }; 3110 + version = "0.132.0"; 3111 }; 3112 selenium-webdriver = { 3113 dependencies = [ ··· 3121 platforms = [ ]; 3122 source = { 3123 remotes = [ "https://rubygems.org" ]; 3124 + sha256 = "1lw9b8gxr921akpc02zvwkig5m0m6y6xd438c6f1ysf3c8h75xsc"; 3125 type = "gem"; 3126 }; 3127 + version = "4.28.0"; 3128 }; 3129 shoulda-matchers = { 3130 dependencies = [ "activesupport" ]; ··· 3135 platforms = [ ]; 3136 source = { 3137 remotes = [ "https://rubygems.org" ]; 3138 + sha256 = "1c082vpfdf3865xq6xayxw2hwqswhnc9g030p1gi4hmk9dzvnmch"; 3139 type = "gem"; 3140 }; 3141 + version = "6.4.0"; 3142 }; 3143 sidekiq = { 3144 dependencies = [ ··· 3178 platforms = [ ]; 3179 source = { 3180 remotes = [ "https://rubygems.org" ]; 3181 + sha256 = "02zi3rwihp7rlnp9x18c9idnkx7x68w6jmxdhyc0xrhjwrz0pasx"; 3182 type = "gem"; 3183 }; 3184 + version = "0.13.1"; 3185 }; 3186 simplecov_json_formatter = { 3187 groups = [ ··· 3230 platforms = [ ]; 3231 source = { 3232 remotes = [ "https://rubygems.org" ]; 3233 + sha256 = "10ykzsa76cf8kvbfkszlvbyn4ckcx1mxjhfvwxzs7y28cljhzhkj"; 3234 type = "gem"; 3235 }; 3236 + version = "3.7.5"; 3237 }; 3238 sprockets-rails = { 3239 dependencies = [ ··· 3245 platforms = [ ]; 3246 source = { 3247 remotes = [ "https://rubygems.org" ]; 3248 + sha256 = "17hiqkdpcjyyhlm997mgdcr45v35j5802m5a979i5jgqx5n8xs59"; 3249 type = "gem"; 3250 }; 3251 + version = "3.5.2"; 3252 }; 3253 sqlite3 = { 3254 dependencies = [ "mini_portile2" ]; ··· 3256 platforms = [ ]; 3257 source = { 3258 remotes = [ "https://rubygems.org" ]; 3259 + sha256 = "0sqshkafxa1r34yj4yxisd4kddmjq9jrhx6azqy3z71nwqv01yl7"; 3260 type = "gem"; 3261 }; 3262 + version = "2.5.0"; 3263 }; 3264 sshkey = { 3265 groups = [ "default" ]; ··· 3283 ]; 3284 source = { 3285 remotes = [ "https://rubygems.org" ]; 3286 + sha256 = "03788mbipmihq2w7rznzvv0ks0s9z1321k1jyr6ffln8as3d5xmg"; 3287 type = "gem"; 3288 }; 3289 + version = "0.2.27"; 3290 }; 3291 stringio = { 3292 groups = [ ··· 3297 platforms = [ ]; 3298 source = { 3299 remotes = [ "https://rubygems.org" ]; 3300 + sha256 = "0cd1kdrf62p2ya3ia4rz49d5012bqinvqjmcgkakknswz0l1hkr0"; 3301 type = "gem"; 3302 }; 3303 + version = "3.1.2"; 3304 }; 3305 syntax_tree = { 3306 dependencies = [ "prettier_print" ]; ··· 3334 platforms = [ ]; 3335 source = { 3336 remotes = [ "https://rubygems.org" ]; 3337 + sha256 = "1vsk2ca9kfrxhyd2xiiyr28hmxkh9vd8j2vwl5f1yfnkv4z52n8s"; 3338 type = "gem"; 3339 }; 3340 + version = "1.4.4"; 3341 }; 3342 thor = { 3343 groups = [ ··· 3348 platforms = [ ]; 3349 source = { 3350 remotes = [ "https://rubygems.org" ]; 3351 + sha256 = "1nmymd86a0vb39pzj2cwv57avdrl6pl3lf5bsz58q594kqxjkw7f"; 3352 type = "gem"; 3353 }; 3354 + version = "1.3.2"; 3355 }; 3356 timeout = { 3357 + groups = [ 3358 + "default" 3359 + "development" 3360 + "test" 3361 + ]; 3362 platforms = [ ]; 3363 source = { 3364 remotes = [ "https://rubygems.org" ]; 3365 + sha256 = "03p31w5ghqfsbz5mcjzvwgkw3h9lbvbknqvrdliy8pxmn9wz02cm"; 3366 type = "gem"; 3367 }; 3368 + version = "0.4.3"; 3369 + }; 3370 + trilogy = { 3371 + groups = [ "migrations" ]; 3372 + platforms = [ ]; 3373 + source = { 3374 + remotes = [ "https://rubygems.org" ]; 3375 + sha256 = "0zq6yrp1074yd5lflz7yqzpicpcg4bxrl7sxw5c4g2m67dk3pmm2"; 3376 + type = "gem"; 3377 + }; 3378 + version = "2.9.0"; 3379 }; 3380 tzinfo = { 3381 dependencies = [ "concurrent-ruby" ]; ··· 3398 platforms = [ ]; 3399 source = { 3400 remotes = [ "https://rubygems.org" ]; 3401 + sha256 = "02yz3x0qxnnwbf7k18yck5pggbnyy43rq0d5w2r6rwlk3981m31d"; 3402 type = "gem"; 3403 }; 3404 + version = "1.2025.1"; 3405 }; 3406 uglifier = { 3407 dependencies = [ "execjs" ]; ··· 3409 platforms = [ ]; 3410 source = { 3411 remotes = [ "https://rubygems.org" ]; 3412 + sha256 = "1apmqsad2y1avffh79f4lfysfppz94fvpyi7lkkj3z8bn60jpm3m"; 3413 type = "gem"; 3414 }; 3415 + version = "4.2.1"; 3416 }; 3417 unf = { 3418 groups = [ "default" ]; 3419 platforms = [ ]; 3420 source = { 3421 remotes = [ "https://rubygems.org" ]; 3422 + sha256 = "1aq4bfddln9kx4lycqdgmahsssljsm3vfgbmb6a3y3nq07hw5g76"; 3423 type = "gem"; 3424 }; 3425 + version = "0.2.0"; 3426 }; 3427 + unicode-display_width = { 3428 + dependencies = [ "unicode-emoji" ]; 3429 + groups = [ 3430 + "default" 3431 + "development" 3432 + "test" 3433 + ]; 3434 platforms = [ ]; 3435 source = { 3436 remotes = [ "https://rubygems.org" ]; 3437 + sha256 = "1has87asspm6m9wgqas8ghhhwyf2i1yqrqgrkv47xw7jq3qjmbwc"; 3438 type = "gem"; 3439 }; 3440 + version = "3.1.4"; 3441 }; 3442 + unicode-emoji = { 3443 groups = [ 3444 "default" 3445 "development" ··· 3448 platforms = [ ]; 3449 source = { 3450 remotes = [ "https://rubygems.org" ]; 3451 + sha256 = "0ajk6rngypm3chvl6r0vwv36q1931fjqaqhjjya81rakygvlwb1c"; 3452 type = "gem"; 3453 }; 3454 + version = "4.0.4"; 3455 }; 3456 unicorn = { 3457 dependencies = [ ··· 3495 platforms = [ ]; 3496 source = { 3497 remotes = [ "https://rubygems.org" ]; 3498 + sha256 = "09qyg6a29cfgd46qid8qvx4sjbv596v19ym73xvhanbyxd6500xk"; 3499 + type = "gem"; 3500 + }; 3501 + version = "1.0.2"; 3502 + }; 3503 + useragent = { 3504 + groups = [ 3505 + "default" 3506 + "development" 3507 + "test" 3508 + ]; 3509 + platforms = [ ]; 3510 + source = { 3511 + remotes = [ "https://rubygems.org" ]; 3512 + sha256 = "0i1q2xdjam4d7gwwc35lfnz0wyyzvnca0zslcfxm9fabml9n83kh"; 3513 type = "gem"; 3514 }; 3515 + version = "0.16.11"; 3516 }; 3517 version_gem = { 3518 groups = [ "default" ]; ··· 3548 platforms = [ ]; 3549 source = { 3550 remotes = [ "https://rubygems.org" ]; 3551 + sha256 = "08kixkdp41dw39kqfxf2wp5m4z9b6fxg6yfa6xin0wy7dxzka0dy"; 3552 type = "gem"; 3553 }; 3554 + version = "3.24.0"; 3555 }; 3556 webrick = { 3557 groups = [ ··· 3562 platforms = [ ]; 3563 source = { 3564 remotes = [ "https://rubygems.org" ]; 3565 + sha256 = "12d9n8hll67j737ym2zw4v23cn4vxyfkb6vyv1rzpwv6y6a3qbdl"; 3566 type = "gem"; 3567 }; 3568 + version = "1.9.1"; 3569 }; 3570 websocket = { 3571 groups = [ ··· 3609 platforms = [ ]; 3610 source = { 3611 remotes = [ "https://rubygems.org" ]; 3612 + sha256 = "14k9lb9a60r9z2zcqg08by9iljrrgjxdkbd91gw17rkqkqwi1sd6"; 3613 type = "gem"; 3614 }; 3615 + version = "0.9.37"; 3616 }; 3617 zeitwerk = { 3618 groups = [ 3619 "default" 3620 "development" 3621 + "migrations" 3622 "test" 3623 ]; 3624 platforms = [ ]; 3625 source = { 3626 remotes = [ "https://rubygems.org" ]; 3627 + sha256 = "0mi7b90hvc6nqv37q27df4i2m27yy56yfy2ki5073474a1h9hi89"; 3628 type = "gem"; 3629 }; 3630 + version = "2.7.1"; 3631 }; 3632 }
+29 -17
pkgs/servers/web-apps/discourse/update.py
··· 1 #!/usr/bin/env nix-shell 2 - #! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ requests click click-log packaging ])" bundix bundler nix-update nurl prefetch-yarn-deps 3 from __future__ import annotations 4 5 import click ··· 86 87 return self._latest_commit_sha 88 89 - def get_yarn_lock_hash(self, rev: str, path: str): 90 - yarnLockText = self.get_file(path, rev) 91 - with tempfile.NamedTemporaryFile(mode='w') as lockFile: 92 - lockFile.write(yarnLockText) 93 - hash = subprocess.check_output(['prefetch-yarn-deps', lockFile.name]).decode().strip() 94 - return subprocess.check_output(["nix", "hash", "to-sri", "--type", "sha256", hash]).decode().strip() 95 - 96 def get_file(self, filepath, rev): 97 """Return file contents at a given rev. 98 ··· 103 r = requests.get(f'https://raw.githubusercontent.com/{self.owner}/{self.repo}/{rev}/{filepath}') 104 r.raise_for_status() 105 return r.text 106 107 108 def _call_nix_update(pkg, version): ··· 233 234 _call_nix_update('discourse', version.version) 235 236 - old_yarn_hash = _nix_eval('discourse.assets.yarnOfflineCache.outputHash') 237 - new_yarn_hash = repo.get_yarn_lock_hash(version.tag, "yarn.lock") 238 - click.echo(f"Updating yarn lock hash: {old_yarn_hash} -> {new_yarn_hash}") 239 240 - with open(Path(__file__).parent / "default.nix", 'r+') as f: 241 - content = f.read() 242 - content = content.replace(old_yarn_hash, new_yarn_hash) 243 - f.seek(0) 244 - f.write(content) 245 - f.truncate() 246 247 248 @cli.command()
··· 1 #!/usr/bin/env nix-shell 2 + #! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ requests click click-log packaging ])" bundix bundler nix-update nurl 3 from __future__ import annotations 4 5 import click ··· 86 87 return self._latest_commit_sha 88 89 def get_file(self, filepath, rev): 90 """Return file contents at a given rev. 91 ··· 96 r = requests.get(f'https://raw.githubusercontent.com/{self.owner}/{self.repo}/{rev}/{filepath}') 97 r.raise_for_status() 98 return r.text 99 + 100 + 101 + def _get_build_lock_hash(): 102 + nixpkgs_path = Path(__file__).parent / '../../../../' 103 + output = subprocess.run(['nix-build', '-A', 'discourse'], text=True, cwd=nixpkgs_path, capture_output=True) 104 + # The line is of the form " got: sha256-xxx" 105 + lines = [i.strip() for i in output.stderr.splitlines()] 106 + new_hash_lines = [i.strip("got:").strip() for i in lines if i.startswith("got:")] 107 + if len(new_hash_lines) == 0: 108 + if output.returncode != 0: 109 + print("Error while fetching new hash with nix build") 110 + print(output.stderr) 111 + print("No hash change is needed") 112 + return None 113 + if len(new_hash_lines) > 1: 114 + print(new_hash_lines) 115 + raise Exception("Got an unexpected number of new hash lines:") 116 + return new_hash_lines[0] 117 118 119 def _call_nix_update(pkg, version): ··· 244 245 _call_nix_update('discourse', version.version) 246 247 + old_pnpm_hash = _nix_eval('discourse.assets.pnpmDeps.outputHash') 248 + new_pnpm_hash = _get_build_lock_hash() 249 + if new_pnpm_hash is not None: 250 + click.echo(f"Updating yarn lock hash: {old_pnpm_hash} -> {new_pnpm_hash}") 251 252 + with open(Path(__file__).parent / "default.nix", 'r+') as f: 253 + content = f.read() 254 + content = content.replace(old_pnpm_hash, new_pnpm_hash) 255 + f.seek(0) 256 + f.write(content) 257 + f.truncate() 258 259 260 @cli.command()