Starting Ruby on Rails from an Objective-C background - ruby-on-rails

Right now I program exclusively with Objective-C using the Cocoa frameworks to write applications for the Mac OS X and iPhone/iPad platforms. I'm fairly fluent using the Objective-C language as well as the Cocoa and Cocoa Touch frameworks. I also know just enough C to be able to understand ObjC.
One of my projects requires that I write a corresponding web application for use with my iPhone app. I've decided that the best path to go with is Ruby on Rails. What is the easiest transition path to go from Objective-C to Ruby on Rails? Any starter guides/docs/tutorials are appreciated!
Thanks

I think that learning Ruby without Rails first is a good idea. _why's Poignant Guide to Ruby is good for people coming from Objective-C because it doesn't go through how objects send "messages" to each other and all that stuff. After that, you should be able to use the Rails Guides to learn Rails. There are tutorials there. I don't know of any learning material that you have to pay for (like books), though. If that is what you want, I would try searching on Amazon.

I'm nearing the end of this tutorial myself, and I think it's a perfect resource for those who are already familiar with software development, particularly web application development in general. I come from a Java background, but have dabbled in PHP and Python (specifically, Django). This tutorial has given me tremendous exposure to Rails in a very friendly way.
I still have some unanswered questions, but less than I had when I tried learning from other books.
As a side note, the tutorial briefly discusses learning Ruby first then Rails vs learning Rails first then Ruby (it ultimately suggests Rails first).

I'm not sure if it was available back when this question was first asked, but I think http://railsforzombies.org/ is an excellent first tutorial. It introduces the framework in a way that's accessible, interactive and engaging, and it makes a great foundation for further study. I got a lot out of it.

How to make a rails application app as a versioned api in less than 10 minutes.
http://railscasts.com/episodes/350-rest-api-versioning
If you'd like to easily follow along executing code along with the video check out the ascii cast so you may copy and paste as you watch.
http://railscasts.com/episodes/350-rest-api-versioning?view=asciicast
You may want to have rvm installed and use the gem bundler. create new gemset for each project. This will save you hassle with different versions of ruby and gems required for different projects.

Related

Ruby on Rails commands and conventions - what are they?

