rails_edge_test 2.1.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d665e5c9391002853173b89eb3507f3064672001bb38442910a6707fc0eedea4
4
- data.tar.gz: d67210bd8d38c8ac38cfef7d8215b1a1555dbbc75648c5cce7132f0ae874e630
3
+ metadata.gz: 6b1d9e151d083c503f9772ee13e6909956f2b2edb5af18e26af96324750fbffd
4
+ data.tar.gz: 82b8dee5ed37e093c00fe7b101d58c697d14edc78fa246a66880a706ace09707
5
5
  SHA512:
6
- metadata.gz: 288e099487db1c0c2c8f89d0fc101af3121cceb47c0ba3febf52ba1df2dc7b51cfa6ebc1561e9d73d8f21292889e50ca7b95332479bf1f77cff4b4987854bd80
7
- data.tar.gz: f79b3172693176158bd7aa2cc01e00424575985503070627f6bf2bc93f7028e4b59de44a79c4d6d1d6226f2b6bfa3062954d52ff44d6a08bfbf4e2e316ec6ad1
6
+ metadata.gz: 94dd2a282dacd017c57f0d0001932651af518edb8cc11f7b7d9146748096202509545d02874e2623232b44bd88f5f0415f3fa928d4aab11306bb09800848181d
7
+ data.tar.gz: 9d135a3146524f6e470d7f383ccea111a8c46249f771768f37be55a4c971848f42a9fc01329289b6bd46bbbc15d7f5a0c38e693fd55e9e84be77dfdf936e952c
data/.envrc CHANGED
@@ -1,2 +1,6 @@
1
- use nix
2
- watch_file nix/gemset.nix
1
+ use flake || use nix
2
+
3
+ watch_file gemset.nix
4
+
5
+ # circumvent problem with mktemp https://github.com/direnv/direnv/issues/1345
6
+ mkdir -p $TMPDIR
@@ -15,14 +15,20 @@ jobs:
15
15
  runs-on: ubuntu-22.04
16
16
  steps:
17
17
  - name: Install Nix
18
- uses: cachix/install-nix-action@v26
18
+ uses: cachix/install-nix-action@v30
19
19
  with:
20
- nix_path: nixpkgs=channel:nixos-24.05
20
+ github_access_token: ${{ secrets.GITHUB_TOKEN }}
21
21
 
22
22
  - name: Check out repository code
23
- uses: actions/checkout@v3
23
+ uses: actions/checkout@v4
24
24
  with:
25
25
  fetch-depth: 0
26
26
 
27
27
  - name: Run tests
