railpack 1.2.17 → 1.3.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 +4 -4
- data/CHANGELOG.md +39 -0
- data/lib/railpack/manager.rb +5 -2
- data/lib/railpack/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5b714e261e3a676ca82d2ea8b33bb47cdf23de847ab367c50edd500883ce1d5a
|
|
4
|
+
data.tar.gz: c12f5f2c37108aba8bc3f565ce80a3441895b2eada01a127f33129f15ec28f4f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 364d8756b8fe2139b37fecc94196e44f56e05a238bedfca6618d8485ceb1f0e1bed9bf5ae08dc0f424055f431146a68d2406b34e65ba84e1f88a671507cd6841
|
|
7
|
+
data.tar.gz: bd7b094432e4a15707f1878a1c5045187892247ae38a1f41cbf42823a4681b2ff217d220e02fff73528213fcf15d1973f5b3aebfddf6f13d721639be45aa1098
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.3.0] - 2026-01-26
|
|
4
|
+
|
|
5
|
+
### 🚀 **Major Architecture Refactoring**
|
|
6
|
+
|
|
7
|
+
This release includes comprehensive refactoring of Railpack's two core classes, representing a significant architectural improvement while maintaining full backward compatibility.
|
|
8
|
+
|
|
9
|
+
#### ✨ **Config Class Overhaul (Railpack::Config)**
|
|
10
|
+
- **Security Hardening**: Implemented YAML safe loading with `permitted_classes: [], aliases: false`
|
|
11
|
+
- **Deep Immutability**: All configurations are now deep-frozen to prevent runtime mutations
|
|
12
|
+
- **Production Validation**: Critical settings validation in production environment
|
|
13
|
+
- **Developer Experience**: Explicit accessor methods, comprehensive documentation, deprecation warnings
|
|
14
|
+
- **Performance**: Cached configurations per environment, thread-safe access
|
|
15
|
+
|
|
16
|
+
#### 🏗️ **Manager Class Refactoring (Railpack::Manager)**
|
|
17
|
+
- **Manifest Extraction**: Created dedicated `Railpack::Manifest::Propshaft` and `::Sprockets` classes
|
|
18
|
+
- **Improved Pipeline Detection**: Direct `Rails.application.config.assets` class inspection
|
|
19
|
+
- **Enhanced Bundle Analysis**: Optional gzip size reporting for realistic metrics
|
|
20
|
+
- **Better Error Context**: Rich manifest generation error messages with pipeline type and asset counts
|
|
21
|
+
- **Pre-build Validation**: Output directory existence warnings before build starts
|
|
22
|
+
|
|
23
|
+
#### 📊 **Architecture Improvements**
|
|
24
|
+
- **Separation of Concerns**: Manifest generation isolated from orchestration logic
|
|
25
|
+
- **Testability**: Core logic now independently testable with 75 tests passing
|
|
26
|
+
- **Maintainability**: Smaller, focused classes with single responsibilities
|
|
27
|
+
- **Extensibility**: Easy to add new asset pipelines and manifest formats
|
|
28
|
+
- **Documentation**: Comprehensive class and method documentation throughout
|
|
29
|
+
|
|
30
|
+
#### 🔧 **Technical Enhancements**
|
|
31
|
+
- **Bundle Size Reporting**: Human-readable units (B, KB, MB, GB) with optional gzip analysis
|
|
32
|
+
- **Error Handling**: Enhanced error logging with contextual information
|
|
33
|
+
- **Hook System**: Improved build lifecycle hooks with detailed payload documentation
|
|
34
|
+
- **Validation**: Pre-build checks and comprehensive input validation
|
|
35
|
+
|
|
36
|
+
#### 📚 **Migration Notes**
|
|
37
|
+
- All changes are backward compatible - no breaking changes
|
|
38
|
+
- Existing configurations and APIs continue to work unchanged
|
|
39
|
+
- New features are opt-in (like gzip analysis via `analyze_bundle: true`)
|
|
40
|
+
- Enhanced error messages provide better debugging information
|
|
41
|
+
|
|
3
42
|
## [1.2.17] - 2026-01-26
|
|
4
43
|
|
|
5
44
|
### ✨ **Manager Class Final Polish - Production Perfection**
|
data/lib/railpack/manager.rb
CHANGED
|
@@ -56,6 +56,8 @@ module Railpack
|
|
|
56
56
|
# Calculate bundle size if output directory exists
|
|
57
57
|
bundle_size = calculate_bundle_size(config)
|
|
58
58
|
|
|
59
|
+
# Build result hash passed to build_complete hooks
|
|
60
|
+
# Contains: success status, config used, build duration, and bundle size
|
|
59
61
|
success_result = {
|
|
60
62
|
success: true,
|
|
61
63
|
config: config,
|
|
@@ -68,12 +70,15 @@ module Railpack
|
|
|
68
70
|
# Generate asset manifest for Rails
|
|
69
71
|
generate_asset_manifest(config)
|
|
70
72
|
|
|
73
|
+
# Trigger build_complete hooks with success result
|
|
71
74
|
Railpack.trigger_build_complete(success_result)
|
|
72
75
|
result
|
|
73
76
|
rescue => error
|
|
74
77
|
duration = ((Time.now - start_time) * 1000).round(2)
|
|
75
78
|
Railpack.logger.error "❌ Build failed after #{duration}ms: #{error.message}"
|
|
76
79
|
|
|
80
|
+
# Error result hash passed to build_complete hooks
|
|
81
|
+
# Contains: failure status, error object, config used, and build duration
|
|
77
82
|
error_result = {
|
|
78
83
|
success: false,
|
|
79
84
|
error: error,
|
|
@@ -206,8 +211,6 @@ module Railpack
|
|
|
206
211
|
end
|
|
207
212
|
end
|
|
208
213
|
|
|
209
|
-
private
|
|
210
|
-
|
|
211
214
|
def detect_asset_pipeline
|
|
212
215
|
# Check Rails.application.config.assets class directly (more reliable)
|
|
213
216
|
if defined?(Rails) && Rails.respond_to?(:application) && Rails.application
|
data/lib/railpack/version.rb
CHANGED