{"id":21108699,"url":"https://github.com/mu29/dessert","last_synced_at":"2026-04-17T08:31:05.363Z","repository":{"id":88612945,"uuid":"174825952","full_name":"mu29/dessert","owner":"mu29","description":"A lightweight recommendation engine for Ruby apps using Redis","archived":false,"fork":false,"pushed_at":"2019-03-28T06:03:04.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-07T12:32:22.559Z","etag":null,"topics":["recommendation","recommendation-engine","recommendation-system","recommender-system","redis","ruby"],"latest_commit_sha":null,"homepage":"","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/mu29.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2019-03-10T13:16:31.000Z","updated_at":"2019-03-29T00:10:02.000Z","dependencies_parsed_at":"2024-03-25T10:16:32.100Z","dependency_job_id":null,"html_url":"https://github.com/mu29/dessert","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mu29/dessert","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mu29%2Fdessert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mu29%2Fdessert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mu29%2Fdessert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mu29%2Fdessert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mu29","download_url":"https://codeload.github.com/mu29/dessert/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mu29%2Fdessert/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31921734,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"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":["recommendation","recommendation-engine","recommendation-system","recommender-system","redis","ruby"],"created_at":"2024-11-20T00:48:18.154Z","updated_at":"2026-04-17T08:31:05.357Z","avatar_url":"https://github.com/mu29.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dessert\n\nA lightweight recommendation engine for Ruby apps using Redis. Inspired by [DEVIEW presentation](https://www.slideshare.net/deview/261-52784785) and [recommendable](https://github.com/davidcelis/recommendable) gem.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'dessert'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install dessert\n    \n## Important Note\n\n* It is highly recommended to use background jobs like [Resque](https://github.com/defunkt/resque) or [Sidekiq](https://github.com/mperham/sidekiq) when calling `like` / `unlike` methods, because there is a bit of computation work.\n\n* Every _rater_ and _ratable items_ should have an `id` method.\n\n* Hidden items will not be recommended.\n\n## Usage\n\n1. Include `Dessert::Rater` on your `User` model.\n```ruby\nclass User\n  include Dessert::Rater\n\n  attr_accessor :id\n\n  def initialize(id)\n    @id = id\n  end\n\n  ...\nend\n```\n\n2. Define any class that can be rated.\n```ruby\nclass Movie\n  attr_accessor :id\n\n  def initialize(id)\n    @id = id\n  end\nend\n```\n\n3. Like, Unlike, Hide, Unhide items.\n```ruby\nuser = User.new(1)\nmovie = Movie.new(483)\n\nuser.like(movie)\nuser.unlike(movie)\n\nuser.hide(movie)\nuser.unhide(movie)\n```\n\n4. Now recommend to users!\n```ruby\n  user = User.new(1)\n  user.recommended_for(klass: Movie, offset: 0, limit: 10)\n```\n\n## Contributing\n\nBug reports and pull requests are welcome on [GitHub](https://github.com/mu29/dessert/issues).\n\n## Author\n\nInJung Chung / [@mu29](https://yeoubi.net)\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmu29%2Fdessert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmu29%2Fdessert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmu29%2Fdessert/lists"}