{"id":1374,"date":"2021-04-02T19:36:15","date_gmt":"2021-04-03T02:36:15","guid":{"rendered":"https:\/\/coderpad-staging.io\/?post_type=programming-language&#038;p=1104"},"modified":"2023-04-17T04:00:46","modified_gmt":"2023-04-17T11:00:46","slug":"ruby","status":"publish","type":"programming-language","link":"https:\/\/coderpad.io\/languages\/ruby\/","title":{"rendered":"Ruby"},"content":{"rendered":"\n<p>The Ruby environment is augmented with a few REPL features as well as some helpful libraries.<\/p>\n\n\n\n<p>The REPL uses&nbsp;<a href=\"http:\/\/pryrepl.org\/\" target=\"_blank\" rel=\"noopener\">Pry<\/a>&nbsp;to provide a REPL with history, highlighting, and autocomplete. Additionally, whenever you run scripts in CoderPad\u2019s editor, the REPL will deposit you at the exact line and state of any exceptions. If there were no errors, you will have a REPL with access to all of the variables and functions defined in your script.<\/p>\n\n\n\n<p>The libraries included and ready for&nbsp;<code>require<\/code>ing are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/seattlerb\/minitest\" target=\"_blank\" rel=\"noopener\">minitest<\/a>&nbsp;is a simple framework suitable for a variety of testing needs, like unit testing, specs, and mocking. To run your tests, require&nbsp;<code>minitest\/autorun<\/code>&nbsp;like so:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Ruby\" data-shcb-language-slug=\"ruby\"><span><code class=\"hljs language-ruby shcb-wrap-lines\">  <span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-string\">'minitest\/autorun'<\/span>\n\n  <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Dog<\/span><\/span>\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">talk!<\/span><\/span>\n      <span class=\"hljs-string\">'BARK'<\/span>\n    <span class=\"hljs-keyword\">end<\/span>\n  <span class=\"hljs-keyword\">end<\/span>\n\n  describe Dog <span class=\"hljs-keyword\">do<\/span>\n    it <span class=\"hljs-string\">'must bark when spoken to'<\/span> <span class=\"hljs-keyword\">do<\/span>\n      <span class=\"hljs-number\">_<\/span>(Dog.new.talk!).must_equal <span class=\"hljs-string\">'BARK'<\/span>\n    <span class=\"hljs-keyword\">end<\/span>\n  <span class=\"hljs-keyword\">end<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Ruby<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">ruby<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/rspec.info\/\" target=\"_blank\" rel=\"noopener\">RSpec<\/a>&nbsp;is another very popular library for testing in Ruby. You trigger RSpec in CoderPad by requiring&nbsp;<code>rspec\/autorun<\/code>. The equivalent of the previous example in RSpec would be:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Ruby\" data-shcb-language-slug=\"ruby\"><span><code class=\"hljs language-ruby shcb-wrap-lines\">  <span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-string\">'rspec\/autorun'<\/span>\n\n  <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Dog<\/span><\/span>\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">talk!<\/span><\/span>\n      <span class=\"hljs-string\">'BARK'<\/span>\n    <span class=\"hljs-keyword\">end<\/span>\n  <span class=\"hljs-keyword\">end<\/span>\n\n  RSpec.describe Dog <span class=\"hljs-keyword\">do<\/span>\n    it <span class=\"hljs-string\">'barks when spoken to'<\/span> <span class=\"hljs-keyword\">do<\/span>\n      expect(Dog.new.talk!).to eq(<span class=\"hljs-string\">'BARK'<\/span>)\n    <span class=\"hljs-keyword\">end<\/span>\n  <span class=\"hljs-keyword\">end<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Ruby<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">ruby<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/kanwei\/algorithms\" target=\"_blank\" rel=\"noopener\">algorithms<\/a>&nbsp;is a gem with some useful data structure implementations.<\/li>\n\n\n\n<li><a href=\"https:\/\/guides.rubyonrails.org\/active_support_core_extensions.html\" target=\"_blank\" rel=\"noopener\">ActiveSupport<\/a>&nbsp;extends the Ruby language with a lot of useful features built up by the Rails team over the years.<\/li>\n<\/ul>\n","protected":false},"parent":0,"menu_order":0,"template":"","class_list":["post-1374","programming-language","type-programming-language","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/programming-language\/1374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/programming-language"}],"about":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/types\/programming-language"}],"wp:attachment":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media?parent=1374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}