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