railpack 1.3.9 → 1.4.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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/railpack/bundler.rb +42 -7
  3. data/lib/railpack/version.rb +1 -1
  4. data/test/dummy_app/.dockerignore +51 -0
  5. data/test/dummy_app/.github/dependabot.yml +12 -0
  6. data/test/dummy_app/.github/workflows/ci.yml +39 -0
  7. data/test/dummy_app/.rubocop.yml +8 -0
  8. data/test/dummy_app/.ruby-version +1 -0
  9. data/test/dummy_app/Dockerfile +68 -0
  10. data/test/dummy_app/Gemfile +43 -0
  11. data/test/dummy_app/Gemfile.lock +348 -0
  12. data/test/dummy_app/README.md +24 -0
  13. data/test/dummy_app/Rakefile +6 -0
  14. data/test/dummy_app/app/assets/images/.keep +0 -0
  15. data/test/dummy_app/app/assets/stylesheets/application.css +10 -0
  16. data/test/dummy_app/app/controllers/application_controller.rb +4 -0
  17. data/test/dummy_app/app/controllers/concerns/.keep +0 -0
  18. data/test/dummy_app/app/helpers/application_helper.rb +2 -0
  19. data/test/dummy_app/app/models/application_record.rb +3 -0
  20. data/test/dummy_app/app/models/concerns/.keep +0 -0
  21. data/test/dummy_app/app/views/layouts/application.html.erb +27 -0
  22. data/test/dummy_app/app/views/pwa/manifest.json.erb +22 -0
  23. data/test/dummy_app/app/views/pwa/service-worker.js +26 -0
  24. data/test/dummy_app/bin/brakeman +7 -0
  25. data/test/dummy_app/bin/dev +2 -0
  26. data/test/dummy_app/bin/docker-entrypoint +14 -0
  27. data/test/dummy_app/bin/rails +4 -0
  28. data/test/dummy_app/bin/rake +4 -0
  29. data/test/dummy_app/bin/rubocop +8 -0
  30. data/test/dummy_app/bin/setup +34 -0
  31. data/test/dummy_app/bin/thrust +5 -0
  32. data/test/dummy_app/config/application.rb +44 -0
  33. data/test/dummy_app/config/boot.rb +3 -0
  34. data/test/dummy_app/config/credentials.yml.enc +1 -0
  35. data/test/dummy_app/config/database.yml +37 -0
  36. data/test/dummy_app/config/environment.rb +5 -0
  37. data/test/dummy_app/config/environments/development.rb +54 -0
  38. data/test/dummy_app/config/environments/production.rb +67 -0
  39. data/test/dummy_app/config/environments/test.rb +42 -0
  40. data/test/dummy_app/config/initializers/assets.rb +7 -0
  41. data/test/dummy_app/config/initializers/content_security_policy.rb +25 -0
  42. data/test/dummy_app/config/initializers/filter_parameter_logging.rb +8 -0
  43. data/test/dummy_app/config/initializers/inflections.rb +16 -0
  44. data/test/dummy_app/config/locales/en.yml +31 -0
  45. data/test/dummy_app/config/master.key +1 -0
  46. data/test/dummy_app/config/puma.rb +41 -0
  47. data/test/dummy_app/config/railpack.yml +42 -0
  48. data/test/dummy_app/config/routes.rb +14 -0
  49. data/test/dummy_app/config.ru +6 -0
  50. data/test/dummy_app/db/seeds.rb +9 -0
  51. data/test/dummy_app/lib/tasks/.keep +0 -0
  52. data/test/dummy_app/log/.keep +0 -0
  53. data/test/dummy_app/log/development.log +0 -0
  54. data/test/dummy_app/public/400.html +114 -0
  55. data/test/dummy_app/public/404.html +114 -0
  56. data/test/dummy_app/public/406-unsupported-browser.html +114 -0
  57. data/test/dummy_app/public/422.html +114 -0
  58. data/test/dummy_app/public/500.html +114 -0
  59. data/test/dummy_app/public/icon.png +0 -0
  60. data/test/dummy_app/public/icon.svg +3 -0
  61. data/test/dummy_app/public/robots.txt +1 -0
  62. data/test/dummy_app/script/.keep +0 -0
  63. data/test/dummy_app/storage/.keep +0 -0
  64. data/test/dummy_app/tmp/.keep +0 -0
  65. data/test/dummy_app/tmp/pids/.keep +0 -0
  66. data/test/dummy_app/tmp/storage/.keep +0 -0
  67. data/test/dummy_app/vendor/.keep +0 -0
  68. metadata +65 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56bec10d1edce076bfa66addfdd70b9e57e0ca25b7dd0aacf912e0da320575e2