I have been making websites in PHP and MySQL for almost ten years now but I have never used a framework. This means I have hand coded everything and I know how the code all works and interacts with itself.
Wanting to expand my horizons I have picked up Ruby on Rails to learn another web language, framework, DB etc. I have been following the Ruby on Rails tutorial and it is going smoothly so far but what bugs me how much of a black box it feels. there's too much magic, and stuff happens just because it does. Example of this "magic" include, if I add to the routes file "resources :users" all of a sudden I have near infinite possible links like /new /user/1 /user/1/edit etc. Or if I want to add a column to my db table I have to do something like this in the console "rails integrate _to_table value:type" and then I have to "rake" the db.
I have been able to make stuff following the tutorial but I don't understand what I am doing. I know part of it will come through experience but I want to know how and why Rails is doing what it does.
What are some good resources, online and books, where I can learn how RoR works?
Yes, it takes a while to know what all the magic is, but you'll get there eventually if you stick with it.
The 'bible' for ruby on rails development is http://pragprog.com/book/rails4/agile-web-development-with-rails
The 'bible' for the ruby language itself is the 'pickaxe' book, with contributions from the ruby language author himself. http://www.amazon.com/Ruby-Programming-Language-David-Flanagan/dp/0596516177
Ryan Bates has done HUNDREDS of free sceencasts and he is famous for having a really great approach, using the framework effectively. Every good rubiest rate these highly. http://railscasts.com/
Many folks find the "zombies" courses really good. http://railsforzombies.org/
Finally I'll offer my own bookmarks site with over 50 sites for rails:
http://www.rormd.com/linker/groups/1
and 20+ sites for ruby at
http://www.rormd.com/linker/groups/4
While you are learning a good IDE can help a lot. I used eclipse, then netbeans then rubyMine (from our friend at IntelliJ, well known for their java editor. rubyMine has the most features. It is not free but for the price (somewhere in the $24-$75 range, depending on special offers) it's well worth the cost.
This is for newcomers if they wants to learn ruby on rails, even don't know Ruby. I can say try this first and jump on others book.
Just hit on below link and see there are two tutorials available for Ruby on Rails 3.0 and 3.2
Ruby on Rails Tutorials link for Rails 3.0 and 3.2
for those tutorials you do not required Ruby backgrounds
even I like Head First Rails, this book is also good for understand - just rails (no TDB), so initial you can set in rails environment and after that jump on above tutorial link
You can see the entire code on Github http://github.com/rails/rails.
The Jose Valim Book Crafting rails application help to understand a lot of internal in rails too
I would say that using the terms "black-box" and "magic" is a quite inadequate and maybe even a bit depreciative. I believe that the difference you are feeling comes from the fact that Ruby is a very different language than PHP, and that it is easier to code high-level abstractions and conventions in Ruby that in PHP. Rails is full of these abstractions and conventions, and these may be quite confusing, specially if you have no ideia of how they internaly work.
Maybe it's not about Rails that you should be reading. I'd say that you should try to understand Ruby in the first place. A good understanding of its blocks, its object model, and its mixins is mandatory in order make that "black-box" feeling go away.
Programming in a modern programming language ain't black magic. Debugging Fortran code by printing the code and using crystals over the papersheets to find the bugs was.

Scala + Lift or Ruby on Rails, for a beginner

thanks for opening my question :)
I am a university student in Computer Engineering, and I've always done class projects in Java (apart from C, and Assembly, but for very specific things). Apart from that, I have worked for quite a lot of time on a web app done in ActionScript 3, contained in .jsp files and deployed onto a Google App Engine site.
Having that said, I now pretend to do a prototype of another web app, which will have registered users with blogs and a messaging system between them.
My question is, having time as a restraint (I have month and a half), and needing just to build a working prototype, could anyone tell me, in his/her opinion, what would be the best framework for me to start learning and use? (Take into account my Java & ActionScript background) I believe RoR is the most common in these cases, as its easy and quick, but I have no Ruby knowledge at all, and maybe it would be quicker for me to learn Scala (which coming fromJava shouldn't be that different) and Lift, and do it with them instead.
Many thanks in advance!
Pepillo
Last year I found myself in a very similar situation for creating a web based relationship browser for a computing science class. I would highly recommend RoR. Granted you will need to spend some time getting up to speed with Ruby, but it is well worth the small amount of time to learn. There is excellent documentation available and a ton of good tutorials.
Rails can generate much of the core code and database schema with the generator functions in seconds (see scaffolding generators). Considering your time constraint, I think this alone makes rails a good choice.
In terms of learning Ruby, you should not have much trouble with this if you are comfortable with any dynamically typed scripting languages.
Anyway, that has been my experience with rails. Good luck on your project!
I think I'm going with Play! Not only is the easiest for me, as I am a Java guy, but it's also the quickest when in conjuntion with Japid, according to a benchmark I saw.
I used Java for about 7 years now, mostly for web applications, and recently started using RoR. I must say it was really easy to pick up and get started. After only 2 months of working on my own project I started using it for a customer projects and it was far more easier to deliver production code then I had anticipated. So yes I can recommend Ruby and it was not hard at all to pick up.
However, RoR does require a nix platform like apple os or linux. I stated out with windows but there are simply too many drawbacks and bugs.
If you decide to go with ruby I can higly recommend Agile Web Development with Rails (Pragmatic Programmers) to get you started.

Quickest framework to develop a Facebook App - CakePHP vs. Ruby on Rails

So I know this has been asked before here:
How to start facebook app?
But I am banking on it being a little old and also hoping I have something slightly more specific to ask. So here goes:
I want to build a basic Facebook app, that would require a basic database, a simple front page, and obviously the ability to share/Like over the feed. Now my main concern is I want to do this quickly and easily, without having to deal with as many mundane details as I can avoid.
I was thus looking at CakePHP and Ruby on Rails as frameworks. However, I am not familiar with either of these technologies (I do have a software background, but it is mostly C/C++/Java). So which do you think would be best for me to pick up for this project that will enable me to quickly and easily just 'build' something like this for Facebook?
(Also note that I need a free hosting provider as I don't have money to finance this hobby now, so I'll need to know which hosting companies support these frameworks for free).
Any help is appreciated!
Rails, definitely, there are infinitely more and better resources available to learn from and you can get fantastic free hosting (for small scale apps, plus easily scale for cheap) on Heroku.
To get started, see:
Rails for Zombies (free)
Rails 3 Tutorial
Railscasts
I was in the same situation as you last fall, I knew a fair amount of PHP but had never worked with an MVC web framework before. I tried to learn CakePHP, struggled for a while, then thought I'd spend just one weekend giving Rails a chance. I had never touched Ruby before, but I was so curious about Rails that I picked up a copy of Beginning Rails 3, and I figured I would just take one weekend and see how hard it was to learn some basic Ruby and get an idea for how Rails works.
I thought going into that weekend that there was really no way learning a whole new language could be worth it, even if the framework suited me better. I'm so, so glad I gave it a chance. Ruby is awesome, the community behind it is phenomenal, and the amount of documentation, screencasts, tutorials, etc. are out of this world. Ruby is also a lot of fun to work with, and very easy to learn. Try for yourself and see what you think.
Rails is definitely the way to go (vs CakePHP at least).
The answers so far only scratch the surface!
CakePHP is to PHP what Rails is to Ruby. From the onset, CakePHP was developed to mimic the "Rails" way on things, and has done really well so far; but if you're starting from scratch; you need to remember you have to:
Set up a development environment, which in turn involves
Install the language (PHP / Ruby) and Database (MySQL?)
Learning some basic server configuration(s)
Choosing which one is right for you, and setting it up (Apache, Nginx, Passenger etc)
Get the framework up and running
Learn the underlying language
Learn the framework
Learn the Facebook API, and their developer guidelines
Actually Build the application
Test it, debug and submit for approval
Launch it
Having developed in both CakePHP and RoR - if you're coming with no web development background and you're looking to start; dive in with either. Honestly, it'll be the same learning curve for you! You will find the setup, learning, development and deployment easier in CakePHP - PHP is one of the most popular languages. If you want to learn a language and framework also to improve your skills as a programmer and developer, then you want RoR - it's got strict conventions that do twist your mind but once you get the hang of it, there's no looking back (and these are the same conventions that CakePHP is trying to bring to the PHP world!).
The official documentation for both is excellent, they have amazing (and very active!) communities where even the silliest question is answered. There are also excellent (free) hosting platforms available, that make use of Git and make deployment a snap (PHPFog and Heroku).
It might be worth mentioning that RoR is considered the new boy on the scene, the trendy framework thats bringing with it a lot of rapid changes in development methodologies, and that RoR developers also are in very high demand.
Also - considering the simplicity of the App - have you considered using Sinatra (a very minimal framework for Ruby)? You may find that the easiest, and it'll be an excellent stepping stone if you later wanted to get into Ruby on Rails.
OK, this thread is about 1 1/2 years old by the time I write this. But wanted to add something to the discussion for anyone finding this, as I did doing a search on RoR vs CakePHP.
As of this date, and during the last 12 months, RoR is trending about 3 times what CakePHP is, according to Google Trends. Now, this is just RoR vs CakePHP.
When I add Facebook into the mix, RoR/Facebook is still about 3 times CakePHP/Facebook, but if you look at the last 3 months, CakePHP/Facebook drops to zero. Link.
Right now, the trending languages for Facebook apps are C, Java, & C++. Link.
If you are more familiar with C/C++ then you will most likely find the learning curve for PHP a lot less steep : )
For something like a Facebook app and already knowing C, I would look into CakePHP. If you have time in the future look into RoR as it is an amazing platform.
Don't get me wrong, I love CakePHP. But if you don't have a background in web programming (PHP in particular), even CakePHP can take quite some time to be familiar with. RoR would be at the same learning curve, I suppose.
Besides, to deal with facebook API, you'll have to interact with it at 'base' level (by which I mean, the framework can't help you much with it). So to "quickly and easily just 'build' something like this for Facebook?" I don't think it's quite possible.
Anyway, if you still want to do it, CakePHP would be easier for you because PHP syntax would be similar to C and Java. But Ruby is an interesting and unique language if you have the time to spend on it.

