{"id":17942629,"url":"https://github.com/petercamilleri/fully_freeze","last_synced_at":"2025-08-17T01:34:13.571Z","repository":{"id":56847837,"uuid":"166851995","full_name":"PeterCamilleri/fully_freeze","owner":"PeterCamilleri","description":"A deep, recursive freeze and freeze tester in pure Ruby.","archived":false,"fork":false,"pushed_at":"2021-05-19T19:15:36.000Z","size":17,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-17T01:34:13.002Z","etag":null,"topics":["deep","freeze","immutability","ruby","rubygem"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PeterCamilleri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-21T17:18:29.000Z","updated_at":"2023-03-05T04:20:47.000Z","dependencies_parsed_at":"2022-09-12T11:50:37.502Z","dependency_job_id":null,"html_url":"https://github.com/PeterCamilleri/fully_freeze","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/PeterCamilleri/fully_freeze","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PeterCamilleri%2Ffully_freeze","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PeterCamilleri%2Ffully_freeze/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PeterCamilleri%2Ffully_freeze/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PeterCamilleri%2Ffully_freeze/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PeterCamilleri","download_url":"https://codeload.github.com/PeterCamilleri/fully_freeze/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PeterCamilleri%2Ffully_freeze/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270796216,"owners_count":24647319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep","freeze","immutability","ruby","rubygem"],"created_at":"2024-10-29T03:06:31.965Z","updated_at":"2025-08-17T01:34:13.548Z","avatar_url":"https://github.com/PeterCamilleri.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FullyFreeze\n\nThis gem is created in recognition of two hot topics in Ruby programming.\n\nNamely:\n\n* Multi-threaded programming with guilds.\n* Functional programming.\n\nWhile these topics are outside the scope of this gem, both are facilitated by\nthe concept of treating data as immutable, pure values.\n\nWhile many data types in Ruby are immutable, many are not. Further, while the\nfreeze method is provided to make data immutable, and the frozen? method can be\nused to determine if data is immutable, neither of these methods digs down into\nthe interior of the object to make those data immutable as well.\n\nThe fully_freeze gem does not take such half measures. Instead it digs deep\ninto the objects and gets the job done!\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'fully_freeze'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install fully_freeze\n\n## Usage\n\n    require 'fully_freeze'\n\nThen when a deep freeze is needed use:\n\n    foo = my_object.fully_freeze\n\nand to determine if that data is really immutable, use:\n\n    if my_object.fully_frozen?\n      # etc etc etc...\n    end\n\nAnd that is all there is too it!\n\n*Note:* While this gem does employ monkey-patching, no existing methods are\nmodified, so the risk level is low.\n\n## Contributing\n\n1. Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new Pull Request\n\nOR...\n\n* Make a suggestion by raising an\n [issue](https://github.com/PeterCamilleri/fully_freeze/issues)\n. All ideas and comments are welcome.\n\n## License\n\nThe gem is available as open source under the terms of the\n[MIT License](./LICENSE.txt).\n\n## Code of Conduct\n\nEveryone interacting in the fully_freeze project’s codebases, issue trackers,\nchat rooms and mailing lists is expected to follow the\n[code of conduct](./CODE_OF_CONDUCT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpetercamilleri%2Ffully_freeze","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpetercamilleri%2Ffully_freeze","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpetercamilleri%2Ffully_freeze/lists"}