Releases: franzejr/best-ruby
2.1
Ruby Tricks, Idiomatic Ruby, Refactorings and Best Practices
Do you know why experienced Ruby programmers tend to reach for basic collections
and hashes while programmers from other languages go for more specialized classes?
Do you know the difference between strip, chop, and chomp, and why there are three
such similar methods when apparently one might suffice? (Not to mention lstrip and
rstrip!) Do you know the downsides of dynamic typing? Do you know why the differences
between strings and symbols get so blurry, even to experienced Ruby developers?
How about metaprogramming? What the heck is an eigenclass? How about
protected methods? Do you know what they’re really about? Really? Are you sure?
Eloquent RubyAbsolutely the best way to learn to write idiomatic Ruby code is to read idiomatic Ruby code. Eloquent Ruby
This repository aims to help everyone to write a more idiomatic, clean and tricky ruby code and also try to join a bunch of good refactoring techniques. You can add your own technique or paste it from some website(do not forget the source, of course). All the tricks are in the /tricks folder.
For the sake of reading, you should paste in the markdown format and at the end, paste where the technique come from, if it's not yours.
Tricks
In this part we can check some obscure or awesome features from the and the standard ruby library which normally we forget.
Idiomatic Ruby
You can write a Ruby code, but it can look like a Java code for example. Here you can find some tips to write a more natural and take advantage of Ruby.
Refactorings
Small (and big) improvements you can apply to your code and improve it's readability and maintenance. Change the internal structure of the code without changing it's behaviour.
Best Practices
If you keep your house cleaned constantly you'll never need to waste a weekend cleaning it. The same applys to your code, be disciplined and keep your code looking good with those tips.
Contributors
A big thanks to the following persons
Contributing
- Fork it
- Create a branch with your idea:
git checkout -b my-idea
- Check in which category it should be: best practice, idiomatic ruby, refactorying or trick. If you don't know, please open an issue and ask.
- Add your idea to the collection of
.md
files in the correct folder (tricks, refactorings, idiomatic_ruby or best_practices) folder - Commit your changes:
git commit -am 'Add my idea'
- Push to the branch:
git push origin my-idea
- Create a new Pull Request and explain your technique in the markdown file
2.0
Summary
- Introduction
- Tricks
- Alphanumeric incrementing
- Associative arrays
- At exit method
- Autovivification
- Blocks can take blocks
- Bubbling up thread errors
- Case on ranges
- Count all objects
- Cycle
- Data
- Easiest database pstore
- Easiest database pstore yaml
- Enable garbage collector profiler
- Enable ruby warnings
- Fast memoization fibonacci
- Fetch data
- Get random data
- Head tail
- Inject
- Inspecting the source with script lines
- Iterating over specific types
- Lambda your own syntax
- Memoization
- Print formatted with debug
- Ruby debug flag
- Shortcut variable interpolation
- Single instance running
- Smalltalk conditionals
- Splat operator
- Stab operator
- Struct without assignment
- Super magic keyword
- Super magic keyword2
- Super magic keyword3
- Super magic keyword4
- Super magic keyword5
- Tail call
- Trigger irb as needed
- Unfreeze objects with fiddle
- Unused variable format
- Variables from a regex
- Zip
- Introspecting Block Parameters
- Idiomatic Ruby
- Refactorings
- Best Practices
1.0
Summary
- Introduction
- Tricks
- Alphanumeric incrementing
- Associative arrays
- At exit method
- Autovivification
- Blocks can take blocks
- Bubbling up thread errors
- Case on ranges
- Count all objects
- Cycle
- Data
- Easiest database pstore
- Easiest database pstore yaml
- Enable garbage collector profiler
- Enable ruby warnings
- Fast memoization fibonacci
- Fetch data
- Get random data
- Head tail
- Inject
- Inspecting the source with script lines
- Iterating over specific types
- Lambda your own syntax
- Memoization
- Print formatted with debug
- Ruby debug flag
- Shortcut variable interpolation
- Single instance running
- Smalltalk conditionals
- Splat operator
- Stab operator
- Struct without assignment
- Super magic keyword
- Super magic keyword2
- Super magic keyword3
- Super magic keyword4
- Super magic keyword5
- Tail call
- Trigger irb as needed
- Unfreeze objects with fiddle
- Unused variable format
- Variables from a regex
- Zip
- Idiomatic Ruby
- Refactorings
- Best Practices