Programming for the Web with Ruby
Registrations are now open for RubyLearning’s FREE, online course on “Programming for the Web with Ruby“. Web-based applications offer numerous advantages, such as instant access, automatic upgrades, and opportunities for collaboration on a massive scale. However, creating Web applications requires different approaches than traditional applications and involves the integration of numerous technologies. The course topics would hopefully help those that have some knowledge of Ruby programming to get started with web programming (this does not cover Ruby on Rails).
Who’s It For?
Anyone with some knowledge of Ruby programming.
The course starts on Monday, 20th Feb. 2012 and runs for 2 weeks.
How do I register?
Register here. Use the Enrollment key: PFTWWR-4I. That’s it!
Updated (26th Jan. at 18 hrs IST): A chart showing number of registrations (957 so far) and the participant’s countries.
- DAY 1
- Using Git
- What’s Version Control
- What’s Git?
- Downloading and Installing Git
- Create a local folder
- Let us start using Git
- Introduce yourself to Git
- Create your SSH Key
- Using GitHub
- What’s GitHub?
- Set up your GitHub account
- Creating a new repository
- Add your SSH key to GitHub
- What’s GitHub?
- Using RVM (for *nix)
- What is RVM?
- Installing RVM
- Loading RVM into your shell
- Reload shell configuration and test
- Install a Ruby interpreter
- Using pik (for Windows)
- What’s pik?
- Installing pik
- Using pik
- Exercise 1
- DAY 2
- A Webpage, Step by Step
- Before we begin, Launch a Text Editor
- Step 1: Start with content
- Step 2: Give the document structure
- Step 3: Identify text elements
- Step 4: Add an image
- Step 5: Change the look with a style sheet
- Store your webpage files on GitHub
- Exercise 2
- DAY 3
- Understanding HTTP concepts
- What’s HTTP?
- Loading a web page
- HTTP request methods (verbs)
- Using cURL
- HTTP response codes
- net/http library
- Using URI
- Using open-uri
- Using Hpricot
- Using Nokogiri
- Fetching documents from web
- Searching inside HTML documents
- What’s HTTP?
- Exercise 3
- DAY 4
- Creating one’s own Ruby Gem
- What’s a Ruby Gem?
- Let us create a simple Ruby library
- Steps for publishing our gem
- DAY 5 and 6
- Learning Rack
- Revisiting Ruby’s proc object
- Rack Specification
- A simple Rack app – my_rack_proc
- Rack Documentation
- Rack Source Code
- Installing Rack gem
- Another Rack app – my_method
- Using rackup
- Using Rack::Request and Rack::Response
- A very basic practical Rack app
- Another practical Rack app
- Rack middleware
- Using Lobster
- Revisiting Ruby’s proc object
- DAY 7
- Deploying Pure Rack Apps to Heroku
- What’s Heroku?
- Create an account on Heroku
- Install Bundle
- Deploy your app to Heroku
- What’s Heroku?
- DAY 8
- Deploying a static webpage to Heroku
- DAY 9
- What’s JSON?
- Using MongoDB with Ruby Mongo driver
- What’s NoSQL?
- What’s MongoDB?
- Setup MongoDB
- MongoDB Core Concepts
- The Basics
- Switch databases
- Insert a document
- Use find()
- Removing all documents
- Query Selectors
- Updating a document
- MongoDB Ruby Driver – mongo
- Using the mongo gem
- Making a Connection
- Getting a List Of Collections
- Getting a Collection
- Inserting a Document
- Updating a Document
- MongoHQ the hosted database
- Sign Up
- Create a database
- Accessing the database
- DAY 10
- Sinatra with MongoDB
- What’s Sinatra?
- Create a folder on your hard disk
- Install Sinatra
- Which web server?
- Our trivial Sinatra application
- ERB and View
- Handlers and Form parameters
The course contents is likely to change.
Satish Talim, Michael Kohl, Victor Goff III and others from the RubyLearning team.
RubyLearning’s IRC Channel
Most of the mentors and students hang out at RubyLearning’s IRC (irc.freenode.net) channel (#rubylearning.org) for both technical and non-technical discussions. Everyone benefits with the active discussions on Ruby with the mentors.
Here are some details on how the course works:
Once the course starts, you can login and start with the lessons any day and time and post your queries in the forum under the relevant lessons. Someone shall always be there to answer them. Just to set the expectations correctly, there is no real-time ‘webcasting’.
- The Mentors shall give you URL’s of pages and sometimes some extra notes; you need to read through. Read the pre-class reading material at a convenient time of your choice – the dates mentioned are just for your guideline. While reading, please make a note of all your doubts, queries, questions, clarifications, comments about the lesson and after you have completed all the pages, post these on the forum under the relevant lesson. There could be some questions that relate to something that has not been mentioned or discussed by the mentors thus far; you could post the same too. Please remember that with every post, do mention the operating system of your computer.
- The mentor shall highlight the important points that you need to remember for that day’s session.
- There could be exercises every day. Please do them.
- Participate in the forum for asking and answering questions or starting discussions. Share knowledge, and exchange ideas among yourselves during the course period. Participants are strongly encouraged to post technical questions, interesting articles, tools, sample programs or anything that is relevant to the class / lesson. Please do not post a simple "Thank you" note or "Hello" message to the forum. Please be aware that these messages are considered noises by people subscribed to the forum.
Outline of Work Expectations:
- Most of the days, you will have exercises to solve. These are there to help you assimilate whatever you have learned till then.
- Some days may have some extra assignments / food for thought articles / programs
- Above all, do take part in the relevant forums. Past participants will confirm that they learned the best by active participation.
Some Commonly Asked Questions
- Qs. Is there any specific time when I need to be online?
Ans. No. You need not be online at a specific time of the day.
- Qs. Is it important for me to take part in the course forums?
Ans. YES. You must Participate in the forum(s) for asking and answering questions or starting discussions. Share knowledge, and exchange ideas among yourselves (participants) during the course period. Participants are strongly encouraged to post technical questions, interesting articles, tools, sample programs or anything that is relevant to the class / lesson. Past participants will confirm that they learned the best by active participation.
- Qs. How much time do I need to spend online for a course, in a day?
Ans. This will vary from person to person. All depends upon your comfort level and the amount of time you want to spend on a particular lesson or task.
- Qs. Is there any specific set time for feedback (e.g., any mentor responds to me within 24 hours?)
Ans. Normally somebody should answer your query / question within 24 hours.
- Qs. What happens if nobody answers my questions / queries?
Ans. Normally, that will not happen. In case you feel that your question / query is not answered, then please post the same in the thread – “Any UnAnswered Questions / Queries”.
- Qs. What happens to the class (or forums) after a course is over? Can you keep it open for a few more days so that students can complete and discuss too?
Ans. The course and its forum is open for a month after the last day of the course.
Remember, the idea is to have fun learning Ruby.
- Al Snow for his various suggestions.
- Arvinder Singh Kang for the note on “Using RVM”
- Konstantin Haase for providing us with another practical Rack app.
- Matt Aimonetti for the GET/POST example related to Rack.
- Michael Kohl for proof reading and making relevant corrections to day 1 and 2 material.
- Oto Brglez for the note on “Using Nokogiri”
- Samnang Chhun for suggesting changes in day 1 material.
- Victor Goff for his various suggestions.
- Willian Molinari for creating the GitHub page for this project.
- Zhang Hailong for making relevant corrections in day 2 material.
RubyLearning.org, since 2005, has been helping Ruby Newbies go from zero to awesome!