28
- run: nix-shell --run rspec
28
+ run: nix develop --command rspec
29
+
30
+ - name: Run rubocop
31
+ run: nix develop --command rubocop
32
+
33
+ - name: Run nix formatter
34
+ run: nix fmt -- --check .
data/.gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  .bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
data/.rubocop.yml ADDED
@@ -0,0 +1,42 @@
1
+ inherit_from: .rubocop_todo.yml
2
+ AllCops:
3
+ NewCops: enable
4
+ SuggestExtensions:
5
+ rubocop-rails: false
6
+
7
+ plugins:
8
+ - rubocop-rspec
9
+ - rubocop-rake
10
+
11
+ # This prevents us from inlining code, which we think
12
+ # is often better then having lots if out-of-order method calls
13
+ Metrics/AbcSize:
14
+ Enabled: false
15
+
16
+ # This prevents us from co-locating functional code, which we think
17
+ # is often better then having lots of stateless files.
18
+ Metrics/ClassLength:
19
+ Enabled: false
20
+
21
+ # This prevents us from inlining code, which we think
22
+ # is often better then having lots if out-of-order method calls
23
+ Metrics/MethodLength:
24
+ Enabled: false
25
+
26
+ # This prevents us from inlining code, which we think
27
+ # is often better then having lots if out-of-order method calls
28
+ Metrics/ModuleLength:
29
+ Enabled: false
30
+
31
+ # This prevents us from inlining which we like. We like inlining!
32
+ RSpec/ExampleLength:
33
+ Enabled: False
34
+
35
+ # We believe that inlining is valuable and expecting one expectation
36
+ # forces us to avoid inlining.
37
+ RSpec/MultipleExpectations:
38
+ Enabled: False
39
+
40
+ # explicit makes specs easier to read
41
+ RSpec/DescribedClass:
42
+ EnforcedStyle: explicit
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,22 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1000 --no-auto-gen-timestamp`
3
+ # using RuboCop version 1.68.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 8
10
+ # Configuration parameters: AllowedConstants.
11
+ Style/Documentation:
12
+ Exclude:
13
+ - 'spec/**/*'
14
+ - 'test/**/*'
15
+ - 'lib/rails_edge_test.rb'
16
+ - 'lib/rails_edge_test/configuration.rb'
17
+ - 'lib/rails_edge_test/dsl.rb'
18
+ - 'lib/rails_edge_test/dsl/let_handler.rb'
19
+ - 'lib/rails_edge_test/printers/boring.rb'
20
+ - 'lib/rails_edge_test/printers/silent.rb'
21
+ - 'lib/rails_edge_test/printers/tree.rb'
22
+ - 'lib/rails_edge_test/runner.rb'
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.2.6
data/Appraisals CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  appraise 'rails-5.2' do
2
4
  gem 'rails', '~> 5.2.0'
3
5
  end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # The Changelog
2
2
 
3
+ ## Version 3.0.0: Unreleased
4
+ - drops support for ruby < 3.1, rails < 7
5
+ - adds support for ruby 3.2, rails 7.2
6
+
3
7
  ## Version 2.1.0: August 13, 2024
4
8
  - adds `delete` method for simulating delete requests
5
9
  - adds `set_authenticity_token` method for setting the authenticity token in the header & session
data/Gemfile CHANGED
@@ -1,4 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in rails_edge_test.gemspec
4
6
  gemspec
7
+
8
+ gem 'rails', '>= 7.0', '< 8.0.0'
9
+ gem 'rake', '~> 13.2.1'
10
+ gem 'rspec', '~> 3.13.0'
11
+ gem 'rubocop'
12
+ gem 'rubocop-rake'
13
+ gem 'rubocop-rspec'
14
+ gem 'sqlite3', '~> 2.6.0'
data/Gemfile.lock ADDED
@@ -0,0 +1,253 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rails_edge_test (3.0.0)
5
+ actionpack (>= 7.0.0, < 8.0.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actioncable (7.2.2.1)
11
+ actionpack (= 7.2.2.1)
12
+ activesupport (= 7.2.2.1)
13
+ nio4r (~> 2.0)
14
+ websocket-driver (>= 0.6.1)
15
+ zeitwerk (~> 2.6)
16
+ actionmailbox (7.2.2.1)
17
+ actionpack (= 7.2.2.1)
18
+ activejob (= 7.2.2.1)
19
+ activerecord (= 7.2.2.1)
20
+ activestorage (= 7.2.2.1)
21
+ activesupport (= 7.2.2.1)
22
+ mail (>= 2.8.0)
23
+ actionmailer (7.2.2.1)
24
+ actionpack (= 7.2.2.1)
25
+ actionview (= 7.2.2.1)
26
+ activejob (= 7.2.2.1)
27
+ activesupport (= 7.2.2.1)
28
+ mail (>= 2.8.0)
29
+ rails-dom-testing (~> 2.2)
30
+ actionpack (7.2.2.1)
31
+ actionview (= 7.2.2.1)
32
+ activesupport (= 7.2.2.1)
33
+ nokogiri (>= 1.8.5)
34
+ racc
35
+ rack (>= 2.2.4, < 3.2)
36
+ rack-session (>= 1.0.1)
37
+ rack-test (>= 0.6.3)
38
+ rails-dom-testing (~> 2.2)
39
+ rails-html-sanitizer (~> 1.6)
40
+ useragent (~> 0.16)
41
+ actiontext (7.2.2.1)
42
+ actionpack (= 7.2.2.1)
43
+ activerecord (= 7.2.2.1)
44
+ activestorage (= 7.2.2.1)
45
+ activesupport (= 7.2.2.1)
46
+ globalid (>= 0.6.0)
47
+ nokogiri (>= 1.8.5)
48
+ actionview (7.2.2.1)
49
+ activesupport (= 7.2.2.1)
50
+ builder (~> 3.1)
51
+ erubi (~> 1.11)
52
+ rails-dom-testing (~> 2.2)
53
+ rails-html-sanitizer (~> 1.6)
54
+ activejob (7.2.2.1)
55
+ activesupport (= 7.2.2.1)
56
+ globalid (>= 0.3.6)
57
+ activemodel (7.2.2.1)
58
+ activesupport (= 7.2.2.1)
59
+ activerecord (7.2.2.1)
60
+ activemodel (= 7.2.2.1)
61
+ activesupport (= 7.2.2.1)
62
+ timeout (>= 0.4.0)
63
+ activestorage (7.2.2.1)
64
+ actionpack (= 7.2.2.1)
65
+ activejob (= 7.2.2.1)
66
+ activerecord (= 7.2.2.1)
67
+ activesupport (= 7.2.2.1)
68
+ marcel (~> 1.0)
69
+ activesupport (7.2.2.1)
70
+ base64
71
+ benchmark (>= 0.3)
72
+ bigdecimal
73
+ concurrent-ruby (~> 1.0, >= 1.3.1)
74
+ connection_pool (>= 2.2.5)
75
+ drb
76
+ i18n (>= 1.6, < 2)
77
+ logger (>= 1.4.2)
78
+ minitest (>= 5.1)
79
+ securerandom (>= 0.3)
80
+ tzinfo (~> 2.0, >= 2.0.5)
81
+ ast (2.4.3)
82
+ base64 (0.2.0)
83
+ benchmark (0.4.0)
84
+ bigdecimal (3.1.9)
85
+ builder (3.3.0)
86
+ concurrent-ruby (1.3.5)
87
+ connection_pool (2.5.0)
88
+ crass (1.0.6)
89
+ date (3.4.1)
90
+ diff-lcs (1.6.1)
91
+ drb (2.2.1)
92
+ erubi (1.13.1)
93
+ globalid (1.2.1)
94
+ activesupport (>= 6.1)
95
+ i18n (1.14.7)
96
+ concurrent-ruby (~> 1.0)
97
+ io-console (0.8.0)
98
+ irb (1.15.1)
99
+ pp (>= 0.6.0)
100
+ rdoc (>= 4.0.0)
101
+ reline (>= 0.4.2)
102
+ json (2.10.2)
103
+ language_server-protocol (3.17.0.4)
104
+ lint_roller (1.1.0)
105
+ logger (1.7.0)
106
+ loofah (2.24.0)
107
+ crass (~> 1.0.2)
108
+ nokogiri (>= 1.12.0)
109
+ mail (2.8.1)
110
+ mini_mime (>= 0.1.1)
111
+ net-imap
112
+ net-pop
113
+ net-smtp
114
+ marcel (1.0.4)
115
+ mini_mime (1.1.5)
116
+ mini_portile2 (2.8.8)
117
+ minitest (5.25.5)
118
+ net-imap (0.5.6)
119
+ date
120
+ net-protocol
121
+ net-pop (0.1.2)
122
+ net-protocol
123
+ net-protocol (0.2.2)
124
+ timeout
125
+ net-smtp (0.5.1)
126
+ net-protocol
127
+ nio4r (2.7.4)
128
+ nokogiri (1.18.7)
129
+ mini_portile2 (~> 2.8.2)
130
+ racc (~> 1.4)
131
+ parallel (1.26.3)
132
+ parser (3.3.7.4)
133
+ ast (~> 2.4.1)
134
+ racc
135
+ pp (0.6.2)
136
+ prettyprint
137
+ prettyprint (0.2.0)
138
+ prism (1.4.0)
139
+ psych (5.2.3)
140
+ date
141
+ stringio
142
+ racc (1.8.1)
143
+ rack (3.1.12)
144
+ rack-session (2.1.0)
145
+ base64 (>= 0.1.0)
146
+ rack (>= 3.0.0)
147
+ rack-test (2.2.0)
148
+ rack (>= 1.3)
149
+ rackup (2.2.1)
150
+ rack (>= 3)
151
+ rails (7.2.2.1)
152
+ actioncable (= 7.2.2.1)
153
+ actionmailbox (= 7.2.2.1)
154
+ actionmailer (= 7.2.2.1)
155
+ actionpack (= 7.2.2.1)
156
+ actiontext (= 7.2.2.1)
157
+ actionview (= 7.2.2.1)
158
+ activejob (= 7.2.2.1)
159
+ activemodel (= 7.2.2.1)
160
+ activerecord (= 7.2.2.1)
161
+ activestorage (= 7.2.2.1)
162
+ activesupport (= 7.2.2.1)
163
+ bundler (>= 1.15.0)
164
+ railties (= 7.2.2.1)
165
+ rails-dom-testing (2.2.0)
166
+ activesupport (>= 5.0.0)
167
+ minitest
168
+ nokogiri (>= 1.6)
169
+ rails-html-sanitizer (1.6.2)
170
+ loofah (~> 2.21)
171
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
172
+ railties (7.2.2.1)
173
+ actionpack (= 7.2.2.1)
174
+ activesupport (= 7.2.2.1)
175
+ irb (~> 1.13)
176
+ rackup (>= 1.0.0)
177
+ rake (>= 12.2)
178
+ thor (~> 1.0, >= 1.2.2)
179
+ zeitwerk (~> 2.6)
180
+ rainbow (3.1.1)
181
+ rake (13.2.1)
182
+ rdoc (6.13.1)
183
+ psych (>= 4.0.0)
184
+ regexp_parser (2.10.0)
185
+ reline (0.6.0)
186
+ io-console (~> 0.5)
187
+ rspec (3.13.0)
188
+ rspec-core (~> 3.13.0)
189
+ rspec-expectations (~> 3.13.0)
190
+ rspec-mocks (~> 3.13.0)
191
+ rspec-core (3.13.3)
192
+ rspec-support (~> 3.13.0)
193
+ rspec-expectations (3.13.3)
194
+ diff-lcs (>= 1.2.0, < 2.0)
195
+ rspec-support (~> 3.13.0)
196
+ rspec-mocks (3.13.2)
197
+ diff-lcs (>= 1.2.0, < 2.0)
198
+ rspec-support (~> 3.13.0)
199
+ rspec-support (3.13.2)
200
+ rubocop (1.75.1)
201
+ json (~> 2.3)
202
+ language_server-protocol (~> 3.17.0.2)
203
+ lint_roller (~> 1.1.0)
204
+ parallel (~> 1.10)
205
+ parser (>= 3.3.0.2)
206
+ rainbow (>= 2.2.2, < 4.0)
207
+ regexp_parser (>= 2.9.3, < 3.0)
208
+ rubocop-ast (>= 1.43.0, < 2.0)
209
+ ruby-progressbar (~> 1.7)
210
+ unicode-display_width (>= 2.4.0, < 4.0)
211
+ rubocop-ast (1.43.0)
212
+ parser (>= 3.3.7.2)
213
+ prism (~> 1.4)
214
+ rubocop-rake (0.7.1)
215
+ lint_roller (~> 1.1)
216
+ rubocop (>= 1.72.1)
217
+ rubocop-rspec (3.5.0)
218
+ lint_roller (~> 1.1)
219
+ rubocop (~> 1.72, >= 1.72.1)
220
+ ruby-progressbar (1.13.0)
221
+ securerandom (0.4.1)
222
+ sqlite3 (2.6.0)
223
+ mini_portile2 (~> 2.8.0)
224
+ stringio (3.1.6)
225
+ thor (1.3.2)
226
+ timeout (0.4.3)
227
+ tzinfo (2.0.6)
228
+ concurrent-ruby (~> 1.0)
229
+ unicode-display_width (3.1.4)
230
+ unicode-emoji (~> 4.0, >= 4.0.4)
231
+ unicode-emoji (4.0.4)
232
+ useragent (0.16.11)
233
+ websocket-driver (0.7.7)
234
+ base64
235
+ websocket-extensions (>= 0.1.0)
236
+ websocket-extensions (0.1.5)
237
+ zeitwerk (2.6.18)
238
+
239
+ PLATFORMS
240
+ ruby
241
+
242
+ DEPENDENCIES
243
+ rails (>= 7.0, < 8.0.0)
244
+ rails_edge_test!
245
+ rake (~> 13.2.1)
246
+ rspec (~> 3.13.0)
247
+ rubocop
248
+ rubocop-rake
249
+ rubocop-rspec
250
+ sqlite3 (~> 2.6.0)
251
+
252
+ BUNDLED WITH
253
+ 2.3.27
data/README.md CHANGED
@@ -1,16 +1,16 @@
1
1
  # RailsEdgeTest
2
2
 
3
3
  There is a particular type of integration testing that we have found very fruitful. We:
4
- - load up our front-end with its virtual dom,
5
- - assert expectations by querying the virtual dom, and
4
+ - load up our front-end with its virtual dom,
5
+ - assert expectations by querying the virtual dom, and
6
6
  - interact with our application by simulating events on elements in the virtual dom
7
7
 
8
8
  We have found these browser-less integration tests to be orders of magnitude faster than typical capybara integration tests, with minimal downsides. One of the biggest drawbacks to this approach is that we must maintain the json we expect from the backend in a form that is available to these tests, typically a json file (or Elm file with a json blob). Maintaining the blob causes two problems:
9
- 1. The blob can easily become out-of-sync with our backend, and
9
+ 1. The blob can easily become out-of-sync with our backend, and
10
10
  2. There is no specification for how to recreate it when things do become out-of-sync.
11
11
 
12
12
  This gem aims to solve these problems. The rails_edge_test gem allows us to:
13
- - use Ruby code to explicitly specify each json blob our front-end tests require,
13
+ - use Ruby code to explicitly specify each json blob our front-end tests require,
14
14
  - re-generate these files, as needed, with a simple rake task.
15
15
 
16
16
  We write what we call "edge specs," Ruby files that specify the json edge between our front- and back-end by using our Rails models and controller actions directly. These are written using a DSL evocative of an RSpec spec. They allow us to generate json blob files which we commit to our repo, and access from our front-end integration tests. Over time, as our APIs develop, we can simply rerun our edge specs in order to update these json blobs based on existing specifications.
@@ -44,22 +44,22 @@ include RailsEdgeTest::Dsl
44
44
  controller HomeController do
45
45
  action :show do
46
46
  let(:user) { create :user }
47
-
47
+
48
48
  edge "first time user" do
49
49
  user
50
50
  perform_get
51
-
51
+
52
52
  # generates Edge.HomeController.Show.FirstTimeUser with `json` function
53
- produce_elm_file('FirstTimeUser')
53
+ produce_elm_file('FirstTimeUser')
54
54
  end
55
-
55
+
56
56
  edge "returning user" do
57
57
  user
58
58
  create :post, user: user
59
59
  perform_get
60
-
60
+
61
61
  # generates Edge.HomeController.Show.ReturningUser with `json` function
62
- produce_elm_file('ReturningUser')
62
+ produce_elm_file('ReturningUser')
63
63
  end
64
64
  end
65
65
  end
@@ -122,19 +122,35 @@ require Rails.root.join('edge', 'spec', 'edge_helper')
122
122
 
123
123
  ## Development
124
124
 
125
+ This project uses nix to manage the dev environment.
126
+
127
+ This project additionally uses
128
+ - [direnv](https://github.com/direnv/direnv)
129
+ - flakes
130
+
131
+ If you don't have flakes enabled, you can enable them by adding `experimental-features = flakes` to your `~/.config/nix/nix.conf` file.
132
+ (or running )
133
+
134
+ typing `direnv allow` loads the dev environment including a compatible ruby, sqlite, and gems.
135
+
136
+ To modify gem dependencies, use the bundle wrappers
137
+ - `bundle-lock` to update the lockfile
138
+ - `bundle-update` to update gems & the lockfile
139
+ then run `bundix` to update the `gemset.nix` file.
140
+
141
+ ### Usage Without Nix
142
+
143
+ Usage without nix is unsupported but may work anyways. Try the following:
144
+
125
145
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
126
146
 
127
147
  To install this gem onto your local machine, run `bundle exec rake install`.
128
148
 
129
- To release a new version, follow the instructions in [PUBLISHING.md](PUBLISHING.md).
130
-
131
- ### Nix support
149
+ Note: We only support adding gems and dependencies using nix.
132
150
 
133
- In order to get Nix working you need to have [direnv](https://github.com/direnv/direnv) installed. You will have to `direnv allow` to load the current `.envrc`. You can then run from the top level folder:
151
+ ### Publishing
134
152
 
135
- ```
136
- ./nix/update-gemset.sh
137
- ```
153
+ To release a new version, follow the instructions in [PUBLISHING.md](PUBLISHING.md).
138
154
 
139
155
  ## Contributing
140
156
 
@@ -144,4 +160,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/NoRedI
144
160
  ## License
145
161
 
146
162
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
147
-
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
data/bin/console CHANGED
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "rails_edge_test"
4
+ require 'bundler/setup'
5
+ require 'rails_edge_test'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +11,5 @@ require "rails_edge_test"
10
11
  # require "pry"
11
12
  # Pry.start
12
13
 
13
- require "irb"
14
+ require 'irb'
14
15
  IRB.start(__FILE__)
data/exe/generate_edges CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'open3'
4
5
  require 'rails_edge_test'
@@ -12,11 +13,10 @@ def find_gemfile_dir(path)
12
13
  else
13
14
  new_path = File.expand_path('..', path)
14
15
 
15
- if path == new_path
16
- raise 'Could not find directory with Gemfile'
17
- else
18
- find_gemfile_dir(new_path)
19
- end
16
+ raise 'Could not find directory with Gemfile' if path == new_path
17
+
18
+ find_gemfile_dir(new_path)
19
+
20
20
  end
21
21
  end
22
22
 
data/flake.lock ADDED
@@ -0,0 +1,116 @@
1
+ {
2
+ "nodes": {
3
+ "bundix": {
4
+ "inputs": {
5
+ "nixpkgs": [
6
+ "nixpkgs"
7
+ ]
8
+ },
9
+ "locked": {
10
+ "lastModified": 1721093334,
11
+ "narHash": "sha256-5FghZ0HIETbc0TGcBV8uyixq5z4w/9PF5Puhujz3D1o=",
12
+ "owner": "inscapist",
13
+ "repo": "bundix",
14
+ "rev": "42c08846f7e5d91ef121239fd364feaeb22c0bbc",
15
+ "type": "github"
16
+ },
17
+ "original": {
18
+ "owner": "inscapist",
19
+ "ref": "main",
20
+ "repo": "bundix",
21
+ "type": "github"
22
+ }
23
+ },
24
+ "fu": {
25
+ "inputs": {
26
+ "systems": "systems"
27
+ },
28
+ "locked": {
29
+ "lastModified": 1726560853,
30
+ "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
31
+ "owner": "numtide",
32
+ "repo": "flake-utils",
33
+ "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
34
+ "type": "github"
35
+ },
36
+ "original": {
37
+ "owner": "numtide",
38
+ "repo": "flake-utils",
39
+ "type": "github"
40
+ }
41
+ },
42
+ "nixpkgs": {
43
+ "locked": {
44
+ "lastModified": 1743501102,
45
+ "narHash": "sha256-7PCBQ4aGVF8OrzMkzqtYSKyoQuU2jtpPi4lmABpe5X4=",
46
+ "owner": "nixos",
47
+ "repo": "nixpkgs",
48
+ "rev": "02f2af8c8a8c3b2c05028936a1e84daefa1171d4",
49
+ "type": "github"
50
+ },
51
+ "original": {
52
+ "owner": "nixos",
53
+ "ref": "nixos-24.11",
54
+ "repo": "nixpkgs",
55
+ "type": "github"
56
+ }
57
+ },
58
+ "nixpkgs_2": {
59
+ "locked": {
60
+ "lastModified": 1678875422,
61
+ "narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=",
62
+ "owner": "NixOS",
63
+ "repo": "nixpkgs",
64
+ "rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459",
65
+ "type": "github"
66
+ },
67
+ "original": {
68
+ "id": "nixpkgs",
69
+ "type": "indirect"
70
+ }
71
+ },
72
+ "root": {
73
+ "inputs": {
74
+ "bundix": "bundix",
75
+ "fu": "fu",
76
+ "nixpkgs": "nixpkgs",
77
+ "ruby-nix": "ruby-nix"
78
+ }
79
+ },
80
+ "ruby-nix": {
81
+ "inputs": {
82
+ "nixpkgs": "nixpkgs_2"
83
+ },
84
+ "locked": {
85
+ "lastModified": 1725677741,
86
+ "narHash": "sha256-CySXGzqycagfrWdcTwzM3Zo1MMm9uUtePYER9BvrW8s=",
87
+ "owner": "inscapist",
88
+ "repo": "ruby-nix",
89
+ "rev": "1f3756f8a713171bf891b39c0d3b1fe6d83a4a63",
90
+ "type": "github"
91
+ },
92
+ "original": {
93
+ "owner": "inscapist",
94
+ "repo": "ruby-nix",
95
+ "type": "github"
96
+ }
97
+ },
98
+ "systems": {
99
+ "locked": {
100
+ "lastModified": 1681028828,
101
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
102
+ "owner": "nix-systems",
103
+ "repo": "default",
104
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
105
+ "type": "github"
106
+ },
107
+ "original": {
108
+ "owner": "nix-systems",
109
+ "repo": "default",
110
+ "type": "github"
111
+ }
112
+ }
113
+ },
114
+ "root": "root",
115
+ "version": 7
116
+ }