Simplified Ruby is a minimal subset of the Ruby syntax that allows to take any problem description and turn it into idiomatic, easy to understand and boring Ruby code.
Ruby has a lot of features, quirks, and ways to solve the same problem. I believe that you can take 20% of its syntax and still be able to write code that does the job. This is especially true when you're using a framework (like Ruby on Rails) and a lot of technical problems are being handled for you.
Limiting yourself to Simplified Ruby shifts the focus from technical problems (exciting, but your company probably won't earn money for solving them) to business domain problems (here's your real leverage). You end up with code that is easy to read, easy to understand for your colleagues regardless of their seniority, and easy to delete.
This project can also be useful:
- when introducing people to programming
- to answer the question "how much Ruby syntax do I need to start writing Ruby on Rails applications?"
- during technical interviews for introductory Ruby positions
- for company career ladder to define "basic Ruby knowledge"
"adam":adam563.4niltruefalse"adam".upcase2 + 5.423 - 1010 * 29 / 22 ** 38 % 3"this is #{4}."2 + 2 == 43 != 4"adam".length.zero? && 2 + 2 == 4"adam".length.zero? || 2 + 2 == 4
!"adam".length.zero?if"adam".length.zero?"awesome"elsif2 + 2 == 43else"something else"end"test"if2 + 2 == 4[1,2,3]{"age"=>3}{age: 3}name="adam"age=2 + 3age="five"defmy_method(argument)"I got #{argument}"enddefmy_method(argument)return"a"ifargument.zero?"bbb"enddefmy_method(argument,name:,age: 18,city: nil)end# this is how it works[1,2].mapdo |element|
element * 2endclassUserenduser=User.new("adam")classUserdefname"adam"endendclassUserdefgive_name(name)@name=nameenddefname@nameendendclassUserdefinitialize(name)@name=nameendendclassUserdefintroduce"I am #{age}"endprivatedefage4endendclassUserdefcarCar.new(self)endendclassUserdefself.give_me_three[User.new,User.new,User.new]endendclassUserCODE_LENGTH=3defcode(name)name.slice(0,CODE_LENGTH)endendclassUserdefroles[]endendclassSupervisor < Userdefroles["admin","supervisor"]endendclassSupervisor < Userdefcode(name)"#{super("ADMIN")}#{super}"endendclassUsersclassAdminendendUsers::Admin.newclassUserattr_reader:nameattr_writer:agoattr_accessor:cityendclassUserdefgive_name(name)@name ||= nameendendbegin2 + 2raise"error"4 * 7rescue=>ex"Aaaa #{ex}!!!"end- Array#each
- Hash#each
- Enumerable#map
- Array#select
- Hash#select
- Enumerable#each_with_index
- Enumerable#inject
- Array#join
- Array#max
- Array#min
- Array#reverse
- Array#size
- Array#uniq
- Array#compact
- Array#include?
- Hash#fetch
- Hash#merge
- Hash#slice
- Enumerable#find
- Enumerable#group_by
- Emumerable#sort_by
- String#downcase
- String#upcase
- String#end_with?
- String#start_with?
- String#gsub
- String#include?
- String#length
- String#match?
- String#split