{"id":18725722,"url":"https://github.com/binaryage/sketchmate","last_synced_at":"2025-11-11T19:30:14.700Z","repository":{"id":182911548,"uuid":"669310870","full_name":"binaryage/sketchmate","owner":"binaryage","description":"REPL companion for your SketchUp","archived":false,"fork":false,"pushed_at":"2024-07-09T22:11:14.000Z","size":3232,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-28T13:18:50.503Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/binaryage.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","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":"2023-07-21T22:17:21.000Z","updated_at":"2024-07-09T22:11:18.000Z","dependencies_parsed_at":"2024-11-07T14:11:44.398Z","dependency_job_id":"df05a2ce-d4d7-4aad-bbab-a898193f4f3f","html_url":"https://github.com/binaryage/sketchmate","commit_stats":null,"previous_names":["binaryage/sketchmate"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryage%2Fsketchmate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryage%2Fsketchmate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryage%2Fsketchmate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryage%2Fsketchmate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/binaryage","download_url":"https://codeload.github.com/binaryage/sketchmate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239592977,"owners_count":19664855,"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-11-07T14:11:35.118Z","updated_at":"2025-11-11T19:30:14.670Z","avatar_url":"https://github.com/binaryage.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SketchMate - a REPL companion for your SketchUp\n\n\u003e Cast new coding spells to your SketchUp projects!\n\n## Overview\n\nSketchMate integrates SketchUp with RubyMine. The main goal is to provide plumbing for good REPL experience.\n\n![](screenshots/repl-completions.png)\n![](screenshots/context-help.png)\n\n## Installation\n\nI'm sorry this is currently only tested on macOS with SketchUp 2023 (Pro).\n\nWe don't use SketchUp's extension mechanism (yet). Instead a [launcher script](./launch-sketchup.sh) should be used\nto boot SketchUp with SketchMate.\n\nSketchMate consists of two projects:\n1) Backend code which is a server running inside SketchUp and listening for remote REPL commands.\n2) Frontend code which is a [Pry console](https://github.com/pry/pry) modified to send REPL commands to the backend for evaluation.\n\nPry is a Ruby library with additional dependencies. We download these dependencies using [bundler](https://bundler.io/). \nThey are stored locally under vendor directories. Assuming your system Ruby is in good shape, you can download deps the usual way:\n\n```bash\ncd projects/sketchmate-backend\nbundle install\n# this should populate projects/sketchmate-backend/vendor\n```\n\n```bash\ncd projects/sketchmate-frontend\nbundle install\n# this should populate projects/sketchmate-frontend/vendor\n```\n\n### Starting a modelling session\n\nUse the provided [launcher script](./launch-sketchup.sh) and pass absolute path to your model.\n\n```bash\n./launch-sketchup.sh /absolute/path/to/examples/01-hello/model.skp\n```\n\nFor convenience SketchMate will try to load file with the same name as the model as Ruby init script\n(in this case `/absolute/path/to/examples/01-hello/model.rb`).\n\n### RubyMine configuration\n\nRubyMine has nice build-in support for Ruby REPL and is Pry-aware. This is what allowed me to configure SketchMate REPL console:\n\n![](screenshots/rubymine-sketchmate-repl-config.png)\n\nNote the `Console script arguments` - this is how is our frontend code actually injected into Pry Console.\n\n### SketchMate configuration\n\nYou can configure some aspects of it via environmental variables prior to launching the launcher script\n\n```bash\nexport SKETCHMATE_VERBOSE=1\nexport SKETCHMATE_RDEBUG=\"ide port=7000\"\nexport SKETCHMATE_PORT=\"4433\"\n```\n\nSee the code for more.\n\n### Gotchas\n\n#### Ruby versions\n\nPlease note that latest SketchUp 2023 is currently bundling Ruby 2.7.7. Your system Ruby might be running 3.2.0 or newer.\nThis could potentially cause incompatibilities because backend does not run in exactly the same environment as the frontend.\nIt is possible to use rbenv or similar isolation techniques to downgrade Ruby to match SketchUp.\n\n#### RubyMine does not highlight `Tools -\u003e Load File/Selection into IRB/Rails Console`\n\nRubyMine has some assumptions about locations of your Ruby files. You must configure your project in way that scripts\nyou are using with your SketchUp model via REPL take part in RubyMine project - they must be part of project's content root.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryage%2Fsketchmate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbinaryage%2Fsketchmate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryage%2Fsketchmate/lists"}