{"id":19721233,"url":"https://github.com/vishnugopal/replr","last_synced_at":"2026-05-09T20:52:50.957Z","repository":{"id":56891816,"uuid":"145868235","full_name":"vishnugopal/replr","owner":"vishnugopal","description":"A single line REPL for your favorite languages \u0026 libraries. Built on Docker.","archived":false,"fork":false,"pushed_at":"2020-02-29T21:36:38.000Z","size":47,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-23T14:53:58.089Z","etag":null,"topics":["docker","repl","ruby"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/vishnugopal.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}},"created_at":"2018-08-23T14:52:30.000Z","updated_at":"2020-02-29T21:36:34.000Z","dependencies_parsed_at":"2022-08-21T00:20:59.506Z","dependency_job_id":null,"html_url":"https://github.com/vishnugopal/replr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishnugopal%2Freplr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishnugopal%2Freplr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishnugopal%2Freplr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishnugopal%2Freplr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vishnugopal","download_url":"https://codeload.github.com/vishnugopal/replr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241044101,"owners_count":19899477,"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":["docker","repl","ruby"],"created_at":"2024-11-11T23:13:45.745Z","updated_at":"2026-05-09T20:52:45.937Z","avatar_url":"https://github.com/vishnugopal.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Replr\n\nA single line REPL for your favorite languages \u0026 libraries. Built on Docker.\n\nThis is currently usable \u0026 stable, and supports the `ruby`, `python` and `node` stacks.\n\nSee [TODO](TODO.md) for future work.\n\n## Quickstart\n\n```\nreplr \u003cstack\u003e \u003clibraries...\u003e\n```\n\nSo for a simple `ruby` REPL, including the `chronic` gem, it would be:\n\n```\nreplr ruby chronic\n```\n\nOr for a `python` REPL, including the flask and requests packages, it would be:\n\n```\nreplr python flask requests\n```\n\nYou can also specify versions of stacks \u0026 libraries to install:\n\n```\nreplr ruby:2.3.1 chronic:0.10.1 activesupport:5.1.0\n```\n\nThat's it! It's very simple. Replr currently supports three stacks: `ruby`, `python` and `node`.\n\n## Install\n\nreplr is built on Ruby and requires Ruby 2.5+ installed.\n\n```\ngem install replr\n```\n\nThat's it! `replr` should now be available in your `$PATH`.\n\n## More Commands\n\n```\nreplr prune\n```\n\nwill delete all docker images associated with replr. This saves space!\n\n## Contributing \u0026 Development\n\nreplr is built on Ruby and requires a Ruby 2.5+ installed to develop. It's pretty easy to get started and add a stack, please see [node's implementation](lib/replr/stack/node/repl_maker.rb) for a quick-start. There's also a companion integration spec that tests expected behavior in [node's test suite](spec/replr/stack/node/repl_maker_spec.rb) that you should emulate and implement for every stack you make.\n\nMost of the \"scaffolding\" around creating the REPL \u0026 dealing with docker's implementation details have been abstracted away if you use the `Replr::Stack::REPLMaker` class, so you only need to implement stack-specific functionality. This includes:\n\n- creating a `Dockerfile.template`([example](lib/replr/stack/node/Dockerfile.template)) (with `%%VERSION%%` tags) for the stack.\n- creating a library file ([example](lib/replr/stack/node/repl_maker.rb#L32)) from mentioned gems and versions.\n- \u0026 setting appropriate `set_filter_lines_for_install` ([example](lib/replr/stack/node/repl_maker.rb#L27)) to mask away unnecessary output during installation.\n\nNote: if you want to run the specs (built with `minitest/spec`), please do:\n\n```\nbundle exec rake test\n```\n\n## Details\n\nreplr uses docker to manage different stacks and installed libraries. It creates docker images that are tagged `replr-\u003cstack\u003e-\u003clibraries...\u003e` for each stack and library combo you initiate.\n\nThe first time you start a new stack \u0026 library combo, docker will take some time to spin up instances. Future executions of the same stack should be near-instant.\n\nThis is how a full output from a replr install will look like the first time you try out a new stack \u0026 library combo:\n\n```\n❯ replr ruby chronic\n(1/25) Upgrading musl (1.1.14-r14 -\u003e 1.1.14-r16)\n(2/25) Installing gmp (6.1.0-r0)\n(3/25) Installing libgcc (5.3.0-r0)\n(4/25) Installing libstdc++ (5.3.0-r0)\n(5/25) Installing libgmpxx (6.1.0-r0)\n(6/25) Installing gmp-dev (6.1.0-r0)\n(7/25) Installing libedit (20150325.3.1-r3)\n(8/25) Installing ruby-libs (2.3.7-r0)\n(9/25) Installing ruby-dev (2.3.7-r0)\n(10/25) Installing binutils-libs (2.26-r1)\n(11/25) Installing binutils (2.26-r1)\n(12/25) Installing isl (0.14.1-r0)\n(13/25) Installing libgomp (5.3.0-r0)\n(14/25) Installing libatomic (5.3.0-r0)\n(15/25) Installing mpfr3 (3.1.2-r0)\n(16/25) Installing mpc1 (1.0.3-r0)\n(17/25) Installing gcc (5.3.0-r0)\n(18/25) Installing make (4.1-r1)\n(19/25) Installing musl-dev (1.1.14-r16)\n(20/25) Installing libc-dev (0.7-r0)\n(21/25) Installing fortify-headers (0.8-r0)\n(22/25) Installing g++ (5.3.0-r0)\n(23/25) Installing build-base (0.4-r1)\n(24/25) Installing build-dependencies (0)\n(25/25) Upgrading musl-utils (1.1.14-r14 -\u003e 1.1.14-r16)\n1 gem installed\nFetching gem metadata from https://rubygems.org/.............\nInstalling chronic 0.10.2\nBundle complete! 1 Gemfile dependency, 2 gems now installed.\nGems in the groups development and test were not installed.\nBundled gems are installed into `/usr/local/bundle`\nirb(main):001:0\u003e\n```\n\nThe next time, it's much cleaner:\n\n```\n❯ replr ruby chronic\nirb(main):001:0\u003e Chronic.parse(\"tomorrow\")\n=\u003e 2018-08-25 12:00:00 +0000\nirb(main):002:0\u003e\n```\n\nAs you can see, replr tries its best to abstract away the underlying docker installation. You shouldn't have to worry about Dockerfile \u0026 so on just to get a REPL!\n\nIt also tries its best to make sure libraries you mention are auto-required in the REPL, so you don't have to do any additional work!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishnugopal%2Freplr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvishnugopal%2Freplr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishnugopal%2Freplr/lists"}