Ruby On Rails Web Application Development From Scratch?

Background
I am interested in getting to grips with some Ruby On Rails. I've got 4 years experience programming in C#, ASP.Net, ASP.Net MVC, SQL Server and more recently Silverlight etc. Obviously I've got a pretty good understanding about the various implementation routes that you can go down when writing web applications using C#, the issue is that I have literally no clue about Ruby On Rails, other than that Ruby is an awesome pure object oriented language and that Rails is a very quick way in which to build web applications using Ruby.
What I'm After
So essentially I'm after a session that fills in the blanks, and helps me to understand the various ways of building web applications using ROR. On top of this, i've found a few tutorials but they seem to be quite vague, so any documentation/samples would be very handy to help get me started.
More Detail
Popular IDE'S to use for development (I've heard RubyMine is good from JetBrains).
Possible database implementations to use (I know MySQL is an option but which version?)
Is HTML/CSS used to style the web apps?!
Interface plugins if used?
General route to producing a highly Web 2.0 site that encompasses a fantastic user experience and a beautiful interactive interface.
...You get the idea, I just need a bit of guidance getting clued up.
Help greatly appreciated :-D
I'd highly recommend starting by reading:
Programming Ruby (also available online)
Agile Web Development with Rails
You should start with the first one, but don't read it all the way through. Once you get the basics of Ruby down, you can switch to the Rails book, but feel free to switch back and forth as you get more familiar with both Ruby and Rails.
The books are both very well written, and they're actually fun to read as far as technical books go. They do a great job of explaining the basics to a total newbie and also really digging in deep. You'll have all of your initial questions answered within a few hours.
When I tried to get into Rails, I bought this Rails for .NET Developers. It was quite useful to get going. After that, the most value I found was watching railscast videos.
For an IDE, I use Netbeans.
Different people learn different ways, but one thing I find to be very helpful for getting a real "feel" for Ruby on Rails is screencasts. The Rails site has a whole section devoted to screencasts. For example, with the 15-minute-blog video, you can actually watch someone work on the blog app and see all the steps along the way. It's not necessarily more informative than, say, a book, but it can be easier to grasp when you're actually seeing it.
The official Rails Guides are kept well up to date -- begin with the Getting Started guide, Railscasts provide quick how-tos on lots of common tasks, and the Agile Web Development with Rails (3rd Edition) book is excellent if you want to sit down and read how it all works.
There's also tons of sample code on GitHub, where you'll find just about all the plugins available as well as lots of well-designed Rails apps that will show you all the best practices.
Regarding specifics you asked about:
Many Rails developers don't bother with an IDE (they just use text editors such as TextMate on the Mac). MySQL is popular for production but for local development, Rails is set up to use SQLite, which is quick and easy. Many developers are moving to a NoSQL datastore such as MongoDb because development is quicker without schemas and migrations. You'll use HTML and CSS but you may use Haml to abstract your HTML templating. For an interactive "Web 2.0" site (as you ask) you'll want to be become familiar with jQuery and CoffeeScript.
You asked the question back in October 2009 but I'm sure other people will continue to want suggestions for the best way to get started with Rails. I hope you've already become a Rails ninja!
i started ruby on rails a few days ago using http://ruby.railstutorial.org/ruby-on-rails-tutorial-book by Michael Hartl. so far so good.
This is my experience, I'm at the stage where I can build simple apps. I am comfortable with code, at least to go to the right sources.
Hartl Tutorial ... go through this at a steady pace, just to understand the overall basics. No way you can absorb everything there.
Why's poignant guide is great to understand how to read code through a story, making things enjoyable and memorable.
Agile guide to rails. This put eveything together, I went through the exercises but stopped near the end. I read what I thought I needed to know how to build something my work would use.
Using railscasts to supplement my app building.
I would recommend as resouces to use apis, irc #rubyonrails, and stack overflow. You would be surprised how people contribute and help you through problems you encounter.
Re: IDE
Most Rails developers use VIM. Or at least the better ones use VIM.
It's more powerful than an IDE. I know and use at least 5 languages and VIM works well for all. I use YADR. If you were with a team, sometimes using VIM or Emacs or Geanie are your best options.
Re: Books
You should read a Ruby book before anything. And by read, I mean, try the examples.
The best book I've read on Ruby on Rails is probably Ryan Biggs' book.
Engineering Long-lasting software would be a good book focused on teaching you some Ruby fundamentals for practical reasons.

