diff --git a/.gitignore b/.gitignore index 4d3a3ed9a83..b541d9d4495 100644 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,6 @@ structure.sql # Local development docker /.env + +# Local development direnv file +/.envrc diff --git a/nix/README.md b/nix/README.md new file mode 100644 index 00000000000..ebb7d36c7f7 --- /dev/null +++ b/nix/README.md @@ -0,0 +1,24 @@ +# Nix development + +This directory contains files that ease development on nix-enabled systems. Just run `nix-shell ./nix` in the root project directory. + +The setup was tested on docker-enabled systems, however nothing should stop you from using this without docker. + +This is still a work in progress, feel free to improve as needed. + +## Updating gemset.nix + +Run `bundix --gemset=./nix/gemset.nix` to update the gemset file from the Gemlock file. + +## Autoloading + +If you have `lorri` and `direnv` installed, you can autoload the shell by adding a `.envrc` to the root directory with +the following contents: + +``` +eval "$(lorri direnv --shell-file ./nix/shell.nix)" +``` + +## Questions? + +Contact @b12f diff --git a/nix/gemset.nix b/nix/gemset.nix new file mode 100644 index 00000000000..a74f0adc8cb --- /dev/null +++ b/nix/gemset.nix @@ -0,0 +1,3777 @@ +{ + actioncable = { + dependencies = ["actionpack" "activesupport" "nio4r" "websocket-driver"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0dr6w3h7i7xyqd04aw66x2ddm7xinvlw02pkk1sxczi8x21z16hf"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + actionmailbox = { + dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0w3cq2m1qbmxp7yv3qs82ffn9y46vq5q04vqwxak6ln0ki0v4hn4"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + actionmailer = { + dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "rails-dom-testing"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1wsa6kcgjx5am9hn44q2afg174m2gda4n8bfk5na17nj48s9g1ii"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + actionpack = { + dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0brr9kbmmc4fr2x8a7kj88yv8whfjfvalik3h82ypxlbg5b1c9iz"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + actionpack-xml_parser = { + dependencies = ["actionpack" "railties"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rnm6jrw3mzcf2g3q498igmhsn0kfkxq79w0nm532iclx4g4djs0"; + type = "gem"; + }; + version = "2.0.1"; + }; + actiontext = { + dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "nokogiri"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04f7x7ycg73zc2v3lhvrnl072f7nl0nhp0sspfa2sqq14v4akmmb"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + actionview = { + dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0m009iki20hhwwj713bqdw57hmz650l7drfbajw32xn2qnawf294"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + activejob = { + dependencies = ["activesupport" "globalid"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0zjwcfr4qyff9ln4hhjb1csbjpvr3z4pdgvg8axvhcs86h4xpy2n"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + activemodel = { + dependencies = ["activesupport"]; + groups = ["default" "opf_plugins" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "118slj94hif5g1maaijlxsywrq75h7qdz20bq62303pkrzabjaxm"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + activemodel-serializers-xml = { + dependencies = ["activemodel" "activesupport" "builder"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1pk5qrxxhgxlihim8qkdk805nq584ms71hmcg1766iwhx0v2x3r2"; + type = "gem"; + }; + version = "1.0.2"; + }; + activerecord = { + dependencies = ["activemodel" "activesupport"]; + groups = ["default" "opf_plugins" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jva5iqnjmj76mhhxcvx6xzda071cy80bhxn3r79f76pvgwwyymg"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + activerecord-import = { + dependencies = ["activerecord"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d2kvpyysi0im53lr07b2fya18sms34jkvk6ynw52l415xr47pgj"; + type = "gem"; + }; + version = "1.0.8"; + }; + activerecord-nulldb-adapter = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1iybn9vafw9vcdi966yidj4zk5vy6b0gg0zk39v1r0kgj9n9qm1v"; + type = "gem"; + }; + version = "0.7.0"; + }; + activerecord-session_store = { + dependencies = ["actionpack" "activerecord" "multi_json" "rack" "railties"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06ddhz1b2yg72iv09n48gcd3ix5da7hxlzi7vvj13nrps2qwlffg"; + type = "gem"; + }; + version = "2.0.0"; + }; + activestorage = { + dependencies = ["actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1800ski0619mzyk2p2xcmy4xlym18g3lbqw8wb3ss06jhvn5dl5p"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + activesupport = { + dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0l0khgrb7zn611xjnmygv5wdxh7wq645f613wldn5397q5w3l9lc"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + acts_as_list = { + dependencies = ["activerecord"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1alvcsrqnxr18h4nwprimhjnazqb0z19dwzlw9bv5lbdbkxzg24r"; + type = "gem"; + }; + version = "1.0.3"; + }; + acts_as_tree = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1wx2m64knv57g1q0bi09d7hci69x5n49xkzzcimn2f6ym08fnsdq"; + type = "gem"; + }; + version = "2.9.1"; + }; + addressable = { + dependencies = ["public_suffix"]; + groups = ["default" "development" "opf_plugins" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"; + type = "gem"; + }; + version = "2.7.0"; + }; + aes_key_wrap = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19bn0y70qm6mfj4y1m0j3s8ggh6dvxwrwrj5vfamhdrpddsz8ddr"; + type = "gem"; + }; + version = "1.1.0"; + }; + afm = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"; + type = "gem"; + }; + version = "0.2.2"; + }; + airbrake = { + dependencies = ["airbrake-ruby"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ffqkhyb2c2zpp7yfjzj262aaaj5nvd7bsyl35frlmqjwh36nws4"; + type = "gem"; + }; + version = "11.0.1"; + }; + airbrake-ruby = { + dependencies = ["rbtree3"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06gvb4shpxm42qxcl0xqpbv4ss1a166lwq9xhczp1pb4xm32f6xi"; + type = "gem"; + }; + version = "5.2.0"; + }; + Ascii85 = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ds4v9xgsyvijnlflak4dzf1qwmda9yd5bv8jwsb56nngd399rlw"; + type = "gem"; + }; + version = "1.1.0"; + }; + ast = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y"; + type = "gem"; + }; + version = "2.4.2"; + }; + attr_required = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2"; + type = "gem"; + }; + version = "1.0.1"; + }; + auto_strip_attributes = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1c1rmrm33xz6kk6w2x0jr24cqavh41102s7x8zcvrqjdfk7y1qm7"; + type = "gem"; + }; + version = "2.6.0"; + }; + awesome_nested_set = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06ggf81dy8wkds0b37xgx065b325fm0c6i6g1k0ml4ai8jwphm6r"; + type = "gem"; + }; + version = "3.4.0"; + }; + aws-eventstream = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jfki5ikfr8ln5cdgv4iv1643kax0bjpp29jh78chzy713274jh3"; + type = "gem"; + }; + version = "1.1.1"; + }; + aws-partitions = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ia9b013blnwzz46hbnrqgkzf77vj60i93hbmf7a51jy2fvrcjl1"; + type = "gem"; + }; + version = "1.434.0"; + }; + aws-sdk-core = { + dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1774xyfqf307qvh5npvf01948ayrviaadq576r4jxin6xvlg8j9z"; + type = "gem"; + }; + version = "3.113.0"; + }; + aws-sdk-kms = { + dependencies = ["aws-sdk-core" "aws-sigv4"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01pd0f4srsa65zl4zq4014p9j5yrr2yy9h9ab17g3w9d0qqm2vsh"; + type = "gem"; + }; + version = "1.43.0"; + }; + aws-sdk-s3 = { + dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0vs3zg9d3lzi7rwys4qv62mcmga39s4rg4rmb0dalqknz6lqzhrq"; + type = "gem"; + }; + version = "1.91.0"; + }; + aws-sdk-sns = { + dependencies = ["aws-sdk-core" "aws-sigv4"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pmxi871r2nkl6by89vsy05ahk8dr6hmkny56fycrby6r9kri9q4"; + type = "gem"; + }; + version = "1.39.0"; + }; + aws-sigv4 = { + dependencies = ["aws-eventstream"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d9zhmi3mpfzkkpg7yw7s9r1dwk157kh9875j3c7gh6cy95lmmaw"; + type = "gem"; + }; + version = "1.2.3"; + }; + bcrypt = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02r1c3isfchs5fxivbq99gc3aq4vfyn8snhcy707dal1p8qz12qb"; + type = "gem"; + }; + version = "3.1.16"; + }; + bindata = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bmlqjb5h1ry6wm2d903d6yxibpqzzxwqczvlicsqv0vilaca5ic"; + type = "gem"; + }; + version = "2.4.8"; + }; + binding_of_caller = { + dependencies = ["debug_inspector"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "078n2dkpgsivcf0pr50981w95nfc2bsrp3wpf9wnxz1qsp8jbb9s"; + type = "gem"; + }; + version = "1.0.0"; + }; + bootsnap = { + dependencies = ["msgpack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qnh58f5n3yppmpqj555pp9qbppmgrjay17y9pvg5dfhvmix08kl"; + type = "gem"; + }; + version = "1.7.2"; + }; + brakeman = { + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0k1ynqsr9b0vnxqb7d5hbdk4q1i98zjzdnx4y1ylikz4rmkizf91"; + type = "gem"; + }; + version = "5.0.0"; + }; + browser = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0g4bcpax07kqqr9cp7cjc7i0pcij4nqpn1rdsg2wdwhzf00m6x32"; + type = "gem"; + }; + version = "5.3.1"; + }; + budgets = { + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/budgets; + type = "path"; + }; + version = "1.0.0"; + }; + builder = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"; + type = "gem"; + }; + version = "3.2.4"; + }; + byebug = { + groups = ["default" "development" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nx3yjf4xzdgb8jkmk2344081gqr22pgjqnmjg2q64mj5d6r9194"; + type = "gem"; + }; + version = "11.1.3"; + }; + capybara = { + dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1viqcpsngy9fqjd68932m43ad6xj656d1x33nx9565q57chgi29k"; + type = "gem"; + }; + version = "3.35.3"; + }; + capybara-screenshot = { + dependencies = ["capybara" "launchy"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1k847fn9vlzpakl2ydq4pphcnc9bkgrdc2r67p2a18sn30l3j50q"; + type = "gem"; + }; + version = "1.0.25"; + }; + carrierwave = { + dependencies = ["activemodel" "activesupport" "mime-types" "ssrf_filter"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "055i3ybjv9n9hqaazxn3d9ibqhlwh93d4hdlwbpjjfy8qbrz6hiw"; + type = "gem"; + }; + version = "1.3.2"; + }; + carrierwave_direct = { + dependencies = ["carrierwave" "fog-aws"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1gyxbl6akxj89cbv556lsqi6955jld2gdkw8wi05k80p3nfc3mdh"; + type = "gem"; + }; + version = "2.1.0"; + }; + cells = { + dependencies = ["declarative-builder" "declarative-option" "tilt" "uber"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0n8zxndc14f2rg9z4p9fp4dw7pz6x0xbv4bmnbsgy68lly2nyfs7"; + type = "gem"; + }; + version = "4.1.7"; + }; + cells-erb = { + dependencies = ["cells" "erbse"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1xpzclbhjpd0019vrg5dg9gyqdm3pk0fnmifhfxv2m6z0rpb7xj4"; + type = "gem"; + }; + version = "0.1.0"; + }; + cells-rails = { + dependencies = ["actionpack" "cells"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0va8dwyg9xzywhsx0kid4kp4nydyi87v5q16dpw6n8pk2fqyrjzl"; + type = "gem"; + }; + version = "0.0.9"; + }; + childprocess = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"; + type = "gem"; + }; + version = "3.0.0"; + }; + claide = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0kasxsms24fgcdsq680nz99d5lazl9rmz1qkil2y5gbbssx89g0z"; + type = "gem"; + }; + version = "1.0.3"; + }; + claide-plugins = { + dependencies = ["cork" "nap" "open4"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bhw5j985qs48v217gnzva31rw5qvkf7qj8mhp73pcks0sy7isn7"; + type = "gem"; + }; + version = "0.9.2"; + }; + coderay = { + groups = ["default" "development" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw"; + type = "gem"; + }; + version = "1.1.3"; + }; + colored2 = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jlbqa9q4mvrm73aw9mxh23ygzbjiqwisl32d8szfb5fxvbjng5i"; + type = "gem"; + }; + version = "3.1.2"; + }; + commonmarker = { + dependencies = ["ruby-enum"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1gnsm6mh2a4yyhgcrkpasjr0yn6qjmn3bas5kv5pxkfyh6rl4c77"; + type = "gem"; + }; + version = "0.21.2"; + }; + compare-xml = { + dependencies = ["nokogiri"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06aks0fjxwvs4l9bd8bl9q48kyadzn4cd5yrrrz1gwcyyv0aa6p2"; + type = "gem"; + }; + version = "0.66"; + }; + concurrent-ruby = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0mr23wq0szj52xnj0zcn1k0c7j4v79wlwbijkpfcscqww3l6jlg3"; + type = "gem"; + }; + version = "1.1.8"; + }; + cookiejar = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0q0kmbks9l3hl0wdq744hzy97ssq9dvlzywyqv9k9y1p3qc9va2a"; + type = "gem"; + }; + version = "0.3.3"; + }; + cork = { + dependencies = ["colored2"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g6l780z1nj4s3jr11ipwcj8pjbibvli82my396m3y32w98ar850"; + type = "gem"; + }; + version = "0.3.0"; + }; + costs = { + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/costs; + type = "path"; + }; + version = "1.0.0"; + }; + crack = { + dependencies = ["rexml"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"; + type = "gem"; + }; + version = "0.4.5"; + }; + crass = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw"; + type = "gem"; + }; + version = "1.0.6"; + }; + crowdin-api = { + dependencies = ["rest-client"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zg5c27kfh32a2j8x8i0yrgq5jjqdbywif2185gshmbay96qws02"; + type = "gem"; + }; + version = "0.6.0"; + }; + daemons = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0l5gai3vd4g7aqff0k1mp41j9zcsvm2rbwmqn115a325k9r7pf4w"; + type = "gem"; + }; + version = "1.3.1"; + }; + dalli = { + groups = ["production"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0br39scmr187w3ifl5gsddl2fhq6ahijgw6358plqjdzrizlg764"; + type = "gem"; + }; + version = "2.7.11"; + }; + danger = { + dependencies = ["claide" "claide-plugins" "colored2" "cork" "faraday" "faraday-http-cache" "git" "kramdown" "kramdown-parser-gfm" "no_proxy_fix" "octokit" "terminal-table"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nv02gq90nngnfa6hgiyyk60a31xfayk67va98k41gy9arhdkz5g"; + type = "gem"; + }; + version = "8.2.3"; + }; + danger-brakeman = { + dependencies = ["brakeman" "danger-plugin-api"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wif9jkawks4j3wk1vhdiz2psdgz410ajz5ksjawycanycijppl9"; + type = "gem"; + }; + version = "0.0.2"; + }; + danger-plugin-api = { + dependencies = ["danger"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lrvz082nk19h3aphbqzqy6micpfsn7gw5b0vd0zpgczq7rg9wx0"; + type = "gem"; + }; + version = "1.0.0"; + }; + dashboards = { + dependencies = ["grids"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/dashboards; + type = "path"; + }; + version = "1.0.0"; + }; + database_cleaner = { + dependencies = ["database_cleaner-active_record"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1x4r22rnpwnm9yln88vhzqj4cl3sbd26c4j50g9k6wp7y01rln4w"; + type = "gem"; + }; + version = "2.0.1"; + }; + database_cleaner-active_record = { + dependencies = ["activerecord" "database_cleaner-core"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jg7jd7w65hdarzbi8f252la3qgsnd2sjavhlmc82kwzfx37k38m"; + type = "gem"; + }; + version = "2.0.0"; + }; + database_cleaner-core = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0v44bn386ipjjh4m2kl53dal8g4d41xajn2jggnmjbhn6965fil6"; + type = "gem"; + }; + version = "2.0.1"; + }; + date_validator = { + dependencies = ["activemodel" "activesupport"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jjz5wb1iqgg4ax9v4lbzynqqb81d1jyrdfdi2x115q5kjw4skkd"; + type = "gem"; + }; + version = "0.10.0"; + }; + debug_inspector = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lswmjwxf1clzaimikhiwd9s1n07qkyz7a9xwng64j4fxsajykqp"; + type = "gem"; + }; + version = "1.0.0"; + }; + deckar01-task_list = { + dependencies = ["html-pipeline"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "18bwkvxjr7khxj95xrg1vj7va522vbm2li9wsiiw01cg5b10hni0"; + type = "gem"; + }; + version = "2.3.1"; + }; + declarative = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yczgnqrbls7shrg63y88g7wand2yp9h6sf56c9bdcksn5nds8c0"; + type = "gem"; + }; + version = "0.0.20"; + }; + declarative-builder = { + dependencies = ["declarative-option"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1kr5dyfmi8ha468d9k1clbiknflxjgygd3rbrxspv1xg1m88qf2s"; + type = "gem"; + }; + version = "0.1.0"; + }; + declarative-option = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g4ibxq566f1frnhdymzi9hxxcm4g2gw4n21mpjk2mhwym4q6l0p"; + type = "gem"; + }; + version = "0.1.0"; + }; + delayed_cron_job = { + dependencies = ["delayed_job"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qsf7csnhyk787yx88ilsqris3h0gga3g6ri31hccdfbdab1f33a"; + type = "gem"; + }; + version = "0.7.4"; + }; + delayed_job = { + dependencies = ["activesupport"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19ym3jw2jj1pxm6p22x2mpf69sdxiw07ddr69v92ccgg6d7q87rh"; + type = "gem"; + }; + version = "4.1.9"; + }; + delayed_job_active_record = { + dependencies = ["activerecord" "delayed_job"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d29cy14chn1dqck5z15rxsmah289m9yr7wa8c9k8bx15ar7pf3g"; + type = "gem"; + }; + version = "4.1.5"; + }; + diff-lcs = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0m925b8xc6kbpnif9dldna24q1szg4mk0fvszrki837pfn46afmz"; + type = "gem"; + }; + version = "1.4.4"; + }; + disposable = { + dependencies = ["declarative" "declarative-builder" "declarative-option" "representable" "uber"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08gaj9pmdza0zlnvii2y5y86krj4s7iyiaz9ld1345kxgxqw0ijm"; + type = "gem"; + }; + version = "0.4.7"; + }; + domain_name = { + dependencies = ["unf"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"; + type = "gem"; + }; + version = "0.5.20190701"; + }; + doorkeeper = { + dependencies = ["railties"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09livrq0d7cfkbkcv3vfx9cdwc9b7kzzag15d7nrym9xmrc1icj0"; + type = "gem"; + }; + version = "5.5.0"; + }; + dry-configurable = { + dependencies = ["concurrent-ruby" "dry-core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fxr1352sgjbyk85qh4nfj974czw5b3rqjnl71q9p8v8fxrl6ln3"; + type = "gem"; + }; + version = "0.12.1"; + }; + dry-container = { + dependencies = ["concurrent-ruby" "dry-configurable"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1npnhs3x2xcwwijpys5c8rpcvymrlab0y8806nr4h425ld5q4wd0"; + type = "gem"; + }; + version = "0.7.2"; + }; + dry-core = { + dependencies = ["concurrent-ruby"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14s45hxcqpp2mbvwlwzn018i8qhcjzgkirigdrv31jd741rpgy9s"; + type = "gem"; + }; + version = "0.5.0"; + }; + dry-inflector = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17mkdwglqsd9fg272y3zms7rixjgkb1km1xcb88ir5lxvk1jkky7"; + type = "gem"; + }; + version = "0.2.0"; + }; + dry-logic = { + dependencies = ["concurrent-ruby" "dry-core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17dnc3g9y2nj42rdx2bdvsvvms10vgw4qzjb2iw2gln9hj8b797c"; + type = "gem"; + }; + version = "1.1.0"; + }; + dry-types = { + dependencies = ["concurrent-ruby" "dry-container" "dry-core" "dry-inflector" "dry-logic"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1gv0s396lzxlr882qgwi90462wn6f99wq6g0y204r94i3yfh1lvd"; + type = "gem"; + }; + version = "1.5.1"; + }; + em-http-request = { + dependencies = ["addressable" "cookiejar" "em-socksify" "eventmachine" "http_parser.rb"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1azx5rgm1zvx7391sfwcxzyccs46x495vb34ql2ch83f58mwgyqn"; + type = "gem"; + }; + version = "1.1.7"; + }; + em-socksify = { + dependencies = ["eventmachine"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rk43ywaanfrd8180d98287xv2pxyl7llj291cwy87g1s735d5nk"; + type = "gem"; + }; + version = "0.3.2"; + }; + em-synchrony = { + dependencies = ["eventmachine"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jh6ygbcvapmarqiap79i6yl05bicldr2lnmc46w1fyrhjk70x3f"; + type = "gem"; + }; + version = "1.0.6"; + }; + equivalent-xml = { + dependencies = ["nokogiri"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "11zlqc600acqn1kli339c587xca6yvhqpzv9cf2d12l4z8g7c6c9"; + type = "gem"; + }; + version = "0.6.0"; + }; + erbse = { + dependencies = ["temple"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1i21vpllj0xp45nigmkwizn78047d2p2h8svzl775c7vfilgpynm"; + type = "gem"; + }; + version = "0.1.4"; + }; + erubi = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09l8lz3j00m898li0yfsnb6ihc63rdvhw3k5xczna5zrjk104f2l"; + type = "gem"; + }; + version = "1.10.0"; + }; + escape_utils = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qminivnyzwmqjhrh3b92halwbk0zcl9xn828p5rnap1szl2yag5"; + type = "gem"; + }; + version = "1.2.1"; + }; + eventmachine = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"; + type = "gem"; + }; + version = "1.2.7"; + }; + eventmachine_httpserver = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02dq358cj7z6qh3n7gmsf345fz25c0hwqprfb51ls82l6yifidax"; + type = "gem"; + }; + version = "0.2.1"; + }; + excon = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1759s0rz6qgsw86dds1z4jzb3fvizqsk11j5q6z7lc5n404w6i23"; + type = "gem"; + }; + version = "0.79.0"; + }; + factory_bot = { + dependencies = ["activesupport"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "11ij9s4hasy963qjqbrrf0m8lm9m9pxkh2vf4wrnafa6gw6r9qk8"; + type = "gem"; + }; + version = "6.1.0"; + }; + factory_bot_rails = { + dependencies = ["factory_bot" "railties"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hfxkq6rarg0b8xfzqg200xyj176sn1xplqqqcrz5drhkqp30m14"; + type = "gem"; + }; + version = "6.1.0"; + }; + faker = { + dependencies = ["i18n"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0z3d4y6xg8prn3zdjw1qpqrnziq1d3zigqil4sxjj0pbr46gc1d6"; + type = "gem"; + }; + version = "2.17.0"; + }; + faraday = { + dependencies = ["faraday-net_http" "multipart-post" "ruby2_keywords"]; + groups = ["default" "development" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hmssd8pj4n7yq4kz834ylkla8ryyvhaap6q9nzymp93m1xq21kz"; + type = "gem"; + }; + version = "1.3.0"; + }; + faraday-http-cache = { + dependencies = ["faraday"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lhfwlk4mhmw9pdlgdsl2bq4x45w7s51jkxjryf18wym8iiw36g7"; + type = "gem"; + }; + version = "2.2.0"; + }; + faraday-net_http = { + groups = ["default" "development" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fi8sda5hc54v1w3mqfl5yz09nhx35kglyx72w7b8xxvdr0cwi9j"; + type = "gem"; + }; + version = "1.0.1"; + }; + fastimage = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lgr0vs9kg5622qaf2l3f37b238dncs037fisiygvkbq8sg11i68"; + type = "gem"; + }; + version = "2.2.3"; + }; + ffi = { + groups = ["default" "development" "production"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nq1fb3vbfylccwba64zblxy96qznxbys5900wd7gm9bpplmf432"; + type = "gem"; + }; + version = "1.15.0"; + }; + flamegraph = { + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1p785nmhdzbwj0qpxn5fzrmr4kgimcds83v4f95f387z6w3050x6"; + type = "gem"; + }; + version = "0.9.5"; + }; + fog-aws = { + dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10y32rm3vcfh82p2fdr2zq8ibknx1jslmai5m0r261bdr3brkssm"; + type = "gem"; + }; + version = "3.9.0"; + }; + fog-core = { + dependencies = ["builder" "excon" "formatador" "mime-types"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bwqm9n69y5y0a5iickr358z7w4hml3flqwfz8b7cnj1ldabhnjn"; + type = "gem"; + }; + version = "2.2.3"; + }; + fog-json = { + dependencies = ["fog-core" "multi_json"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx"; + type = "gem"; + }; + version = "1.2.0"; + }; + fog-xml = { + dependencies = ["fog-core" "nokogiri"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n"; + type = "gem"; + }; + version = "0.1.3"; + }; + formatador = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"; + type = "gem"; + }; + version = "0.2.5"; + }; + friendly_id = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0kbxzqspndpn3w2ps0hnippj26jxz4hrzd4d886cgi511nd2xg02"; + type = "gem"; + }; + version = "5.4.2"; + }; + fuubar = { + dependencies = ["rspec-core" "ruby-progressbar"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1028vn7j3kc5qqwswrf3has3qm4j9xva70xmzb3n29i89f0afwmj"; + type = "gem"; + }; + version = "2.5.1"; + }; + get_process_mem = { + dependencies = ["ffi"]; + groups = ["default" "production"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fkyyyxjcx4iigm8vhraa629k2lxa1npsv4015y82snx84v3rzaa"; + type = "gem"; + }; + version = "0.2.7"; + }; + git = { + dependencies = ["rchardet"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0vdcv93s33d9914a9nxrn2y2qv15xk7jx94007cmalp159l08cnl"; + type = "gem"; + }; + version = "1.8.1"; + }; + globalid = { + dependencies = ["activesupport"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"; + type = "gem"; + }; + version = "0.4.2"; + }; + gon = { + dependencies = ["actionpack" "i18n" "multi_json" "request_store"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1w6ji15jrl4p6q0gxy5mmqspvzbmgkqj1d3xmbqr0a1rb7b1i9p3"; + type = "gem"; + }; + version = "6.4.0"; + }; + grape = { + dependencies = ["activesupport" "builder" "dry-types" "mustermann-grape" "rack" "rack-accept"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05qpb1awqzw4jyx5l47v1fk4m06c5jl3njpmw35pqn7wijzydw8g"; + type = "gem"; + }; + version = "1.5.3"; + }; + gravatar_image_tag = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1kzx81y56kdady6yv77byh15yy5riwbs0d5r2gki3ds6m3z30mpb"; + type = "gem"; + }; + version = "1.2.0"; + }; + grids = { + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/grids; + type = "path"; + }; + version = "1.0.0"; + }; + hashdiff = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"; + type = "gem"; + }; + version = "1.0.1"; + }; + hashery = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"; + type = "gem"; + }; + version = "2.1.2"; + }; + hashie = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"; + type = "gem"; + }; + version = "3.6.0"; + }; + html-pipeline = { + dependencies = ["activesupport" "nokogiri"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "080sn9z1a64gv04p318jz10y6lv6qd3avip08rrcmq9k4ihai0f1"; + type = "gem"; + }; + version = "2.14.0"; + }; + htmldiff = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "188kw5694rhndd69dpzi8ygi50sx6s2ig9jl6756racfif60cvd9"; + type = "gem"; + }; + version = "0.0.1"; + }; + http-accept = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09m1facypsdjynfwrcv19xcb1mqg8z6kk31g8r33pfxzh838c9n6"; + type = "gem"; + }; + version = "1.7.0"; + }; + http-cookie = { + dependencies = ["domain_name"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"; + type = "gem"; + }; + version = "1.0.3"; + }; + "http_parser.rb" = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"; + type = "gem"; + }; + version = "0.6.0"; + }; + httpclient = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"; + type = "gem"; + }; + version = "2.8.3"; + }; + i18n = { + dependencies = ["concurrent-ruby"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08p6b13p99j1rrcrw1l3v0kb9mxbsvy6nk31r8h4rnszdgzpga32"; + type = "gem"; + }; + version = "1.8.9"; + }; + i18n-js = { + dependencies = ["i18n"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0s8m57w3x0qsxp4537wm54scp3jpf7c3m8w5a6f1mnrm4s8xr5m3"; + type = "gem"; + }; + version = "3.8.2"; + }; + icalendar = { + dependencies = ["ice_cube"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1wv5wq6pzq6434bnxfanvijswj2rnfvjmgisj1qg399mc42g46ls"; + type = "gem"; + }; + version = "2.7.1"; + }; + ice_cube = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rzfydzgy6jppqvzzr76skfk07nmlszpcjzzn4wlzpsgmagmf0wq"; + type = "gem"; + }; + version = "0.16.3"; + }; + interception = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01vrkn28psdx1ysh5js3hn17nfp1nvvv46wc1pwqsakm6vb1hf55"; + type = "gem"; + }; + version = "0.5"; + }; + ipaddress = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45"; + type = "gem"; + }; + version = "0.8.3"; + }; + iso8601 = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "18js898rhh6byp0znvchiv6mcxi5l8v3v0bj2ddajpxynwajp319"; + type = "gem"; + }; + version = "0.13.0"; + }; + jmespath = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf"; + type = "gem"; + }; + version = "1.4.0"; + }; + json = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lrirj0gw420kw71bjjlqkqhqbrplla61gbv1jzgsz6bv90qr3ci"; + type = "gem"; + }; + version = "2.5.1"; + }; + json-jwt = { + dependencies = ["activesupport" "aes_key_wrap" "bindata"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nzbk1mrbf9mnvjpn3bxy8a85rjf94qmfdnvk78mjzk8pa0fvgdr"; + type = "gem"; + }; + version = "1.13.0"; + }; + json_spec = { + dependencies = ["multi_json" "rspec"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "03yiravv6q8lp37rip2i25w2qd63mwwi4jmw7ymf51y7j9xbjxvs"; + type = "gem"; + }; + version = "1.1.5"; + }; + kgio = { + groups = ["default" "production"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ai6bzlvxbzpdl466p1qi4dlhx8ri2wcrp6x1l19y3yfs3a29rng"; + type = "gem"; + }; + version = "2.11.3"; + }; + kramdown = { + dependencies = ["rexml"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar"; + type = "gem"; + }; + version = "2.3.1"; + }; + kramdown-parser-gfm = { + dependencies = ["kramdown"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"; + type = "gem"; + }; + version = "1.1.0"; + }; + ladle = { + dependencies = ["open4"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1p4hv85nrcqg59hbcxm14d98wbk0smdsdljppx48sycc21j6jn78"; + type = "gem"; + }; + version = "1.0.1"; + }; + launchy = { + dependencies = ["addressable"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1xdyvr5j0gjj7b10kgvh8ylxnwk3wx19my42wqn9h82r4p246hlm"; + type = "gem"; + }; + version = "2.5.0"; + }; + letter_opener = { + dependencies = ["launchy"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09a7kgsmr10a0hrc9bwxglgqvppjxij9w8bxx91mnvh0ivaw0nq9"; + type = "gem"; + }; + version = "1.7.0"; + }; + listen = { + dependencies = ["rb-fsevent" "rb-inotify"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0imzd0cb9vlkc3yggl4rph1v1wm4z9psgs4z6aqsqa5hgf8gr9hj"; + type = "gem"; + }; + version = "3.4.1"; + }; + livingstyleguide = { + dependencies = ["minisyntax" "redcarpet" "sassc" "thor" "tilt"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17ykc7qjqp3cm9mb8kk5ppk1xpfihp2r6a4727ja6qxjnw10mqcf"; + type = "gem"; + }; + version = "2.1.0"; + }; + lobby_boy = { + dependencies = ["omniauth" "omniauth-openid-connect" "rails"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wl105faijn0pl6i8gcqwaw5d9wwczvvhdzinf71bvra0lybnq4l"; + type = "gem"; + }; + version = "0.1.3"; + }; + lograge = { + dependencies = ["actionpack" "activesupport" "railties" "request_store"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vrjm4yqn5l6q5gsl72fmk95fl6j9z1a05gzbrwmsm3gp1a1bgac"; + type = "gem"; + }; + version = "0.11.2"; + }; + loofah = { + dependencies = ["crass" "nokogiri"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bzwvxvilx7w1p3pg028ks38925y9i0xm870lm7s12w7598hiyck"; + type = "gem"; + }; + version = "2.9.0"; + }; + mail = { + dependencies = ["mini_mime"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc"; + type = "gem"; + }; + version = "2.7.1"; + }; + marcel = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vhp6lifwvqs2b0a276lj61n86c1l7d1xiswjj2w23f54gl51mpk"; + type = "gem"; + }; + version = "1.0.0"; + }; + messagebird-rest = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00ak96dhw13b0pw8njxl96rqgx85knrnrcpk427mb1vcsxmf208m"; + type = "gem"; + }; + version = "1.4.2"; + }; + meta-tags = { + dependencies = ["actionpack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bwr2fin0g06wd2cd7mvnslacj11m4mb2zs8i0flhg7n62xgi4s6"; + type = "gem"; + }; + version = "2.14.0"; + }; + method_source = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"; + type = "gem"; + }; + version = "1.0.0"; + }; + mime-types = { + dependencies = ["mime-types-data"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zj12l9qk62anvk9bjvandpa6vy4xslil15wl6wlivyf51z773vh"; + type = "gem"; + }; + version = "3.3.1"; + }; + mime-types-data = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1phcq7z0zpipwd7y4fbqmlaqghv07fjjgrx99mwq3z3n0yvy7fmi"; + type = "gem"; + }; + version = "3.2021.0225"; + }; + mini_magick = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1aj604x11d9pksbljh0l38f70b558rhdgji1s9i763hiagvvx2hs"; + type = "gem"; + }; + version = "4.11.0"; + }; + mini_mime = { + groups = ["default" "opf_plugins" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1np6srnyagghhh2w4nyv09sz47v0i6ri3q6blicj94vgxqp12c94"; + type = "gem"; + }; + version = "1.0.3"; + }; + mini_portile2 = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hdbpmamx8js53yk3h8cqy12kgv6ca06k0c9n3pxh6b6cjfs19x7"; + type = "gem"; + }; + version = "2.5.0"; + }; + minisyntax = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bicicgkylhb82j74ii5q6wdvl75ynq45b2rs24l2d00hc66b9w9"; + type = "gem"; + }; + version = "0.2.5"; + }; + minitest = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19z7wkhg59y8abginfrm2wzplz7py3va8fyngiigngqvsws6cwgl"; + type = "gem"; + }; + version = "5.14.4"; + }; + mixlib-shellout = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yaykix03ygdvivnxh85gc0x9q3bflhfj6anqshkhyvq7dj1c9sy"; + type = "gem"; + }; + version = "2.1.0"; + }; + msgpack = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6"; + type = "gem"; + }; + version = "1.4.2"; + }; + multi_json = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z"; + type = "gem"; + }; + version = "1.15.0"; + }; + multipart-post = { + groups = ["default" "development" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zgw9zlwh2a6i1yvhhc4a84ry1hv824d6g2iw2chs3k5aylpmpfj"; + type = "gem"; + }; + version = "2.1.1"; + }; + mustermann = { + dependencies = ["ruby2_keywords"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ccm54qgshr1lq3pr1dfh7gphkilc19dp63rw6fcx7460pjwy88a"; + type = "gem"; + }; + version = "1.1.1"; + }; + mustermann-grape = { + dependencies = ["mustermann"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0djlbi7nh161a5mwjdm1ya4hc6lyzc493ah48gn37gk6vyri5kh0"; + type = "gem"; + }; + version = "1.0.1"; + }; + my_page = { + dependencies = ["grids"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/my_page; + type = "path"; + }; + version = "1.0.0"; + }; + nap = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xm5xssxk5s03wjarpipfm39qmgxsalb46v1prsis14x1xk935ll"; + type = "gem"; + }; + version = "1.1.0"; + }; + net-ldap = { + groups = ["ldap"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1j19yxrz7h3hj7kiiln13c7bz7hvpdqr31bwi88dj64zifr7896n"; + type = "gem"; + }; + version = "0.17.0"; + }; + netrc = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"; + type = "gem"; + }; + version = "0.11.0"; + }; + newrelic_rpm = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04i7m4ii7r01fdqnvij1ff0d9f82lqc891v7l8fj5lqw9758wawd"; + type = "gem"; + }; + version = "6.15.0"; + }; + nio4r = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00fwz0qq7agd2xkdz02i8li236qvwhma3p0jdn5bdvc21b7ydzd5"; + type = "gem"; + }; + version = "2.5.7"; + }; + no_proxy_fix = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "006dmdb640v1kq0sll3dnlwj1b0kpf3i1p27ygyffv8lpcqlr6sf"; + type = "gem"; + }; + version = "0.1.2"; + }; + nokogiri = { + dependencies = ["mini_portile2" "racc"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0b51df8fwadak075cvi17w0nch6qz1r66564qp29qwfj67j9qp0p"; + type = "gem"; + }; + version = "1.11.2"; + }; + nokogumbo = { + dependencies = ["nokogiri"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pxm7hx2lhmanm8kljd39f1j1742kl0a31zx98jsjiwrkfb5hhc6"; + type = "gem"; + }; + version = "2.0.4"; + }; + octokit = { + dependencies = ["faraday" "sawyer"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fl517ld5vj0llyshp3f9kb7xyl9iqy28cbz3k999fkbwcxzhlyq"; + type = "gem"; + }; + version = "4.20.0"; + }; + oj = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1a8a0yic9rgw4wh0vvdbf3181ch2pdwaxsah0j13rlbrhxpp6yyl"; + type = "gem"; + }; + version = "3.11.3"; + }; + okcomputer = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "031hslwhf8fznsgkzfcmxabrpf5klakwvhiwa90bqvrlrcb4yi1w"; + type = "gem"; + }; + version = "1.18.4"; + }; + omniauth = { + dependencies = ["hashie" "rack"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + fetchSubmodules = false; + rev = "fe862f986b2e846e291784d2caa3d90a658c67f0"; + sha256 = "1108xlnihnyn512b8pwz3gjppbxfab60nyg1ymcz58hkrag335d0"; + type = "git"; + url = "https://github.com/opf/omniauth"; + }; + version = "1.9.0"; + }; + omniauth-openid-connect = { + dependencies = ["addressable" "omniauth" "openid_connect"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + fetchSubmodules = false; + rev = "e1173e682a60010c018146443453560a13b01a90"; + sha256 = "17z2ycb4dkmr2rk21zr1ykia5wj5fgaa6x31c7hc6xvlhbn0bdx9"; + type = "git"; + url = "https://github.com/opf/omniauth-openid-connect.git"; + }; + version = "0.4.0"; + }; + omniauth-openid_connect-providers = { + dependencies = ["omniauth-openid-connect"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + fetchSubmodules = false; + rev = "a6c0c3ed78fac79cf4d007e40d4029e524ec7751"; + sha256 = "1wj5hn1pkikcd59cd78336wjnjxb6lshgfphzdnb7wzcj37lhlbx"; + type = "git"; + url = "https://github.com/opf/omniauth-openid_connect-providers.git"; + }; + version = "0.2.0"; + }; + omniauth-saml = { + dependencies = ["omniauth" "ruby-saml"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gxl14lbksnjkl8dfn23lsjkk63md77icm5racrh6fsp5n4ni9d4"; + type = "gem"; + }; + version = "1.10.3"; + }; + open4 = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"; + type = "gem"; + }; + version = "1.3.4"; + }; + openid_connect = { + dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0r50vwf9hsf6r8gx5mwqs3w3w92l864ikiz9d0fcibqsr1489pbg"; + type = "gem"; + }; + version = "1.1.8"; + }; + openproject-auth_plugins = { + dependencies = ["omniauth"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/auth_plugins; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-auth_saml = { + dependencies = ["omniauth-saml"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/auth_saml; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-avatars = { + dependencies = ["fastimage" "gravatar_image_tag"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/avatars; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-backlogs = { + dependencies = ["acts_as_list" "openproject-pdf_export"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/backlogs; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-bim = { + dependencies = ["activerecord-import" "rubyzip"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/bim; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-boards = { + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/boards; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-documents = { + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/documents; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-github_integration = { + dependencies = ["openproject-webhooks"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/github_integration; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-job_status = { + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/job_status; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-ldap_groups = { + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/ldap_groups; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-meeting = { + dependencies = ["icalendar"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/meeting; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-openid_connect = { + dependencies = ["lobby_boy" "omniauth-openid_connect-providers" "openproject-auth_plugins"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/openid_connect; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-pdf_export = { + dependencies = ["pdf-inspector" "prawn"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/pdf_export; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-recaptcha = { + dependencies = ["recaptcha"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/recaptcha; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-reporting = { + dependencies = ["costs"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/reporting; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-token = { + dependencies = ["activemodel"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0r7ma24g4phw1wc97nkvmx5syvi4xipkw8mv10mvri7lp9b6wzdk"; + type = "gem"; + }; + version = "2.1.3"; + }; + openproject-translations = { + dependencies = ["crowdin-api" "mixlib-shellout" "rubyzip"]; + groups = ["default"]; + platforms = []; + source = { + fetchSubmodules = false; + rev = "ec6fbe6ef86f82e65f37adb17f37aa5addc17ac4"; + sha256 = "10mqmrnyai77g490qia8p2vdzi0sbdj4b9k0fbkzjhf35mrlvb8s"; + type = "git"; + url = "https://github.com/opf/openproject-translations.git"; + }; + version = "7.4.0"; + }; + openproject-two_factor_authentication = { + dependencies = ["aws-sdk-sns" "messagebird-rest" "rotp"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/two_factor_authentication; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-webhooks = { + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/webhooks; + type = "path"; + }; + version = "1.0.0"; + }; + openproject-xls_export = { + dependencies = ["spreadsheet"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/xls_export; + type = "path"; + }; + version = "1.0.0"; + }; + overviews = { + dependencies = ["grids"]; + groups = ["opf_plugins"]; + platforms = []; + source = { + path = modules/overviews; + type = "path"; + }; + version = "1.0.0"; + }; + parallel = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0055br0mibnqz0j8wvy20zry548dhkakws681bhj3ycb972awkzd"; + type = "gem"; + }; + version = "1.20.1"; + }; + parallel_tests = { + dependencies = ["parallel"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vmv7a1xp81n4ryzww2hgfx6by2hwlaka53b1cin6by755331pi3"; + type = "gem"; + }; + version = "3.5.2"; + }; + parser = { + dependencies = ["ast"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml"; + type = "gem"; + }; + version = "3.0.0.0"; + }; + pdf-core = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fz0yj4zrlii2j08kaw11j769s373ayz8jrdhxwwjzmm28pqndjg"; + type = "gem"; + }; + version = "0.9.0"; + }; + pdf-inspector = { + dependencies = ["pdf-reader"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"; + type = "gem"; + }; + version = "1.3.0"; + }; + pdf-reader = { + dependencies = ["Ascii85" "afm" "hashery" "ruby-rc4" "ttfunk"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cxladxy18dhk4a3b263crq8hyxb3q0c7ifxrb5nr1bs6y0pk8i6"; + type = "gem"; + }; + version = "2.4.2"; + }; + pg = { + groups = ["postgres"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj"; + type = "gem"; + }; + version = "1.2.3"; + }; + plaintext = { + dependencies = ["activesupport" "nokogiri" "rubyzip"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vvrmjhd0b5ycgxn0x2rz2n6alh826z4siwz327gkmhsyg1mnlkv"; + type = "gem"; + }; + version = "0.3.3"; + }; + posix-spawn = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0cmb0svalqcxfzlzc5fvrci12b79x7bakasr8gkl3q5rz6di1q52"; + type = "gem"; + }; + version = "0.3.15"; + }; + prawn = { + dependencies = ["pdf-core" "ttfunk"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g9avv2rprsjisdk137s9ljr05r7ajhm78hxa1vjsv0jyx22f1l2"; + type = "gem"; + }; + version = "2.4.0"; + }; + prawn-markup = { + dependencies = ["nokogiri" "prawn" "prawn-table"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vkhjxffkwzbpn0j1rjfhhia0pdi4wdd8hyvp65bqaivc18bfvlg"; + type = "gem"; + }; + version = "0.3.0"; + }; + prawn-table = { + dependencies = ["prawn"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"; + type = "gem"; + }; + version = "0.2.2"; + }; + pry = { + dependencies = ["coderay" "method_source"]; + groups = ["default" "development" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"; + type = "gem"; + }; + version = "0.13.1"; + }; + pry-byebug = { + dependencies = ["byebug" "pry"]; + groups = ["development" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "096y5vmzpyy4x9h4ky4cs4y7d19vdq9vbwwrqafbh5gagzwhifiv"; + type = "gem"; + }; + version = "3.9.0"; + }; + pry-rails = { + dependencies = ["pry"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cf4ii53w2hdh7fn8vhqpzkymmchjbwij4l3m7s6fsxvb9bn51j6"; + type = "gem"; + }; + version = "0.3.9"; + }; + pry-rescue = { + dependencies = ["interception" "pry"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1wn72y8y3d3g0ng350ld92nyjln012432q2z2iy9lhwzjc4dwi65"; + type = "gem"; + }; + version = "1.5.2"; + }; + pry-stack_explorer = { + dependencies = ["binding_of_caller" "pry"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0h7kp99r8vpvpbvia079i58932qjz2ci9qhwbk7h1bf48ydymnx2"; + type = "gem"; + }; + version = "0.6.1"; + }; + public_suffix = { + groups = ["default" "development" "opf_plugins" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9"; + type = "gem"; + }; + version = "4.0.6"; + }; + puffing-billy = { + dependencies = ["addressable" "em-http-request" "em-synchrony" "eventmachine" "eventmachine_httpserver" "http_parser.rb" "multi_json"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ccg8dddq8dlkjwfm81ydy9y3vkbqdd89nakp0m425ykwrdmhqf0"; + type = "gem"; + }; + version = "2.4.1"; + }; + puma = { + dependencies = ["nio4r"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wiprd0v4mjqv5p1vqaidr9ci2xm08lcxdz1k50mb1b6nrw6r74k"; + type = "gem"; + }; + version = "5.2.2"; + }; + racc = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g"; + type = "gem"; + }; + version = "1.5.2"; + }; + rack = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0i5vs0dph9i5jn8dfc6aqd6njcafmb20rwqngrf759c9cvmyff16"; + type = "gem"; + }; + version = "2.2.3"; + }; + rack-accept = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "18jdipx17b4ki33cfqvliapd31sbfvs4mv727awynr6v95a7n936"; + type = "gem"; + }; + version = "0.4.5"; + }; + rack-attack = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0kiixzpazjqgljjy1ngfz1by5vz6kjx0d4mf1fq7b3ywpfjf80lq"; + type = "gem"; + }; + version = "6.5.0"; + }; + rack-cors = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jvs0mq8jrsz86jva91mgql16daprpa3qaipzzfvngnnqr5680j7"; + type = "gem"; + }; + version = "1.1.1"; + }; + rack-mini-profiler = { + dependencies = ["rack"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zir2lf9vc6h98gly4qmsd2gdvly4pn8576pl9kzx7i9j4v54ysh"; + type = "gem"; + }; + version = "2.3.1"; + }; + rack-oauth2 = { + dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1b0h0rlfl0p0drymwfc71g87fp66ck3205pl32z89xsgh0lzw25k"; + type = "gem"; + }; + version = "1.16.0"; + }; + rack-protection = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "159a4j4kragqh0z0z8vrpilpmaisnlz3n7kgiyf16bxkwlb3qlhz"; + type = "gem"; + }; + version = "2.1.0"; + }; + rack-test = { + dependencies = ["rack"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m"; + type = "gem"; + }; + version = "1.1.0"; + }; + rack_session_access = { + dependencies = ["builder" "rack"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0swd35lg7qmqhc3pglvsanq2indnvw360m8qxfxwqabl0br9isq3"; + type = "gem"; + }; + version = "0.2.0"; + }; + rails = { + dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yl6wy2gfvjkq0457plwadk7jwx5sbpqxl9aycbphskisis9g238"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + rails-controller-testing = { + dependencies = ["actionpack" "actionview" "activesupport"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "151f303jcvs8s149mhx2g5mn67487x0blrf9dzl76q1nb7dlh53l"; + type = "gem"; + }; + version = "1.0.5"; + }; + rails-dom-testing = { + dependencies = ["activesupport" "nokogiri"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i"; + type = "gem"; + }; + version = "2.0.3"; + }; + rails-html-sanitizer = { + dependencies = ["loofah"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1icpqmxbppl4ynzmn6dx7wdil5hhq6fz707m9ya6d86c7ys8sd4f"; + type = "gem"; + }; + version = "1.3.0"; + }; + rails-i18n = { + dependencies = ["i18n" "railties"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05mcgv748vppnm3fnml37wjy3dw61wj8vfw14ldaj1yx1bmkhb07"; + type = "gem"; + }; + version = "6.0.0"; + }; + railties = { + dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1m3ckisji9n3li2700jpkyncsrh5b2z20zb0b4jl5x16cwsymr7b"; + type = "gem"; + }; + version = "6.1.3.1"; + }; + rainbow = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"; + type = "gem"; + }; + version = "3.0.0"; + }; + raindrops = { + groups = ["default" "production"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0zjja00mzgx2lddb7qrn14k7qrnwhf4bpmnlqj78m1pfxh7svync"; + type = "gem"; + }; + version = "0.19.1"; + }; + rake = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1iik52mf9ky4cgs38fp2m8r6skdkq1yz23vh18lk95fhbcxb6a67"; + type = "gem"; + }; + version = "13.0.3"; + }; + rb-fsevent = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1k9bsj7ni0g2fd7scyyy1sk9dy2pg9akniahab0iznvjmhn54h87"; + type = "gem"; + }; + version = "0.10.4"; + }; + rb-inotify = { + dependencies = ["ffi"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"; + type = "gem"; + }; + version = "0.10.1"; + }; + rbtree3 = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0l695hxk29nhrrm44nnk5y7qgcmnvc8x7vfzwp5bgqkc9v0z0a7n"; + type = "gem"; + }; + version = "0.6.0"; + }; + rchardet = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1isj1b3ywgg2m1vdlnr41lpvpm3dbyarf1lla4dfibfmad9csfk9"; + type = "gem"; + }; + version = "1.8.0"; + }; + rdoc = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rz1492df18161qwzswm86gav0dnqz715kxzw5yfnv0ka43d4zc4"; + type = "gem"; + }; + version = "6.3.0"; + }; + recaptcha = { + dependencies = ["json"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1swakxdslkgkca9gkgs686l4r9pzk2yqp3lnvzj2xkid956vkw5w"; + type = "gem"; + }; + version = "5.7.0"; + }; + redcarpet = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bvk8yyns5s1ls437z719y5sdv9fr8kfs8dmr6g8s761dv5n8zvi"; + type = "gem"; + }; + version = "3.5.1"; + }; + regexp_parser = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0vg7imjnfcqjx7kw94ccj5r78j4g190cqzi1i59sh4a0l940b9cr"; + type = "gem"; + }; + version = "2.1.1"; + }; + representable = { + dependencies = ["declarative" "declarative-option" "uber"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qm9rgi1j5a6nv726ka4mmixivlxfsg91h8rpp72wwd4vqbkkm07"; + type = "gem"; + }; + version = "3.0.4"; + }; + request_store = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0cx74kispmnw3ljwb239j65a2j14n8jlsygy372hrsa8mxc71hxi"; + type = "gem"; + }; + version = "1.5.0"; + }; + responders = { + dependencies = ["actionpack" "railties"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14kjykc6rpdh24sshg9savqdajya2dislc1jmbzg91w9967f4gv1"; + type = "gem"; + }; + version = "3.0.1"; + }; + rest-client = { + dependencies = ["http-accept" "http-cookie" "mime-types" "netrc"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im"; + type = "gem"; + }; + version = "2.1.0"; + }; + retriable = { + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1q48hqws2dy1vws9schc0kmina40gy7sn5qsndpsfqdslh65snha"; + type = "gem"; + }; + version = "3.1.2"; + }; + rexml = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1mkvkcw9fhpaizrhca0pdgjcrbns48rlz4g6lavl5gjjq3rk2sq3"; + type = "gem"; + }; + version = "3.2.4"; + }; + rinku = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0zcdha17s1wzxyc5814j6319wqg33jbn58pg6wmxpws36476fq4b"; + type = "gem"; + }; + version = "2.0.6"; + }; + roar = { + dependencies = ["representable"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17bwmc9diz8sidc51ifzbi5z6whfhi0w5w33cvabink34w9zhan6"; + type = "gem"; + }; + version = "1.1.0"; + }; + rotp = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "11q7rkjx40yi6lpylgl2jkpy162mjw7mswrcgcax86vgpbpjx6i3"; + type = "gem"; + }; + version = "6.2.0"; + }; + rouge = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0b4b300i3m4m4kw7w1n9wgxwy16zccnb7271miksyzd0wq5b9pm3"; + type = "gem"; + }; + version = "3.26.0"; + }; + rspec = { + dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1dwai7jnwmdmd7ajbi2q0k0lx1dh88knv5wl7c34wjmf94yv8w5q"; + type = "gem"; + }; + version = "3.10.0"; + }; + rspec-core = { + dependencies = ["rspec-support"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wwnfhxxvrlxlk1a3yxlb82k2f9lm0yn0598x7lk8fksaz4vv6mc"; + type = "gem"; + }; + version = "3.10.1"; + }; + rspec-expectations = { + dependencies = ["diff-lcs" "rspec-support"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1sz9bj4ri28adsklnh257pnbq4r5ayziw02qf67wry0kvzazbb17"; + type = "gem"; + }; + version = "3.10.1"; + }; + rspec-mocks = { + dependencies = ["diff-lcs" "rspec-support"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d13g6kipqqc9lmwz5b244pdwc97z15vcbnbq6n9rlf32bipdz4k"; + type = "gem"; + }; + version = "3.10.2"; + }; + rspec-rails = { + dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1h00y0vsbb6qb0qwjxhf14bw8nwx8dmyn2dgplz0sqiljbhxgmfa"; + type = "gem"; + }; + version = "5.0.0"; + }; + rspec-retry = { + dependencies = ["rspec-core"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0n6qc0d16h6bgh1xarmc8vc58728mgjcsjj8wcd822c8lcivl0b1"; + type = "gem"; + }; + version = "0.6.2"; + }; + rspec-support = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15j52parvb8cgvl6s0pbxi2ywxrv6x0764g222kz5flz0s4mycbl"; + type = "gem"; + }; + version = "3.10.2"; + }; + rubocop = { + dependencies = ["parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0zrzsgx35mcr81c51gyx63s7yngcfgk33dbkx5j0npkaks4fcm7r"; + type = "gem"; + }; + version = "1.11.0"; + }; + rubocop-ast = { + dependencies = ["parser"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gkf1p8yal38nlvdb39qaiy0gr85fxfr09j5dxh8qvrgpncpnk78"; + type = "gem"; + }; + version = "1.4.1"; + }; + rubocop-rails = { + dependencies = ["activesupport" "rack" "rubocop"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0h656la1g644g54g3gidz45p6v8i1156nw6bi66cfx7078y1339d"; + type = "gem"; + }; + version = "2.9.1"; + }; + rubocop-rspec = { + dependencies = ["rubocop" "rubocop-ast"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jj6h9ynmacvi2v62dc50qxwrrlvm1hmiblpxc0w2kypik1255ds"; + type = "gem"; + }; + version = "2.2.0"; + }; + ruby-duration = { + dependencies = ["activesupport" "i18n" "iso8601"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "114p0rbg7lklznvcjiqyf8xjm17c3s7yvclgb80pl1l5vyqi6ggb"; + type = "gem"; + }; + version = "3.2.3"; + }; + ruby-enum = { + dependencies = ["i18n"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1pys90hxylhyg969iw9lz3qai5lblf8xwbdg1g5aj52731a9k83p"; + type = "gem"; + }; + version = "0.9.0"; + }; + ruby-ole = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0zhaq66csdingjw34acnq3j56s0s1vhxvb1cnglw9vca958g0rvx"; + type = "gem"; + }; + version = "1.2.12.2"; + }; + ruby-prof = { + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1r3xalp91l07m0cwllcxjzg6nkviiqnxkcbgg5qnzsdji6rgy65m"; + type = "gem"; + }; + version = "1.4.3"; + }; + ruby-progressbar = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02nmaw7yx9kl7rbaan5pl8x5nn0y4j5954mzrkzi9i3dhsrps4nc"; + type = "gem"; + }; + version = "1.11.0"; + }; + ruby-rc4 = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"; + type = "gem"; + }; + version = "0.1.5"; + }; + ruby-saml = { + dependencies = ["nokogiri"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ps79g3f39iy6dpc9z4z5wwxdkbaciqjfbi0pfl7dbkz1d8q14qi"; + type = "gem"; + }; + version = "1.11.0"; + }; + ruby2_keywords = { + groups = ["default" "development" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15wfcqxyfgka05v2a7kpg64x57gl1y4xzvnc9lh60bqx5sf1iqrs"; + type = "gem"; + }; + version = "0.0.4"; + }; + rubytree = { + dependencies = ["json" "structured_warnings"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06hnlji25ih4bk0avx0fry57c4fjpw6lsifg13fgwqsxw9x25vpd"; + type = "gem"; + }; + version = "1.0.0"; + }; + rubyzip = { + groups = ["default" "opf_plugins" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qxc2zxwwipm6kviiar4gfhcakpx1jdcs89v6lvzivn5hq1xk78l"; + type = "gem"; + }; + version = "1.3.0"; + }; + sanitize = { + dependencies = ["crass" "nokogiri" "nokogumbo"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xi2c9vbfjs0gk4i9y4mrlb3xx6g5lj22hlg5cx6hyc88ri7j4bc"; + type = "gem"; + }; + version = "5.2.3"; + }; + sassc = { + dependencies = ["ffi"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c"; + type = "gem"; + }; + version = "2.4.0"; + }; + sassc-rails = { + dependencies = ["railties" "sassc" "sprockets" "sprockets-rails" "tilt"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d9djmwn36a5m8a83bpycs48g8kh1n2xkyvghn7dr6zwh4wdyksz"; + type = "gem"; + }; + version = "2.1.2"; + }; + sawyer = { + dependencies = ["addressable" "faraday"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"; + type = "gem"; + }; + version = "0.8.2"; + }; + secure_headers = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "172q4jhdwn0ykrwlly6ykscwmgl03w770rr76sgagkywvpmiyakd"; + type = "gem"; + }; + version = "6.3.2"; + }; + selenium-webdriver = { + dependencies = ["childprocess" "rubyzip"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0adcvp86dinaqq3nhf8p3m0rl2g6q0a4h52k0i7kdnsg1qz9k86y"; + type = "gem"; + }; + version = "3.142.7"; + }; + semantic = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qy1s2kpf9z2p99v23b126ij424yamxviprz59wbp3hrb67v9nrw"; + type = "gem"; + }; + version = "1.6.1"; + }; + sentry-delayed_job = { + dependencies = ["sentry-ruby-core"]; + groups = ["sentry"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15fwl48sj08hsz4wkjsd66n2lknvlgmk4j0vmyjc4rzs8wxmiydg"; + type = "gem"; + }; + version = "4.3.0"; + }; + sentry-rails = { + dependencies = ["railties" "sentry-ruby-core"]; + groups = ["sentry"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0j1nvpwm4xv5sqq9byd7lcd59n61jwvacxg71gd6asilmpmk4kgj"; + type = "gem"; + }; + version = "4.3.3"; + }; + sentry-ruby = { + dependencies = ["concurrent-ruby" "faraday" "sentry-ruby-core"]; + groups = ["sentry"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "101q3141xfkmh7vi8h4sjqqmxcx90xhyq51lmfnhfiwgii7cn9k8"; + type = "gem"; + }; + version = "4.3.1"; + }; + sentry-ruby-core = { + dependencies = ["concurrent-ruby" "faraday"]; + groups = ["default" "sentry"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13z35s9mflh3v775a0scsnqhscz9q46kaak38y7zmx32z7sg2a3a"; + type = "gem"; + }; + version = "4.3.1"; + }; + shoulda-context = { + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0d1clcp92jv8756h09kbc55qiqncn666alx0s83za06q5hs4bpvs"; + type = "gem"; + }; + version = "2.0.0"; + }; + shoulda-matchers = { + dependencies = ["activesupport"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qi7gzli00mqlaq9an28m6xd323k7grgq19r6dqa2amjnnxy41ld"; + type = "gem"; + }; + version = "4.5.1"; + }; + spreadsheet = { + dependencies = ["ruby-ole"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17xmj6isyggsigql7xhknp6sip9121zmbyc7i6k0aympwzcqdpq4"; + type = "gem"; + }; + version = "1.2.8"; + }; + spring = { + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1x2wz1y2b0kp7mlk9k8zkl39rddk2l3x34b7dar3bh3axd1cs30d"; + type = "gem"; + }; + version = "2.1.1"; + }; + spring-commands-rspec = { + dependencies = ["spring"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2"; + type = "gem"; + }; + version = "1.0.4"; + }; + sprockets = { + dependencies = ["concurrent-ruby" "rack"]; + groups = ["default" "development" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"; + type = "gem"; + }; + version = "3.7.2"; + }; + sprockets-rails = { + dependencies = ["actionpack" "activesupport" "sprockets"]; + groups = ["default" "development" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0mwmz36265646xqfyczgr1mhkm1hfxgxxvgdgr4xfcbf2g72p1k2"; + type = "gem"; + }; + version = "3.2.2"; + }; + ssrf_filter = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0flmg6f444liaxjgdwdrwcfwyyhc54a7wp26kqih2cklwll5gp40"; + type = "gem"; + }; + version = "1.0.7"; + }; + stackprof = { + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "147rb66p3n062vc433afqhkd99iazvkrqnghxgh871r62yhha93f"; + type = "gem"; + }; + version = "0.2.16"; + }; + stringex = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15ns7j5smw04w6w7bqd5mm2qcl7w9lhwykyb974i4isgg9yc23ys"; + type = "gem"; + }; + version = "2.8.5"; + }; + structured_warnings = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bc36glh0sfpyw7kr6f7a9pg2x739iv7nrrffj7x3n1siqkmk6pz"; + type = "gem"; + }; + version = "0.4.0"; + }; + svg-graph = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "07c64lhwjh5cfvvqmsijilx427c809aixl256b9g6i4f41r455jp"; + type = "gem"; + }; + version = "2.2.1"; + }; + swd = { + dependencies = ["activesupport" "attr_required" "httpclient"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0c5cdpykx2h4jx8q01hjhv8f0plw5r9iqm2i1m0ijiyk7dqm824w"; + type = "gem"; + }; + version = "1.2.0"; + }; + sys-filesystem = { + dependencies = ["ffi"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0m4i3ajbb8g74161by3jyzhw27dd8abrxhwnb1wabldh30m7v42f"; + type = "gem"; + }; + version = "1.4.1"; + }; + table_print = { + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jxmd1yg3h0g27wzfpvq1jnkkf7frwb5wy9m4f47nf4k3wl68rj3"; + type = "gem"; + }; + version = "1.5.7"; + }; + temple = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"; + type = "gem"; + }; + version = "0.8.2"; + }; + terminal-table = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hbmzfr17ji5ws5x5z3kypmb5irwwss7q7kkad0gs005ibqrxv0a"; + type = "gem"; + }; + version = "1.6.0"; + }; + test-prof = { + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "12xr23n1lhz28ywni7fpm9av074qigbl9wjrvccza2w46r0wfh99"; + type = "gem"; + }; + version = "1.0.2"; + }; + thor = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "18yhlvmfya23cs3pvhr1qy38y41b6mhr5q9vwv5lrgk16wmf3jna"; + type = "gem"; + }; + version = "1.1.0"; + }; + tilt = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rn8z8hda4h41a64l0zhkiwz2vxw9b1nb70gl37h1dg2k874yrlv"; + type = "gem"; + }; + version = "2.0.10"; + }; + timecop = { + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fw3nzycvd15qa7sxy9dxb4hqyizy1s8f7q3d50smbzyyvr8fvia"; + type = "gem"; + }; + version = "0.9.4"; + }; + ttfunk = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15iaxz9iak5643bq2bc0jkbjv8w2zn649lxgvh5wg48q9d4blw13"; + type = "gem"; + }; + version = "1.7.0"; + }; + typed_dag = { + dependencies = ["rails"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1342acsc95iqm5a4bngx57ppa87wjry0nrb4m8aifimmijznbp5q"; + type = "gem"; + }; + version = "2.0.2"; + }; + tzinfo = { + dependencies = ["concurrent-ruby"]; + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10qp5x7f9hvlc0psv9gsfbxg4a7s0485wsbq1kljkxq94in91l4z"; + type = "gem"; + }; + version = "2.0.4"; + }; + tzinfo-data = { + dependencies = ["tzinfo"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ik16lnsyr2739jzwl4r5sz8q639lqw8f9s68iszwhm2pcq8p4w2"; + type = "gem"; + }; + version = "1.2021.1"; + }; + uber = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1p1mm7mngg40x05z52md3mbamkng0zpajbzqjjwmsyw0zw3v9vjv"; + type = "gem"; + }; + version = "0.1.0"; + }; + unf = { + dependencies = ["unf_ext"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"; + type = "gem"; + }; + version = "0.1.4"; + }; + unf_ext = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wc47r23h063l8ysws8sy24gzh74mks81cak3lkzlrw4qkqb3sg4"; + type = "gem"; + }; + version = "0.0.7.7"; + }; + unicode-display_width = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bilbnc8j6jkb59lrf177i3p1pdyxll0n8400hzqr35vl3r3kv2m"; + type = "gem"; + }; + version = "2.0.0"; + }; + unicorn = { + dependencies = ["kgio" "raindrops"]; + groups = ["default" "production"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ig48f4xhrssq5d11vkc41k7nj6pbv2jh1f8k5gfskfd469mcc2y"; + type = "gem"; + }; + version = "5.8.0"; + }; + unicorn-worker-killer = { + dependencies = ["get_process_mem" "unicorn"]; + groups = ["production"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva"; + type = "gem"; + }; + version = "0.4.4"; + }; + validate_email = { + dependencies = ["activemodel" "mail"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx"; + type = "gem"; + }; + version = "0.1.6"; + }; + validate_url = { + dependencies = ["activemodel" "public_suffix"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bwj34rz7961rrl545f006m2jdz1nrc0m72gfqmnb41xwsvpagbk"; + type = "gem"; + }; + version = "1.0.13"; + }; + warden = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1l7gl7vms023w4clg02pm4ky9j12la2vzsixi2xrv9imbn44ys26"; + type = "gem"; + }; + version = "1.2.9"; + }; + warden-basic_auth = { + dependencies = ["warden"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0viw3wwx3shlb4mynjim99xixs71qn2054wywv1q40cw23h55ixz"; + type = "gem"; + }; + version = "0.2.1"; + }; + webdrivers = { + dependencies = ["nokogiri" "rubyzip" "selenium-webdriver"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hi6pgkfwgz1bzfclyrr449xy9y2f2bcrnnnlb5ghvvrqkgn0dry"; + type = "gem"; + }; + version = "4.6.0"; + }; + webfinger = { + dependencies = ["activesupport" "httpclient"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar"; + type = "gem"; + }; + version = "1.1.0"; + }; + webmock = { + dependencies = ["addressable" "crack" "hashdiff"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08cq0w5rr8znhyas8s3vhwfsd1j5fnvhhdyjr82d6kmh5542b3d9"; + type = "gem"; + }; + version = "3.12.1"; + }; + websocket-driver = { + dependencies = ["websocket-extensions"]; + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1i3rs4kcj0jba8idxla3s6xd1xfln3k8b4cb1dik2lda3ifnp3dh"; + type = "gem"; + }; + version = "0.7.3"; + }; + websocket-extensions = { + groups = ["default" "opf_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hc2g9qps8lmhibl5baa91b4qx8wqw872rgwagml78ydj8qacsqw"; + type = "gem"; + }; + version = "0.1.5"; + }; + will_paginate = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10qk4mf3rfc0vr26j0ba6vcz7407rdjfn13ph690pkzr94rv8bay"; + type = "gem"; + }; + version = "3.3.0"; + }; + with_advisory_lock = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0s5y6cwl6ikkywhaxm6pb2295dv0gk1xmpwbz49qzn6y5wyv63xw"; + type = "gem"; + }; + version = "4.6.0"; + }; + xpath = { + dependencies = ["nokogiri"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd"; + type = "gem"; + }; + version = "3.2.0"; + }; + zeitwerk = { + groups = ["default" "development" "opf_plugins" "sentry" "test"]; + platforms = [{ + engine = "maglev"; + } { + engine = "mingw"; + } { + engine = "mingw"; + } { + engine = "ruby"; + }]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1746czsjarixq0x05f7p3hpzi38ldg6wxnxxw74kbjzh1sdjgmpl"; + type = "gem"; + }; + version = "2.4.2"; + }; +} diff --git a/nix/shell.nix b/nix/shell.nix new file mode 100644 index 00000000000..a8c5f0e6297 --- /dev/null +++ b/nix/shell.nix @@ -0,0 +1,33 @@ +{ pkgs ? import {} }: +with pkgs; +let + op-get-test-failures = writeShellScriptBin "op-get-test-failures" '' + exec ${curl}/bin/curl "$$1" | grep 'rspec \.\/' | cut -f3 -d' ' | paste -s -d ' ' + ''; + + gems = bundlerEnv { + name = "openproject-dev"; + inherit ruby; + gemdir = ./.; + }; +in + mkShell { + nativeBuildInputs = [ + buildPackages.ruby_2_7 + postgresql + nodejs + tightvnc + bundix + docker-compose + google-chrome + + gems + + op-get-test-failures + ]; + + CHROME_BINARY = "${google-chrome}/bin/google-chrome"; + OPENPROJECT_TESTING_NO_HEADLESS = "1"; + OPENPROJECT_TESTING_AUTO_DEVTOOLS = "1"; +} +