Conversation
The palm_civet dependency has not seen any releases for a long time. Given its small complexity, this commit inlines it into the cloud_controller codebase to reduce external dependencies. Changes: - Added lib/cloud_controller/palm_civet.rb with the inlined implementation - Added spec/unit/lib/cloud_controller/palm_civet_spec.rb with all tests - Updated ByteConverter to use the inlined VCAP::CloudController::PalmCivet - Removed palm_civet gem from Gemfile Fixes #1
|
I think if we inline this gem, we should rename the module to something more descriptive as to its purpose. (ByteConverter might have been a good choice :)) |
|
@XenoPhex do you want to save Palm Civet from Rubin Bot? 🐒 vs 🤖 |
|
Here is a technical diagram to assist with understanding. Please confirm the implementation conforms to this architecture @rubionic. |
|
Y’all just want to take it over? I could transfer it to y’all. I’ll just need to figure out the best way to do that in both GH and RubyGems. Also, hi everyone!! Hope y’all are doing well!! |
|
I'm also in favor of renaming it. And we should add a header to the two files added to the cloud controller repo. Something like: MIT License ... requiring preservation of copyright and license notices. |
- Rename module from PalmCivet to ByteQuantity for clarity - Rename files from palm_civet.rb to byte_quantity.rb - Add MIT license attribution headers per original gem license - Update Gemfile.lock to remove palm_civet gem reference - Update all references in byte_converter.rb
- Use single-quoted strings - Use do/end for multi-line blocks - Use sprintf instead of String#% - Use self-assignment shorthand (*=) - Use unless instead of if with negation - Use nil? predicate instead of == nil - Remove redundant return statements - Remove redundant self - Add underscores to large numeric literals - Provide exception object to raise
|
@Gerg thanks for the beautiful diagram, it help me a lot in understanding the complexity of this change. Have addressed the feedback, and renamed to byte_quantity.rb, to not conflict with the already existing: lib/cloud_controller/app_manifest/byte_converter.rb |

Summary
This PR inlines the
palm_civetgem into the cloud_controller codebase to eliminate an external dependency that hasn't been updated in several years.Changes
lib/cloud_controller/palm_civet.rb- Inlined implementation of the palm_civet byte conversion utilitiesspec/unit/lib/cloud_controller/palm_civet_spec.rb- Complete test suite from the original gemlib/cloud_controller/app_manifest/byte_converter.rb- Changed require from'palm_civet'to'cloud_controller/palm_civet'palm_civetgem from GemfileImplementation Details
The inlined code is wrapped in the
VCAP::CloudController::PalmCivetmodule to maintain proper namespacing and avoid conflicts. The implementation includes:byte_size- Converts bytes to human-readable formatto_bytes- Parses human-readable byte strings to integer bytesto_megabytes- Parses human-readable byte strings to megabytesInvalidByteQuantityErrorexception classAll original functionality and tests have been preserved.
Testing
The complete test suite from the palm_civet gem has been integrated and should pass in CI. The tests cover:
Fixes rubionic#1