Welcome to the Scrappy Academy!
We're a Ruby (and Rails) self study group that meets weekly. Our goal is to expand our knowledge of the Ruby programming language; as well as dive into the Rails web framework now and then.
If you are interested in joining us we please reach out. Our contact information is below and we communicate heavily via the Google Group.
- Google Groups: https://groups.google.com/d/forum/scrappyacademy
- GitHub: https://github.com/ScrappyAcademy
- Twitter: Sir Scrappy
- Campfire: https://scrappyacademy.campfirenow.com/login
Time: Monday, 7:00pm - 8:30pm
We meet almost every Monday. Please check the Google groups for details.
Congrats! You've decided to learn Ruby. Yay! We think, like us, you'll fall in love with it and never want to give it up. The Ruby community has so many great resources for learning that sometimes it can be very overwhelming. Hopefully, this section can help you get started.
If you are new to Ruby, our suggested order for learning resources is:
- Try Ruby: Free codeschool course
- Ruby Monk: Free interactive online short courses
- Ruby Koans on github we highly recommend using this as a learning tool which you can work through as you learn the language via other resources
- Eloquent Ruby by Russ Olsen
The following are some additional resources we have found useful and recommend to new members.
- Ruby from Other Languages
- Learn Ruby the Hard Way: Free online in HTML
- Eloquent Ruby by Russ Olsen
- Practical Object-Oriented Design in Ruby by Sandi Metz
- Ruby in 100 Minute
- The Bastards Book of Ruby
- Programming Ruby
- This is a free online resource, though it is written for 1.8 it is becoming more outdated
- The updated reference is available for purchase as The Pickax Book
- This is a really good reference book, but is a bit dense and may not be the best introduction point
- Ruby Quick Reference
- Ruby Quiz
- Ruby Tapas short screencasts on Ruby idioms, techniques, gotchas, and guidelines. Free every Monday!
- Codecademy track on Ruby
- How Ruby method dispatch works
- Ruby Style Guide
[ ] Add books
[ ] Checklist of skills (find other git based programmer checklist)
In general, prag prog (http://pragprog.com) is a great resource (if you can spare the $$) for learning. If you are unsure of a book just ask. I'm sure someone has read (or will be reading it).
Note to New Members
By now I'm sure you're thinking:
This is great! It sure seems like a lot of information. I'm so excited to dive in. In fact, I'm going to get started right now.
Then after diving in a bit you may start thinking:
Gee. This really is so much to learn.
😕I keep forgetting things.
😭I don't know anything. 😭
Maybe this isn't for me...
First, and most importantly take a deep breath. Please don't get discouraged. Learning to program is a long process. No one gets it overnight, or even in a week or month. You start picking more things up with practice. Overtime you get better. You re-learn lots of stuff (I always have the ruby docs open and re-read them daily); know that this is all part of the process.
If you ever feel this way, know that we all do. Even those of us who have been doing this a long time. If you find
yourself in this situation, especially, if it is after 10 PM. Go do something else (like sleep
When you do come back, focus on one thing. Yep, just one thing. If you are still getting to understand some of the basic
syntax, consider using Ruby (with
pry) as your calculator. If you are learning blocks, try to use blocks for
everything. After a week or two (yeah it's perfectly alright to take your time) pick a new topic. Learn one topic at a
time until you feel comfortable, then move forward. This is how the rest of us learn as well
As you learn new topics, try applying the new concepts / syntaxes to your previous programs. See if you can make the code shorter. Can you make it more expressive? Does making it more expressive make it long? Does it make it more joyful to read?
Just keep coding
- The Scrappy Team
- Using Rake to Setup a Database TODO - Add more links
Git & GitHub
We're using github for all of our source code hosting. To get started and join the fun:
Tutorials & Books
- GitHub Flow
- How GitHub Works
- How GitHub Uses GitHub to Build GitHub
- Product Design
- Pull Requests 2.0
Since the team is largely distributed and needs to work asynchronously, the GitHub workflow seems the best fit to meet these needs. The workflow boils down to:
- Everyone has full access
- Use the campfire chatroom
- This provides a central location for communications
- It serves as a living transcript of our process
- Anyone can pull any story to work on
- Pair programming is highly encouraged (thus multiple people can work on the same story)
- Master is always deployable
- Keep branches simple
This is the base foundation for shipping working software:
- Decide to work on something by checking Pivotal Tracker or a new idea you think would be awesome (put it into the tracker)
Branch off master
$ git checkout -b myfeature master
Regularly commit and push to the server
$ git push origin myfeature
- If you're not sure about a small chunk of code, create a gist then post it in campfire / google group. Or just open a Pull Request.
- Open a Pull Request**
Merge with master after review and delete branch if it is done
If working locally, merge with a no fast forward when possible:
$ git checkout master Switched to branch 'master' $ git merge --no-ff myfeature Updating ea1b82a..05e9557 (Summary of changes) $ git branch -d myfeature Deleted branch myfeature (was 05e9557). $ git push origin master
- Wait for Travis to report all tests pass
- Deploy immediately
If you run into conflicts while merging, try
git mergetool (discussion). If you've setup a graphical diff tool, you'll be able to inspect conflicts and resolve them easily.
** "Pull requests are dicussions, that improve code quality" - Zach Holman How Github Works
While this frees up time from micromanaging, we are still learning, and want to learn together. So we will have code reviews (for now) before merging. The review process is simple:
- Once you want something to go back into master submit a pull request
- Email notifications will be sent, and messages added to campfire. As soon as a majority of people sign off on it (fun time to use Emoji you can merge
- If there is something more, group feedback will be provided to help guide you; or we can submit it for a group pair session the following week