railpack 1.2.10 → 1.2.12

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: 16590dc37c1779b9c150d8f208a86dae47fa057a37150aed5690a626bc58cab8
4
- data.tar.gz: aaf0c898f14e2a492d918a8f47033b2d84cfbef24e65594c54b04acfab5936aa
3
+ metadata.gz: 21ff002773c07ac74af2a193632392fd1530c3ff81c1fcc4e98fc6aee54c685a
4
+ data.tar.gz: a1e8080cb6ad3b1e0ec5918212c0f412cb44e8a2d510848b5e400e11e35e3d8a
5
5
  SHA512:
6
- metadata.gz: dfe9c74e9e081e39b9fd508073d76e03eb5041cc895d6510d91020eaf8656cb5c65294f3b75a20f7bdcffabc319deac73a03b5dfda213849028625ccac175384
7
- data.tar.gz: e91438c7d2d2d63d6dd85aaf614ce6653cf024b68c9fc7841045b8ea79da31bd664cd29708e55b87028338570ac1bfa35d4a4c7e2e96a832ed0cf1d703a58719
6
+ metadata.gz: 3b1167de6777d81b2ba4d1818ad323eba5310fc32e0cf592f777db16a9d276c75451a6c2e372570e2d367e8fabb91055efe68e356d68932f6074c72ef535e47d
7
+ data.tar.gz: 07f6a5a9438f11a53cf552c4bdc302a9be6a83938d595d416a3051ec4c2398ca2569ad9c9882413acfb1aa165581a7c872a4cdb90a5c57fc523079732fc1750f
@@ -4,10 +4,17 @@ module Railpack
4
4
  class Config
5
5
  class Error < StandardError; end
6
6
 
7
+ # Known config keys that get explicit accessors
8
+ CONFIG_KEYS = %w[
9
+ target format minify sourcemap splitting
10
+ entrypoint entrypoints outdir platform mode analyze_bundle
11
+ ].freeze
12
+
7
13
  attr_reader :config
8
14
 
9
15
  def initialize
10
16
  @config = load_config
17
+ @merged_cache = {}
11
18
  end
12
19
 
13
20
  def current_env
@@ -18,13 +25,25 @@ module Railpack
18
25
  end
19
26
  end
20
27
 
28
+ # Explicit accessors for known config keys
29
+ CONFIG_KEYS.each do |key|
30
+ define_method(key) do |env = current_env|
31
+ for_environment(env)[key]
32
+ end
33
+ end
34
+
21
35
  def for_environment(env = current_env)
22
- base_config = @config["default"] || {}
23
- bundler_config = bundler_config(env)
24
- env_config = @config[env.to_s] || {}
36
+ @merged_cache[env.to_s] ||= begin
37
+ base_config = @config["default"] || {}
38
+ bundler_config = bundler_config(env)
39
+ env_config = @config[env.to_s] || {}
40
+
41
+ # Merge: default <- bundler <- environment
42
+ merged = deep_merge(deep_merge(base_config, bundler_config), env_config)
25
43
 
26
- # Merge: default <- bundler <- environment
27
- deep_merge(deep_merge(base_config, bundler_config), env_config)
44
+ # Deep freeze for immutability
45
+ deep_freeze(merged)
46
+ end
28
47
  end
29
48
 
30
49
  def bundler(env = current_env)
@@ -42,12 +61,10 @@ module Railpack
42
61
  def method_missing(method, *args)
43
62
  config_key = method.to_s
44
63
  if method.end_with?('=')
45
- # Setter - allow initializer to override config
46
- key = config_key.chomp('=')
47
- @config[current_env.to_s] ||= {}
48
- @config[current_env.to_s][key] = args.first
64
+ # Setter - no longer allowed, config is immutable
65
+ raise Error, "Config is immutable. Set values in config/railpack.yml"
49
66
  else
50
- # Getter - read from merged config
67
+ # Getter - read from merged config (backward compatibility)
51
68
  env = args.first || current_env
52
69
  return for_environment(env)[config_key] if for_environment(env).key?(config_key)
53
70
  super
@@ -105,7 +122,7 @@ module Railpack
105
122
 
106
123
  def load_config
107
124
  if config_path.exist?
108
- YAML.safe_load(File.read(config_path), aliases: true)
125
+ YAML.safe_load(File.read(config_path), permitted_classes: [], aliases: false)
109
126
  else
110
127
  default_config
111
128
  end
@@ -161,5 +178,16 @@ module Railpack
161
178
  end
162
179
  end
163
180
  end
181
+
182
+ def deep_freeze(object)
183
+ case object
184
+ when Hash
185
+ object.each_value { |v| deep_freeze(v) }.freeze
186
+ when Array
187
+ object.each { |v| deep_freeze(v) }.freeze
188
+ else
189
+ object.freeze
190
+ end
191
+ end
164
192
  end
165
193
  end
@@ -1,3 +1,3 @@
1
1
  module Railpack
2
- VERSION = "1.2.10"
2
+ VERSION = "1.2.12"
3
3
  end
data/test/config_test.rb CHANGED
@@ -174,6 +174,5 @@ class ConfigTest < Minitest::Test
174
174
  end
175
175
 
176
176
  rails_module.define_singleton_method(:root) { Pathname.new(path) }
177
- rails_module.define_singleton_method(:env) { 'development' }
178
177
  end
179
178
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.10
4
+ version: 1.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - 21tycoons LLC
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-01-26 00:00:00.000000000 Z
10
+ date: 2026-01-27 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: minitest
@@ -47,7 +47,6 @@ files:
47
47
  - lib/railpack/manager.rb
48
48
  - lib/railpack/version.rb
49
49
  - lib/tasks/railpack.rake
50
- - sig/railpack.rbs
51
50
  - test/bundler_test.rb
52
51
  - test/config_test.rb
53
52
  - test/manager_test.rb
data/sig/railpack.rbs DELETED
@@ -1,4 +0,0 @@
1
- module Railpack
2
- VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
- end