{"id":22980988,"url":"https://github.com/rubyworks/no_backsies","last_synced_at":"2025-07-02T14:10:37.998Z","repository":{"id":1449673,"uuid":"1681724","full_name":"rubyworks/no_backsies","owner":"rubyworks","description":"Enhanced Ruby Callback System","archived":false,"fork":false,"pushed_at":"2012-05-27T20:15:11.000Z","size":554,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-06T07:41:30.488Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rubyworks.github.com/no_backsies","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rubyworks.png","metadata":{"files":{"readme":"README.rdoc","changelog":"HISTORY.rdoc","contributing":null,"funding":null,"license":"COPYING.rdoc","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-04-29T17:27:40.000Z","updated_at":"2017-05-22T01:47:40.000Z","dependencies_parsed_at":"2022-07-29T13:49:09.427Z","dependency_job_id":null,"html_url":"https://github.com/rubyworks/no_backsies","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/rubyworks/no_backsies","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyworks%2Fno_backsies","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyworks%2Fno_backsies/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyworks%2Fno_backsies/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyworks%2Fno_backsies/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rubyworks","download_url":"https://codeload.github.com/rubyworks/no_backsies/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyworks%2Fno_backsies/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263154352,"owners_count":23422011,"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","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":[],"created_at":"2024-12-15T01:46:30.930Z","updated_at":"2025-07-02T14:10:37.975Z","avatar_url":"https://github.com/rubyworks.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"= No Backsies\n\n{Homepage}[http://rubyworks.github.com/no_backsies] |\n{Development}[http://github.com/rubyworks/no_backsies] |\n{Mailing List}[http://groups.google.com/group/rubyworks-mailinglist] |\n{API Reference}[http://rubydoc.info/gems/no_backsies/frames] |\n{Demonstrandum}[http://rubyworks.github.com/no_backsies/qed.html]\n\n\n== DESCRIPTION\n\nNoBacksies is a callback layer built on top of Ruby's built-in callback\nmethods. It makes it possible to add new callbacks very easily, without\nhaving to fuss with more nuanced issues of defining and redefining callback\nmethods.\n\n\n== Compatability\n\nNoBacksies does not currently work with *Rubinius*. Anyone know why?\n\n\n== EXAMPLES\n\nHere is a very simple example of how NoBacksies works.\n\n  class Y\n    include NoBacksies::Callbacks\n\n    def self.list\n      @list ||= []\n    end\n\n    callback :method_added do |method|\n      list \u003c\u003c method\n    end\n\n    def foo; end\n    def bar; end\n  end\n\n  Y.list #=\u003e [:foo, :bar]\n\nHere is another example taken from the Anise[http://rubyworks.github.com/anise]\nproject.\n\n  class Y\n    include Anise\n    include NoBacksies\n\n    def self.doc(string)\n      callback :method_added, :once=\u003etrue do |method|\n        self.ann(method, :doc=\u003estring)\n      end\n    end\n\n    doc \"foo is cool\"\n    def foo\n      # ...\n    end\n  end\n\n  Y.ann(:foo, :doc) #=\u003e \"foo is cool\"\n\nSee the QED documentation for more examples.\n\n\n== INSTALLATION\n\nInstall the RubyGems package in the usual fashion.\n\n  $ gem install no_backsies\n\n\n== CONTRIBUTE\n\n=== Development\n\nSource code is hosted on GitHub[http://github.com/rubyworks/qed].\nIf you'd like to submit a patch please fork the repository and\nsubmit a pull request (ideally in a topic branch).\n\n=== Testing\n\nQED[http://rubyworks.github.com/qed] is used to testing.\n\n  $ gem install qed\n\nTo run the tests:\n\n  $ qed [path/to/test]\n\n=== Donations\n\nSoftware development is very time consuming. Rubyworks does a lot of FOSS \ndevelopment for el \u003ci\u003e$0\u003c/i\u003e. We do it for the love of programming and\nfor Ruby. Any dollars that do come our way help us continue\nthe effort. So anything you may offer will help these projects such as this\ncontinue to flourish. \n\nSee the {Rubyworks Homepage}[http://rubyworks.github.com]. \n\nThanks.\n\n\n== LEGAL\n\n(BSD 2 License)\n\nCopyright (c) 2011 Thomas Sawyer\n\nUnless otherwise negotiated with the original author, NoBacksies is\ndistributable under the terms of the BSD 2-clause license.\n\nSee the LICENSE.rdoc file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubyworks%2Fno_backsies","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frubyworks%2Fno_backsies","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubyworks%2Fno_backsies/lists"}