{"id":665,"date":"2014-05-05T08:00:00","date_gmt":"2014-05-05T07:00:00","guid":{"rendered":"http:\/\/www.diogonunes.com\/blog\/?p=665"},"modified":"2020-05-15T14:24:43","modified_gmt":"2020-05-15T13:24:43","slug":"ruby-on-rails-an-overview-on-why-its-so-good","status":"publish","type":"post","link":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/","title":{"rendered":"Ruby on Rails: an overview on why it&#8217;s so good"},"content":{"rendered":"<figure id=\"attachment_1422\" aria-describedby=\"caption-attachment-1422\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?resize=500%2C375\" alt=\"www.tryruby.org\" width=\"500\" height=\"375\" class=\"size-full wp-image-1422\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?w=500&amp;ssl=1 500w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?resize=400%2C300&amp;ssl=1 400w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><figcaption id=\"caption-attachment-1422\" class=\"wp-caption-text\">]<a href=\"http:\/\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg\">1<\/a> www.tryruby.org<\/figcaption><\/figure>\n<h2>I was in denial for a while but now I get why Rails is so good.<\/h2>\n<p><!--more--><\/p>\n<p>First things first, what is Rails anyway? <a href=\"http:\/\/rubyonrails.org\/\">Ruby on Rails<\/a> is a framework that allows you to develop web applications using the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Model%E2%80%93view%E2%80%93controller\">MVC<\/a> design pattern. Generally speaking a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Software_framework\">framework<\/a> is a higher-level abstraction that packages and offers the generic and commonly used functionality. <a href=\"https:\/\/www.ruby-lang.org\/en\/\">Ruby<\/a> is a general-purpose programming language, meaning it was not specifically designed for web development, thus adjustments must be made. So what <a href=\"http:\/\/david.heinemeierhansson.com\/\">David H. Hansson<\/a> did at <a href=\"http:\/\/en.wikipedia.org\/wiki\/37signals\">Basecamp<\/a> was create a framework that (1) allows you to develop web applications using the Ruby language, and (2) speeds up the development by automagically generating code for commonly used functionality &#8211; thus the name &#8220;Ruby on Rails&#8221;.<\/p>\n<h3>What awaits you if you choose Rails<\/h3>\n<p>Ruby on Rails allows you to write less code while accomplishing more than with other frameworks. This is possible because Rails is <a href=\"http:\/\/quizzsystem.comyr.com\/web-page\/\"><em>opinionated software<\/em><\/a>, i.e. it assumes there&#8217;s a best way to do things and that you want to do things that way. Basic everyday functionality is either offered by the framework or it can be imported plug&#8217;n&#8217;play style from the online community. If you do things &#8220;the Rails Way&#8221; you will be tremendously productive. To do so, you should follow Rails&#8217; main principles:<\/p>\n<ul>\n<li><strong>Don\u2019t Repeat Yourself (DRY).<\/strong> Duplicated code is bad. With Rails you can write the code once (called a <em>part<\/em>) and refer to it from another part of your code. Do your webpages share a common header? Don&#8217;t copy-paste it, just inherit it!<\/li>\n<li><strong>Convention Over Configuration.<\/strong> Rails does most of the work for you, making assumptions about what you want to do and how you want to do it, rather than letting you tweak every little detail through endless configuration files.<\/li>\n<li><strong>REST is the best pattern for web applications.<\/strong> Organizing your application around resources that respond to standard HTTP verbs is the fastest way to go. And since everyone uses this convention you can easily share knowledge and practices.<\/li>\n<li><strong>Your code should read as plain English.<\/strong> This is achieved mostly by Ruby&#8217;s syntax together with Rails&#8217; templating system. And it gets even cleaner if you use <em>gems<\/em> (off-the-shelf functionality developed by the community) like the <a href=\"http:\/\/haml.info\/\">HTML Abstraction Markup Language<\/a> for webpages or <a href=\"http:\/\/www.opinionatedprogrammer.com\/2011\/02\/capybara-and-selenium-with-rspec-and-rails-3\/\">Capybara<\/a> for tests.<\/li>\n<\/ul>\n<p>As I mentioned, Rails structures your code around the <a href=\"http:\/\/quizzsystem.comyr.com\/web-page\/\">Model, View, Controller architecture<\/a>. In summary a Model stores information, a View shows that information to the user, and a Controller replies to web requests by fetching data from the Model and populating the dynamic parts of the View:<\/p>\n<ul>\n<li>A <strong>Model<\/strong> represents an entity or a class (remember <a href=\"http:\/\/en.m.wikipedia.org\/wiki\/Object-oriented_programming\">OOP<\/a>?) which stores all relevant information and business logic. In most cases, one model in your application will correspond to one table in your database. Example: you create a <code>User<\/code> model with a <code>Name<\/code> <code>string<\/code> field and Rails automatically creates a <code>Users<\/code> table with a <code>Name<\/code> <code>varchar<\/code> column.<\/li>\n<li><strong>Views<\/strong> represent the user interface of your application. In Rails, views are often HTML files with embedded Ruby code (enclosed by <code>&lt;%= ...ruby code here... %&gt;<\/code>) that performs tasks related solely to the presentation of the data. Those Ruby snippets are what puts the dynamic in &#8220;dynamic webpages&#8221;.<\/li>\n<li><strong>Controllers<\/strong> connect models and views. In Rails, controllers are responsible for processing the incoming requests from the web browser, interrogating the models for data, and passing that data on to the views for presentation.<\/li>\n<\/ul>\n<h3>Why is that good for me?<\/h3>\n<p><a href=\"http:\/\/blog.codinghorror.com\/why-ruby\/\">Different people<\/a> will give you <a href=\"http:\/\/www.infront.com\/blogs\/the-infront-blog\/2013\/1\/4\/five-reasons-why-we-use-ruby-on-rails\">different advantages<\/a> but these four are agreed among most developers:<\/p>\n<ul>\n<li><strong>Significant cost savings.<\/strong> Ruby on Rails is essentially a free development toolkit, which runs on a free operating system (Linux) and works with multiple databases (MySQL, PostgreSQL) and web servers most of which are free. By using a cost-free platform, you&#8217;re able to significantly reduce costs without sacrificing any speed, security or performance.<\/li>\n<li><strong>Rapid development.<\/strong> Rails is a rapid application development tool because (1) it makes assumptions on what you need and codes it for you, and (2) the community is huge and active so probably there&#8217;s already a gem for that feature that you were about to implement from scratch. This comes handy on small or innovative projects when you have limited time and resources to create a functional prototype.<\/li>\n<li><strong>Structured and standardized code.<\/strong> Rails favors consistency in the structure and methodology when writing code. The MVC architecture makes it a lot easier to manage the code between developers. This means that an individual developer&#8217;s coding style doesn&#8217;t get in the way of writing the code, so passing code from one developer to another creates less friction. This helps you tremendously when you&#8217;re working on a team or when you want to open-source your project.<\/li>\n<li><strong>Collaboration.<\/strong> The Ruby\/Rails community is extremely active and enthusiastic. People are constantly developing code to add more functionality or to integrate with other APIs. Therefore, you have a larger and more diverse toolkit to take advantage of. This also means there are more tutorials, guides, questions and answers online to help you out.<\/li>\n<\/ul>\n<p>If you&#8217;re still curious read <a href=\"https:\/\/www.quora.com\/Ruby-on-Rails-web-framework\/Why-do-so-many-startups-use-Ruby-on-Rails\">&#8220;Why do so many startups use Ruby on Rails?&#8221;<\/a><\/p>\n<h3>Conclusion<\/h3>\n<p>For some reason I was suspicious about Ruby on Rails, probably because too many people were saying that it was too good. Meanwhile I tried Django (Python) and then Play Framework (Java\/Scala). Finally I decided to stop being prejudiced and gave Rails a chance; I only regret not doing so earlier.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I was in denial for a while but now I get why Rails is so good.<\/p>\n","protected":false},"author":1,"featured_media":1422,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2],"tags":[30,22],"class_list":["post-665","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-ruby-on-rails","tag-review"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ruby on Rails: an overview on why it&#039;s so good - The Geeky Gecko<\/title>\n<meta name=\"description\" content=\"Looks like everyone is using Ruby on Rails, but why? Let me tell you what awaits you if you choose Rails and why you should choose it.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ruby on Rails: an overview on why it&#039;s so good - The Geeky Gecko\" \/>\n<meta property=\"og:description\" content=\"Looks like everyone is using Ruby on Rails, but why? Let me tell you what awaits you if you choose Rails and why you should choose it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/\" \/>\n<meta property=\"og:site_name\" content=\"The Geeky Gecko\" \/>\n<meta property=\"article:published_time\" content=\"2014-05-05T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-15T13:24:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"375\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Diogo Nunes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:site\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diogo Nunes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/\"},\"author\":{\"name\":\"Diogo Nunes\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"headline\":\"Ruby on Rails: an overview on why it&#8217;s so good\",\"datePublished\":\"2014-05-05T07:00:00+00:00\",\"dateModified\":\"2020-05-15T13:24:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/\"},\"wordCount\":923,\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1\",\"keywords\":[\"rails\",\"review\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/\",\"name\":\"Ruby on Rails: an overview on why it's so good - The Geeky Gecko\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1\",\"datePublished\":\"2014-05-05T07:00:00+00:00\",\"dateModified\":\"2020-05-15T13:24:43+00:00\",\"description\":\"Looks like everyone is using Ruby on Rails, but why? Let me tell you what awaits you if you choose Rails and why you should choose it.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1\",\"width\":500,\"height\":375,\"caption\":\"www.tryruby.org\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.diogonunes.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ruby on Rails: an overview on why it&#8217;s so good\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/\",\"name\":\"The Geeky Gecko\",\"description\":\"The Geeky Gecko\",\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\",\"name\":\"Diogo Nunes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"width\":799,\"height\":799,\"caption\":\"Diogo Nunes\"},\"logo\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.diogonunes.com\",\"https:\/\/x.com\/dialexnunes\"],\"url\":\"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ruby on Rails: an overview on why it's so good - The Geeky Gecko","description":"Looks like everyone is using Ruby on Rails, but why? Let me tell you what awaits you if you choose Rails and why you should choose it.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/","og_locale":"en_US","og_type":"article","og_title":"Ruby on Rails: an overview on why it's so good - The Geeky Gecko","og_description":"Looks like everyone is using Ruby on Rails, but why? Let me tell you what awaits you if you choose Rails and why you should choose it.","og_url":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/","og_site_name":"The Geeky Gecko","article_published_time":"2014-05-05T07:00:00+00:00","article_modified_time":"2020-05-15T13:24:43+00:00","og_image":[{"width":500,"height":375,"url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1","type":"image\/jpeg"}],"author":"Diogo Nunes","twitter_card":"summary_large_image","twitter_creator":"@dialexnunes","twitter_site":"@dialexnunes","twitter_misc":{"Written by":"Diogo Nunes","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#article","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/"},"author":{"name":"Diogo Nunes","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"headline":"Ruby on Rails: an overview on why it&#8217;s so good","datePublished":"2014-05-05T07:00:00+00:00","dateModified":"2020-05-15T13:24:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/"},"wordCount":923,"publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1","keywords":["rails","review"],"articleSection":["Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/","url":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/","name":"Ruby on Rails: an overview on why it's so good - The Geeky Gecko","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#primaryimage"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1","datePublished":"2014-05-05T07:00:00+00:00","dateModified":"2020-05-15T13:24:43+00:00","description":"Looks like everyone is using Ruby on Rails, but why? Let me tell you what awaits you if you choose Rails and why you should choose it.","breadcrumb":{"@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#primaryimage","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1","width":500,"height":375,"caption":"www.tryruby.org"},{"@type":"BreadcrumbList","@id":"https:\/\/www.diogonunes.com\/blog\/ruby-on-rails-an-overview-on-why-its-so-good\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.diogonunes.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ruby on Rails: an overview on why it&#8217;s so good"}]},{"@type":"WebSite","@id":"https:\/\/www.diogonunes.com\/blog\/#website","url":"https:\/\/www.diogonunes.com\/blog\/","name":"The Geeky Gecko","description":"The Geeky Gecko","publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c","name":"Diogo Nunes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","width":799,"height":799,"caption":"Diogo Nunes"},"logo":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.diogonunes.com","https:\/\/x.com\/dialexnunes"],"url":"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/try-ruby-e1373488411601.jpg?fit=500%2C375&ssl=1","jetpack-related-posts":[{"id":379,"url":"https:\/\/www.diogonunes.com\/blog\/set-up-your-rails-env\/","url_meta":{"origin":665,"position":0},"title":"Setting up your Rails environment from scratch","author":"Diogo Nunes","date":"12 May, 2014","format":false,"excerpt":"This is a complete yet summarized guide to set up a Ruby on Rails development environment on Linux. Installing and configuring Sublime Text, Github, and Heroku are optional but we're included for the sake of completeness. Since these are the de facto tools for editing source code, managing code repositories\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"original photo: goo.gl\/QE43FV","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/rails-worker-assembly-construction.jpg?fit=620%2C230&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/rails-worker-assembly-construction.jpg?fit=620%2C230&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/rails-worker-assembly-construction.jpg?fit=620%2C230&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":671,"url":"https:\/\/www.diogonunes.com\/blog\/rails-vs-django-vs-play-frameworks\/","url_meta":{"origin":665,"position":1},"title":"Rails vs Django vs Play: Battle of frameworks","author":"Diogo Nunes","date":"26 May, 2014","format":false,"excerpt":"This post is a review of those three frameworks considering four criteria: Ease of learning, Speed of development, Tools\/Plugins, and Community. Right from the start I banished PHP from my possible choices. I know that \"sufficiently talented coders can write great applications in terrible languages\" (Jeff Atwood), but I just\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/09\/rails-vs-django-vs-play.jpg?fit=946%2C550&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/09\/rails-vs-django-vs-play.jpg?fit=946%2C550&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/09\/rails-vs-django-vs-play.jpg?fit=946%2C550&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/09\/rails-vs-django-vs-play.jpg?fit=946%2C550&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":825,"url":"https:\/\/www.diogonunes.com\/blog\/bootstrap-switch-on-rails\/","url_meta":{"origin":665,"position":2},"title":"Using Bootstrap Switch 3 on Rails","author":"Diogo Nunes","date":"9 June, 2014","format":false,"excerpt":"Replace Bootstrap's checkboxes and radio buttons by an elegant switch... a Bootstrap Switch. I'm a great fan of Twitter's Bootstrap. Recently I had to develop a settings page which involved displaying a lot of Yes\/No checkboxes. It looked outdated. I wanted something a bit more \"app-like\" - a Yes\/No switch.\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/bootstrap-switch-3-demo-examples.png?fit=564%2C430&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/bootstrap-switch-3-demo-examples.png?fit=564%2C430&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/bootstrap-switch-3-demo-examples.png?fit=564%2C430&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":1481,"url":"https:\/\/www.diogonunes.com\/blog\/custom-domain-for-rails-application-at-heroku\/","url_meta":{"origin":665,"position":3},"title":"Using a custom domain for your (Rails) application at Heroku","author":"Diogo Nunes","date":"3 November, 2014","format":false,"excerpt":"Because no one will remember gentle-tundra-5348.herokuapp.com If you deployed your Rails application to heroku for free, you probably ended up with an URL like http:\/\/weird-name-1234.herokuapp.com\/. You can rename that URL to something more familiar, but it will always be of the form *.heroku.com. That's fine when your just testing or\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"original photo: http:\/\/goo.gl\/dxaV95","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/11\/Heroku-Rails-Station.jpg?fit=600%2C400&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/11\/Heroku-Rails-Station.jpg?fit=600%2C400&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/11\/Heroku-Rails-Station.jpg?fit=600%2C400&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3756,"url":"https:\/\/www.diogonunes.com\/blog\/infrastructure-testing-inspec-azure-bash-ruby\/","url_meta":{"origin":665,"position":4},"title":"Infrastructure testing (Ruby): InSpec + Azure","author":"Diogo Nunes","date":"7 September, 2020","format":false,"excerpt":"Infra testing is mostly uncharted territory I once worked in a project that was all about DevOps, pipelines and bash scripts. At the time we didn't find many guides, so we developed our own test strategy. Context The project's goal was to create a collection of bash scripts that would\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":805,"url":"https:\/\/www.diogonunes.com\/blog\/conclusions-after-6-months-of-blogging\/","url_meta":{"origin":665,"position":5},"title":"Conclusions after 6 months of blogging","author":"Diogo Nunes","date":"30 June, 2014","format":false,"excerpt":"Thanks to Google Analytics I can compare several metrics about my website before and after blogging. Here are my findings. I started blogging on the 1st of January 2014, so this comparison will focus on (Jan 1 - 31 May, 2014) vs. (Jan 1 - 31 May, 2013). A blog\u2026","rel":"","context":"In &quot;Writing&quot;","block_context":{"text":"Writing","link":"https:\/\/www.diogonunes.com\/blog\/category\/writing\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/Google-Analytics.png?fit=839%2C375&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/Google-Analytics.png?fit=839%2C375&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/Google-Analytics.png?fit=839%2C375&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/06\/Google-Analytics.png?fit=839%2C375&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/comments?post=665"}],"version-history":[{"count":1,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/665\/revisions"}],"predecessor-version":[{"id":3838,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/665\/revisions\/3838"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media\/1422"}],"wp:attachment":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media?parent=665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/categories?post=665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/tags?post=665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}