4
- data.tar.gz: d25ef935ab51a321ecb0552ca62c7d98c354534af3011ba644974a0121194b00
3
+ metadata.gz: 022e5e12f3f60da166a667f449e624bdb78b68bc58de58b3525f83994281b1a3
4
+ data.tar.gz: 8b4a489f538b8aa10cbf04fe8fcbea7cb976b6d79f5c3e017ecaedb514c1be21
5
5
  SHA512:
6
- metadata.gz: 5e2af79e2befa734dc314e0380b719f5c0717490a4c350f81ff44f1cefac3a842341dbe1f82abfd424250b08cb3ff2297b16970bd2ca16f37a9cb13cfc2477ab
7
- data.tar.gz: b3961751397d475c4a29ced368694a15617999d7015f85cd75c0565f425de1368d801ece1d2baf829852369ef96e365d319f0cfe6878c109c59e8373c5427a47
6
+ metadata.gz: 23ff04e8ec42243167fc7e0ebfc51fb854c1bb52e85f81fbebffbfdc24c124a27d6e00d43013939f59dffdfaf0b0f3149eaf5bf6a9475143fd0ea4f08502fc56
7
+ data.tar.gz: fab9ba986917d57aede6dd13d5eef07b863fa77dd32c5c0df9a5dd3f2b0069b94840fd5abeed9b046d5d0fe00216c9c7325f5ce096c73a6b99c57833dfbfbb1a
@@ -1,3 +1,6 @@
1
+ require 'shellwords'
2
+ require 'open3'
3
+
1
4
  module Railpack
2
5
  class Bundler
3
6
  attr_reader :config
@@ -63,9 +66,19 @@ module Railpack
63
66
 
64
67
  def bundler_command_overrides
65
68
  return {} unless config.respond_to?(:bundler_command_overrides)
66
- config.bundler_command_overrides(current_env) || {}
67
- rescue
68
- {}
69
+
70
+ begin
71
+ config.bundler_command_overrides(current_env) || {}
72
+ rescue NoMethodError, KeyError, TypeError, ArgumentError => e
73
+ # Log warning for legitimate config issues, but don't crash
74
+ if defined?(Rails) && Rails.logger
75
+ Rails.logger.warn "Railpack: Invalid bundler_command_overrides config (#{e.class}: #{e.message}) - using defaults"
76
+ end
77
+ {}
78
+ rescue => e
79
+ # Re-raise unexpected errors (don't hide bugs)
80
+ raise e
81
+ end
69
82
  end
70
83
 
71
84
  protected
@@ -75,9 +88,31 @@ module Railpack
75
88
  end
76
89
 
77
90
  def execute!(command_array)