Gettings started with Ruby on Rails 2.0 for Windows

So like many people, I'm excited about Ruby on Rails. Being a Windows user, I downloaded InstantRails, got it going, and followed along with the screencast on how to make a blog with RoR 2.0 in fifteen minutes. I used Notepad++ as my text editor, because that's what I've traditionally used for writing the PHP-based websites I've done in the past. I was a little envious of Mac users and how they get the really attractive-looking TextMate, but I managed to follow through the entire screencast and get everything working smoothly.
However, I was lost most of the time.
I know plenty of programming and scripting languages over the years - C++, JavaScript, PHP, HTML, and Lua just to name a few. I don't know Ruby, but I understand a lot of how it works, as far as the syntax is concerned, but I don't understand a lot of the logic behind why certain files do certain things, and that sort of thing.
Also, I tried Aptana with RadRails, but found it difficult to set up. Is there any concrete tutorial for getting it set up and working fully with Ruby on Rails 2.0?
Should I maybe just wait for more RoR 2.0 tutorials to come out before attempting to learn RoR? Or should I just plow on through and experiment until I figure it out?
Also you may want to look into NetBeans, it has great support for ruby and rails. They also provide several focused tutorials and even viedos.
http://www.netbeans.org/kb/trails/ruby.html
Another excelent source of focused tutorials is http://railscasts.com/ by Ryan Bates.
On the ruby side, I strongly recommend The Ruby Way, and if you are into screencasts, the Pragmatic Programmers have some cheap and excelent ones on ruby object model and metaprogramming by Dave Thomas.
Pragmatic Programmer's Agile Web Development with Rails is an excellent book to get started with.
There is a RoR 2.0 BETA book available as well.
If you are really serious about learning Rails, my advice is to get a good book and read it (I know.. programmers don't read books, but you should!). A "good book on Rails" usually contain a chapter on Ruby, but there are plenty of resources on the web to get you going.
According to Ruby on Rails guides:
It is highly recommended that you
familiarize yourself with Ruby before diving into Rails. You will
find it much easier to follow what's
going on with a Rails application if
you understand basic Ruby syntax.
Rails isn't going to magically
revolutionize the way you write web
applications if you have no experience
with the language it uses.
I'm personally using Simply Rails 2, which uses (surprise, surprise) Rails 2. It walks you through the development of a Digg clone.
If you still don't wanna use a book, you should check out Ruby on Rails guides and the Ruby on Rails Wiki. AFAIK, They are being regularly updated to keep up with new releases of Rails.
The Rails Way is also a good book. I use it everyday as a reference book.
You could always check out the awesome Peepcode screencast series:
Rails 2 from scratch part I
Rails 2 from scratch part II
You'll be off and running in no time after watching those. I would also recommend Railscasts, a (free) weekly screencast on Rails, usually focusing on a single feature or implementing a concept in a wonderfully produced manner.
From what I've read, though, it looks like many of these books and such are now at least partially outdated with the advent of Rails 2.0. Is this true?
InstantRails has not been updated for a while, check out Rubystack, which is a similar project but we also include a bunch of other tools: Apache, MySQL,Imagemagick, etc.

Resources