{"id":17693534,"url":"https://github.com/amboxer21/file","last_synced_at":"2026-04-29T18:32:35.833Z","repository":{"id":147837363,"uuid":"309476792","full_name":"amboxer21/File","owner":"amboxer21","description":"A ruby Gem written in the C programming language using Ruby's C programming API. I am writing this gem just for fun and learning purposes.","archived":false,"fork":false,"pushed_at":"2020-11-04T20:30:24.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T23:18:21.082Z","etag":null,"topics":["c-programming","extending-ruby","gem","ruby"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amboxer21.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-02T19:41:44.000Z","updated_at":"2020-11-04T20:30:27.000Z","dependencies_parsed_at":"2023-04-06T06:47:19.941Z","dependency_job_id":null,"html_url":"https://github.com/amboxer21/File","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/amboxer21/File","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amboxer21%2FFile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amboxer21%2FFile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amboxer21%2FFile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amboxer21%2FFile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amboxer21","download_url":"https://codeload.github.com/amboxer21/File/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amboxer21%2FFile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32439179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T18:12:22.909Z","status":"ssl_error","status_checked_at":"2026-04-29T18:11:33.322Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["c-programming","extending-ruby","gem","ruby"],"created_at":"2024-10-24T13:45:18.987Z","updated_at":"2026-04-29T18:32:35.817Z","avatar_url":"https://github.com/amboxer21.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# File Gem\nA ruby Gem written in the C programming language using Ruby's C programming API. I am writing this gem just for fun and learning purposes.\n\n[**METHODS**]\n* size\n* mtime\n* ctime\n* atime\n* empty\n\n[**BUILD**]\n\n\u003e Step 1\n```\nanthony@gentoo ~ $ ruby extconf.rb \ncreating Makefile\nanthony@gentoo ~ $\n```\n\n\u003e Step 2\n```\nanthony@gentoo ~ $ make\ncompiling file.c\nlinking shared-object file.so\nanthony@gentoo ~ $\n```\n\n\u003e Step 3\n\n**IMPORTANT!!** Running `sudo make install` will install this gem in your gem path. The name of this gem could cause naming conflicts. Using this gem locally is a much safer option!\n\n```\nanthony@gentoo ~ $ sudo make install\nPassword: \n/usr/bin/install -c -m 0755 file.so /usr/lib64/ruby/site_ruby/2.5.0/x86_64-linux\nanthony@gentoo ~ $\n```\n\n[**USAGE**]\n\n**Regular require**\n\n```\nanthony@gentoo ~ $ sudo irb\nirb(main):001:0\u003e require 'file'\n=\u003e true\nirb(main):002:0\u003e File.size('/var/log/messages')\n=\u003e 595805\nirb(main):003:0\u003e File.c_time('/var/log/messages')\n=\u003e \"Mon Nov  2 17:31:49 2020\\n\"\nirb(main):004:0\u003e File.m_time('/var/log/messages')\n=\u003e \"Mon Nov  2 17:31:49 2020\\n\"\nirb(main):005:0\u003e File.a_time('/var/log/messages')\n=\u003e \"Sat Oct 17 16:21:35 2020\\n\"\nirb(main):006:0\u003e File.empty('/var/log/messages')\n=\u003e false\nirb(main):007:0\u003e exit\nanthony@gentoo ~ $\n```\n\n**Local require**\n\n\u003e Assuming the shared object(.so file) is in the same directory that you're running your script from or using irb from. \n```\nanthony@gentoo ~ $ sudo irb\nirb(main):001:0\u003e require('./file')\n=\u003e true\nirb(main):002:0\u003e File.size('/var/log/messages')\n=\u003e 595805\nirb(main):003:0\u003e File.c_time('/var/log/messages')\n=\u003e \"Mon Nov  2 17:31:49 2020\\n\"\nirb(main):004:0\u003e File.m_time('/var/log/messages')\n=\u003e \"Mon Nov  2 17:31:49 2020\\n\"\nirb(main):005:0\u003e File.a_time('/var/log/messages')\n=\u003e \"Sat Oct 17 16:21:35 2020\\n\"\nirb(main):006:0\u003e File.empty('/var/log/messages')\n=\u003e false\nirb(main):007:0\u003e exit\nanthony@gentoo ~ $\n```\n\n[**BENCHMARKS**]\n\n**My file gem**\n\n```\nanthony@gentoo ~ $ time sudo ruby -e \"require 'file'; puts File.size('/var/log/messages')\"\n612369\n\nreal\t0m0.066s\nuser\t0m0.058s\nsys\t0m0.008s\nanthony@gentoo ~ $ time sudo ./filesize \n612696\n\nreal\t0m0.006s\nuser\t0m0.003s\nsys\t0m0.003s\nanthony@gentoo ~ $ time ls -al /var/log/messages | awk '{print $5}'\n612788\n\nreal\t0m0.003s\nuser\t0m0.002s\nsys\t0m0.003s\nanthony@gentoo ~ $ \n``` \n\n**Ruby's built in library**\n\n```\nanthony@localhost ~ $ time sudo ruby -e \"puts File.read('/var/log/messages').size;\"\n611951\n\nreal\t0m0.069s\nuser\t0m0.062s\nsys\t0m0.007s\nanthony@localhost ~ $\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famboxer21%2Ffile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famboxer21%2Ffile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famboxer21%2Ffile/lists"}