78
- success = system(*command_array)
79
- raise Error, "Command failed: #{command_array.join(' ')}" unless success
80
- success
91
+ stdout, stderr, status = Open3.capture3(*command_array)
92
+
93
+ unless status.success?
94
+ command_string = Shellwords.join(command_array)
95
+
96
+ error_msg = "Command failed"
97
+ error_msg += " (exit status: #{status.exitstatus})" if status.exitstatus
98
+ error_msg += " (terminated by signal: #{status.termsig})" if status.termsig
99
+ error_msg += ": #{command_string}"
100
+
101
+ # Include stderr output for debugging (truncate if too long)
102
+ if stderr && !stderr.empty?
103
+ stderr_lines = stderr.split("\n")
104
+ if stderr_lines.size > 10
105
+ stderr_preview = stderr_lines.first(5).join("\n") + "\n... (#{stderr_lines.size - 5} more lines)"
106
+ else
107
+ stderr_preview = stderr
108
+ end
109
+ error_msg += "\n\nSTDERR:\n#{stderr_preview}"
110
+ end
111
+
112
+ raise Error, error_msg
113
+ end
114
+
115
+ status.success?
81
116
  end
82
117
 
83
118
  # Build full command args by merging config flags/args with passed args
@@ -123,7 +158,7 @@ module Railpack
123
158
  end
124
159
 
125
160
  def exec(*args)
126
- execute(["node", *args])
161
+ execute([package_manager, "exec", *args])
127
162
  end
128
163
 
129
164
  def version
@@ -1,3 +1,3 @@
1
1
  module Railpack
2
- VERSION = "1.3.9"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -0,0 +1,51 @@
1
+ # See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files.
2
+
3
+ # Ignore git directory.
4
+ /.git/
5
+ /.gitignore
6
+
7
+ # Ignore bundler config.
8
+ /.bundle
9
+
10
+ # Ignore all environment files.
11
+ /.env*
12
+
13
+ # Ignore all default key files.
14
+ /config/master.key
15
+ /config/credentials/*.key
16
+
17
+ # Ignore all logfiles and tempfiles.
18
+ /log/*
19
+ /tmp/*
20
+ !/log/.keep
21
+ !/tmp/.keep
22
+
23
+ # Ignore pidfiles, but keep the directory.
24
+ /tmp/pids/*
25
+ !/tmp/pids/.keep
26
+
27
+ # Ignore storage (uploaded files in development and any SQLite databases).
28
+ /storage/*
29
+ !/storage/.keep
30
+ /tmp/storage/*
31
+ !/tmp/storage/.keep
32
+
33
+ # Ignore assets.
34
+ /node_modules/
35
+ /app/assets/builds/*
36
+ !/app/assets/builds/.keep
37
+ /public/assets
38
+
39
+ # Ignore CI service files.
40
+ /.github
41
+
42
+ # Ignore Kamal files.
43
+ /config/deploy*.yml
44
+ /.kamal
45
+
46
+ # Ignore development files
47
+ /.devcontainer
48
+
49
+ # Ignore Docker-related files
50
+ /.dockerignore
51
+ /Dockerfile*
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
8
+ - package-ecosystem: github-actions
9
+ directory: "/"
10
+ schedule:
11
+ interval: daily
12
+ open-pull-requests-limit: 10
@@ -0,0 +1,39 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [ main ]
7
+
8
+ jobs:
9
+ scan_ruby:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout code
14
+ uses: actions/checkout@v4
15
+
16
+ - name: Set up Ruby
17
+ uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: .ruby-version
20
+ bundler-cache: true
21
+
22
+ - name: Scan for common Rails security vulnerabilities using static analysis
23
+ run: bin/brakeman --no-pager
24
+
25
+ lint:
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - name: Checkout code
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Set up Ruby
32
+ uses: ruby/setup-ruby@v1
33
+ with:
34
+ ruby-version: .ruby-version
35
+ bundler-cache: true
36
+
37
+ - name: Lint code for consistent style
38
+ run: bin/rubocop -f github
39
+
@@ -0,0 +1,8 @@
1
+ # Omakase Ruby styling for Rails
2
+ inherit_gem: { rubocop-rails-omakase: rubocop.yml }
3
+
4
+ # Overwrite or add rules to create your own house style
5
+ #
6
+ # # Use `[a, [b, c]]` not `[ a, [ b, c ] ]`
7
+ # Layout/SpaceInsideArrayLiteralBrackets:
8
+ # Enabled: false
@@ -0,0 +1 @@
1
+ 3.4.2
@@ -0,0 +1,68 @@
1
+ # syntax=docker/dockerfile:1
2
+ # check=error=true
3
+
4
+ # This Dockerfile is designed for production, not development. Use with Kamal or build'n'run by hand:
5
+ # docker build -t dummy_app .
6
+ # docker run -d -p 80:80 -e RAILS_MASTER_KEY=<value from config/master.key> --name dummy_app dummy_app
7
+
8
+ # For a containerized dev environment, see Dev Containers: https://guides.rubyonrails.org/getting_started_with_devcontainer.html
9
+
10
+ # Make sure RUBY_VERSION matches the Ruby version in .ruby-version
11
+ ARG RUBY_VERSION=3.4.2
12
+ FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base
13
+
14
+ # Rails app lives here
15
+ WORKDIR /rails
16
+
17
+ # Install base packages
18
+ RUN apt-get update -qq && \
19
+ apt-get install --no-install-recommends -y curl libjemalloc2 sqlite3 && \
20
+ rm -rf /var/lib/apt/lists /var/cache/apt/archives
21
+
22
+ # Set production environment
23
+ ENV RAILS_ENV="production" \
24
+ BUNDLE_DEPLOYMENT="1" \
25
+ BUNDLE_PATH="/usr/local/bundle" \
26
+ BUNDLE_WITHOUT="development"
27
+
28
+ # Throw-away build stage to reduce size of final image
29
+ FROM base AS build
30
+
31
+ # Install packages needed to build gems
32
+ RUN apt-get update -qq && \
33
+ apt-get install --no-install-recommends -y build-essential git libyaml-dev pkg-config && \
34
+ rm -rf /var/lib/apt/lists /var/cache/apt/archives
35
+
36
+ # Install application gems
37
+ COPY Gemfile Gemfile.lock ./
38
+ RUN bundle install && \
39
+ rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git
40
+
41
+ # Copy application code
42
+ COPY . .
43
+
44
+ # Precompiling assets for production without requiring secret RAILS_MASTER_KEY
45
+ RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile
46
+
47
+
48
+
49
+
50
+ # Final stage for app image
51
+ FROM base
52
+
53
+ # Copy built artifacts: gems, application
54
+ COPY --from=build "${BUNDLE_PATH}" "${BUNDLE_PATH}"
55
+ COPY --from=build /rails /rails
56
+
57
+ # Run and own only the runtime files as a non-root user for security
58
+ RUN groupadd --system --gid 1000 rails && \
59
+ useradd rails --uid 1000 --gid 1000 --create-home --shell /bin/bash && \
60
+ chown -R rails:rails db log storage tmp
61
+ USER 1000:1000
62
+
63
+ # Entrypoint prepares the database.
64
+ ENTRYPOINT ["/rails/bin/docker-entrypoint"]
65
+
66
+ # Start server via Thruster by default, this can be overwritten at runtime
67
+ EXPOSE 80
68
+ CMD ["./bin/thrust", "./bin/rails", "server"]
@@ -0,0 +1,43 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
4
+ gem "rails", "~> 8.0.4"
5
+ gem "railpack", path: "../.."
6
+ # The modern asset pipeline for Rails [https://github.com/rails/propshaft]
7
+ gem "propshaft"
8
+ # Use sqlite3 as the database for Active Record
9
+ gem "sqlite3", ">= 2.1"
10
+ # Use the Puma web server [https://github.com/puma/puma]
11
+ gem "puma", ">= 5.0"
12
+
13
+ # Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword]
14
+ # gem "bcrypt", "~> 3.1.7"
15
+
16
+ # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
17
+ gem "tzinfo-data", platforms: %i[ windows jruby ]
18
+
19
+ # Use the database-backed adapters for Rails.cache and Active Job
20
+ gem "solid_cache"
21
+ gem "solid_queue"
22
+
23
+ # Deploy this application anywhere as a Docker container [https://kamal-deploy.org]
24
+ gem "kamal", require: false
25
+
26
+ # Add HTTP asset caching/compression and X-Sendfile acceleration to Puma [https://github.com/basecamp/thruster/]
27
+ gem "thruster", require: false
28
+
29
+ group :development, :test do
30
+ # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
31
+ gem "debug", platforms: %i[ mri windows ], require: "debug/prelude"
32
+
33
+ # Static analysis for security vulnerabilities [https://brakemanscanner.org/]
34
+ gem "brakeman", require: false
35
+
36
+ # Omakase Ruby styling [https://github.com/rails/rubocop-rails-omakase/]
37
+ gem "rubocop-rails-omakase", require: false
38
+ end
39
+
40
+ group :development do
41
+ # Use console on exceptions pages [https://github.com/rails/web-console]
42
+ gem "web-console"
43
+ end
@@ -0,0 +1,348 @@
1
+ PATH
2
+ remote: ../..
3
+ specs:
4
+ railpack (1.3.9)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ actioncable (8.0.4)
10
+ actionpack (= 8.0.4)
11
+ activesupport (= 8.0.4)
12
+ nio4r (~> 2.0)
13
+ websocket-driver (>= 0.6.1)
14
+ zeitwerk (~> 2.6)
15
+ actionmailbox (8.0.4)
16
+ actionpack (= 8.0.4)
17
+ activejob (= 8.0.4)
18
+ activerecord (= 8.0.4)
19
+ activestorage (= 8.0.4)
20
+ activesupport (= 8.0.4)
21
+ mail (>= 2.8.0)
22
+ actionmailer (8.0.4)
23
+ actionpack (= 8.0.4)
24
+ actionview (= 8.0.4)
25
+ activejob (= 8.0.4)
26
+ activesupport (= 8.0.4)
27
+ mail (>= 2.8.0)
28
+ rails-dom-testing (~> 2.2)
29
+ actionpack (8.0.4)
30
+ actionview (= 8.0.4)
31
+ activesupport (= 8.0.4)
32
+ nokogiri (>= 1.8.5)
33
+ rack (>= 2.2.4)
34
+ rack-session (>= 1.0.1)
35
+ rack-test (>= 0.6.3)
36
+ rails-dom-testing (~> 2.2)
37
+ rails-html-sanitizer (~> 1.6)
38
+ useragent (~> 0.16)
39
+ actiontext (8.0.4)
40
+ actionpack (= 8.0.4)
41
+ activerecord (= 8.0.4)
42
+ activestorage (= 8.0.4)
43
+ activesupport (= 8.0.4)
44
+ globalid (>= 0.6.0)
45
+ nokogiri (>= 1.8.5)
46
+ actionview (8.0.4)
47
+ activesupport (= 8.0.4)
48
+ builder (~> 3.1)
49
+ erubi (~> 1.11)
50
+ rails-dom-testing (~> 2.2)
51
+ rails-html-sanitizer (~> 1.6)
52
+ activejob (8.0.4)
53
+ activesupport (= 8.0.4)
54
+ globalid (>= 0.3.6)
55
+ activemodel (8.0.4)
56
+ activesupport (= 8.0.4)
57
+ activerecord (8.0.4)
58
+ activemodel (= 8.0.4)
59
+ activesupport (= 8.0.4)
60
+ timeout (>= 0.4.0)
61
+ activestorage (8.0.4)
62
+ actionpack (= 8.0.4)
63
+ activejob (= 8.0.4)
64
+ activerecord (= 8.0.4)
65
+ activesupport (= 8.0.4)
66
+ marcel (~> 1.0)
67
+ activesupport (8.0.4)
68
+ base64
69
+ benchmark (>= 0.3)
70
+ bigdecimal
71
+ concurrent-ruby (~> 1.0, >= 1.3.1)
72
+ connection_pool (>= 2.2.5)
73
+ drb
74
+ i18n (>= 1.6, < 2)
75
+ logger (>= 1.4.2)
76
+ minitest (>= 5.1)
77
+ securerandom (>= 0.3)
78
+ tzinfo (~> 2.0, >= 2.0.5)
79
+ uri (>= 0.13.1)
80
+ ast (2.4.3)
81
+ base64 (0.3.0)
82
+ bcrypt_pbkdf (1.1.2)
83
+ benchmark (0.5.0)
84
+ bigdecimal (4.0.1)
85
+ bindex (0.8.1)
86
+ brakeman (7.1.2)
87
+ racc
88
+ builder (3.3.0)
89
+ concurrent-ruby (1.3.6)
90
+ connection_pool (3.0.2)
91
+ crass (1.0.6)
92
+ date (3.5.1)
93
+ debug (1.11.1)
94
+ irb (~> 1.10)
95
+ reline (>= 0.3.8)
96
+ dotenv (3.2.0)
97
+ drb (2.2.3)
98
+ ed25519 (1.4.0)
99
+ erb (6.0.1)
100
+ erubi (1.13.1)
101
+ et-orbi (1.4.0)
102
+ tzinfo
103
+ fugit (1.12.1)
104
+ et-orbi (~> 1.4)
105
+ raabro (~> 1.4)
106
+ globalid (1.3.0)
107
+ activesupport (>= 6.1)
108
+ i18n (1.14.8)
109
+ concurrent-ruby (~> 1.0)
110
+ io-console (0.8.2)
111
+ irb (1.16.0)
112
+ pp (>= 0.6.0)
113
+ rdoc (>= 4.0.0)
114
+ reline (>= 0.4.2)
115
+ json (2.18.0)
116
+ kamal (2.10.1)
117
+ activesupport (>= 7.0)
118
+ base64 (~> 0.2)
119
+ bcrypt_pbkdf (~> 1.0)
120
+ concurrent-ruby (~> 1.2)
121
+ dotenv (~> 3.1)
122
+ ed25519 (~> 1.4)
123
+ net-ssh (~> 7.3)
124
+ sshkit (>= 1.23.0, < 2.0)
125
+ thor (~> 1.3)
126
+ zeitwerk (>= 2.6.18, < 3.0)
127
+ language_server-protocol (3.17.0.5)
128
+ lint_roller (1.1.0)
129
+ logger (1.7.0)
130
+ loofah (2.25.0)
131
+ crass (~> 1.0.2)
132
+ nokogiri (>= 1.12.0)
133
+ mail (2.9.0)
134
+ logger
135
+ mini_mime (>= 0.1.1)
136
+ net-imap
137
+ net-pop
138
+ net-smtp
139
+ marcel (1.1.0)
140
+ mini_mime (1.1.5)
141
+ minitest (6.0.1)
142
+ prism (~> 1.5)
143
+ net-imap (0.6.2)
144
+ date
145
+ net-protocol
146
+ net-pop (0.1.2)
147
+ net-protocol
148
+ net-protocol (0.2.2)
149
+ timeout
150
+ net-scp (4.1.0)
151
+ net-ssh (>= 2.6.5, < 8.0.0)
152
+ net-sftp (4.0.0)
153
+ net-ssh (>= 5.0.0, < 8.0.0)
154
+ net-smtp (0.5.1)
155
+ net-protocol
156
+ net-ssh (7.3.0)
157
+ nio4r (2.7.5)
158
+ nokogiri (1.19.0-aarch64-linux-gnu)
159
+ racc (~> 1.4)
160
+ nokogiri (1.19.0-aarch64-linux-musl)
161
+ racc (~> 1.4)
162
+ nokogiri (1.19.0-arm-linux-gnu)
163
+ racc (~> 1.4)
164
+ nokogiri (1.19.0-arm-linux-musl)
165
+ racc (~> 1.4)
166
+ nokogiri (1.19.0-arm64-darwin)
167
+ racc (~> 1.4)
168
+ nokogiri (1.19.0-x86_64-linux-gnu)
169
+ racc (~> 1.4)
170
+ nokogiri (1.19.0-x86_64-linux-musl)
171
+ racc (~> 1.4)
172
+ ostruct (0.6.3)
173
+ parallel (1.27.0)
174
+ parser (3.3.10.1)
175
+ ast (~> 2.4.1)
176
+ racc
177
+ pp (0.6.3)
178
+ prettyprint
179
+ prettyprint (0.2.0)
180
+ prism (1.9.0)
181
+ propshaft (1.3.1)
182
+ actionpack (>= 7.0.0)
183
+ activesupport (>= 7.0.0)
184
+ rack
185
+ psych (5.3.1)
186
+ date
187
+ stringio
188
+ puma (7.2.0)
189
+ nio4r (~> 2.0)
190
+ raabro (1.4.0)
191
+ racc (1.8.1)
192
+ rack (3.2.4)
193
+ rack-session (2.1.1)
194
+ base64 (>= 0.1.0)
195
+ rack (>= 3.0.0)
196
+ rack-test (2.2.0)
197
+ rack (>= 1.3)
198
+ rackup (2.3.1)
199
+ rack (>= 3)
200
+ rails (8.0.4)
201
+ actioncable (= 8.0.4)
202
+ actionmailbox (= 8.0.4)
203
+ actionmailer (= 8.0.4)
204
+ actionpack (= 8.0.4)
205
+ actiontext (= 8.0.4)
206
+ actionview (= 8.0.4)
207
+ activejob (= 8.0.4)
208
+ activemodel (= 8.0.4)
209
+ activerecord (= 8.0.4)
210
+ activestorage (= 8.0.4)
211
+ activesupport (= 8.0.4)
212
+ bundler (>= 1.15.0)
213
+ railties (= 8.0.4)
214
+ rails-dom-testing (2.3.0)
215
+ activesupport (>= 5.0.0)
216
+ minitest
217
+ nokogiri (>= 1.6)
218
+ rails-html-sanitizer (1.6.2)
219
+ loofah (~> 2.21)
220
+ 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)
221
+ railties (8.0.4)
222
+ actionpack (= 8.0.4)
223
+ activesupport (= 8.0.4)
224
+ irb (~> 1.13)
225
+ rackup (>= 1.0.0)
226
+ rake (>= 12.2)
227
+ thor (~> 1.0, >= 1.2.2)
228
+ tsort (>= 0.2)
229
+ zeitwerk (~> 2.6)
230
+ rainbow (3.1.1)
231
+ rake (13.3.1)
232
+ rdoc (7.1.0)
233
+ erb
234
+ psych (>= 4.0.0)
235
+ tsort
236
+ regexp_parser (2.11.3)
237
+ reline (0.6.3)
238
+ io-console (~> 0.5)
239
+ rubocop (1.84.0)
240
+ json (~> 2.3)
241
+ language_server-protocol (~> 3.17.0.2)
242
+ lint_roller (~> 1.1.0)
243
+ parallel (~> 1.10)
244
+ parser (>= 3.3.0.2)
245
+ rainbow (>= 2.2.2, < 4.0)
246
+ regexp_parser (>= 2.9.3, < 3.0)
247
+ rubocop-ast (>= 1.49.0, < 2.0)
248
+ ruby-progressbar (~> 1.7)
249
+ unicode-display_width (>= 2.4.0, < 4.0)
250
+ rubocop-ast (1.49.0)
251
+ parser (>= 3.3.7.2)
252
+ prism (~> 1.7)
253
+ rubocop-performance (1.26.1)
254
+ lint_roller (~> 1.1)
255
+ rubocop (>= 1.75.0, < 2.0)
256
+ rubocop-ast (>= 1.47.1, < 2.0)
257
+ rubocop-rails (2.34.3)
258
+ activesupport (>= 4.2.0)
259
+ lint_roller (~> 1.1)
260
+ rack (>= 1.1)
261
+ rubocop (>= 1.75.0, < 2.0)
262
+ rubocop-ast (>= 1.44.0, < 2.0)
263
+ rubocop-rails-omakase (1.1.0)
264
+ rubocop (>= 1.72)
265
+ rubocop-performance (>= 1.24)
266
+ rubocop-rails (>= 2.30)
267
+ ruby-progressbar (1.13.0)
268
+ securerandom (0.4.1)
269
+ solid_cache (1.0.10)
270
+ activejob (>= 7.2)
271
+ activerecord (>= 7.2)
272
+ railties (>= 7.2)
273
+ solid_queue (1.3.1)
274
+ activejob (>= 7.1)
275
+ activerecord (>= 7.1)
276
+ concurrent-ruby (>= 1.3.1)
277
+ fugit (~> 1.11)
278
+ railties (>= 7.1)
279
+ thor (>= 1.3.1)
280
+ sqlite3 (2.9.0-aarch64-linux-gnu)
281
+ sqlite3 (2.9.0-aarch64-linux-musl)
282
+ sqlite3 (2.9.0-arm-linux-gnu)
283
+ sqlite3 (2.9.0-arm-linux-musl)
284
+ sqlite3 (2.9.0-arm64-darwin)
285
+ sqlite3 (2.9.0-x86_64-linux-gnu)
286
+ sqlite3 (2.9.0-x86_64-linux-musl)
287
+ sshkit (1.25.0)
288
+ base64
289
+ logger
290
+ net-scp (>= 1.1.2)
291
+ net-sftp (>= 2.1.2)
292
+ net-ssh (>= 2.8.0)
293
+ ostruct
294
+ stringio (3.2.0)
295
+ thor (1.5.0)
296
+ thruster (0.1.17)
297
+ thruster (0.1.17-aarch64-linux)
298
+ thruster (0.1.17-arm64-darwin)
299
+ thruster (0.1.17-x86_64-linux)
300
+ timeout (0.6.0)
301
+ tsort (0.2.0)
302
+ tzinfo (2.0.6)
303
+ concurrent-ruby (~> 1.0)
304
+ unicode-display_width (3.2.0)
305
+ unicode-emoji (~> 4.1)
306
+ unicode-emoji (4.2.0)
307
+ uri (1.1.1)
308
+ useragent (0.16.11)
309
+ web-console (4.2.1)
310
+ actionview (>= 6.0.0)
311
+ activemodel (>= 6.0.0)
312
+ bindex (>= 0.4.0)
313
+ railties (>= 6.0.0)
314
+ websocket-driver (0.8.0)
315
+ base64
316
+ websocket-extensions (>= 0.1.0)
317
+ websocket-extensions (0.1.5)
318
+ zeitwerk (2.7.4)
319
+
320
+ PLATFORMS
321
+ aarch64-linux
322
+ aarch64-linux-gnu
323
+ aarch64-linux-musl
324
+ arm-linux-gnu
325
+ arm-linux-musl
326
+ arm64-darwin-24
327
+ x86_64-linux
328
+ x86_64-linux-gnu
329
+ x86_64-linux-musl
330
+
331
+ DEPENDENCIES
332
+ brakeman
333
+ debug
334
+ kamal
335
+ propshaft
336
+ puma (>= 5.0)
337
+ railpack!
338
+ rails (~> 8.0.4)
339
+ rubocop-rails-omakase
340
+ solid_cache
341
+ solid_queue
342
+ sqlite3 (>= 2.1)
343
+ thruster
344
+ tzinfo-data
345
+ web-console
346
+
347
+ BUNDLED WITH
348
+ 2.6.5
@@ -0,0 +1,24 @@
1
+ # README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative "config/application"
5
+
6
+ Rails.application.load_tasks
File without changes