Rails for Zombies - Labs - ruby-on-rails

I'm curious to know how the tutorial site "Rails for Zombies" did their labs. A user is required to answer a series of lab questions by typing ruby code into (what appears to be) a command line prompt to complete each lab. Upon submitting determines if they can proceed to the next lab question.
Peeking at the DOM through Firebug, it appears they're using the canvas tag- I'm assuming this is the command line, right? Also, on the Ruby side, how do they ensure that the code entered is what was required to answer the question? Or do they just have a test setup using RSpec/Cucumber?
Any help is much appreciated. :)

For the in browser code editor we're using Mozilla Bespin, now known as Skywriter. For the evaluation on the server side we are using a sandbox to run the Ruby code, as Andy Lindeman stated. In most cases as you assumed, we're using tests to ensure the code does what you're supposed to do.
It's definitely not a simple piece of code. If you're interested in using our engine to create a tutorial of sorts, please do get in touch. Gregg at EnvyLabs.

I do not work for Envy Labs, but I'd think that the Ruby code is simply sent as-is to the server, where it's run in some sort of sandbox.
It likely works similarly to tryruby.org, whose source is freely available for your reading pleasure :)

Related

Good easy to learn Ruby on Rails developement platform

Hoping you guys can help me here, I'm at the end of my tether. I've been on a course to get into the web developement side of things. Only thing is the course is awful. It's completely disorganised.
Long story short I've got a couple of days to hand in a project that involves doing a simple ecom website that can list products, add new ones and have a basic shopping cart. Has to be done through Ruby on Rails and connect to a database. They've had us using Netbeans but so far they can't make it work properly in the college labs and it doesn't work on my laptop either. Does anyone know of a Ruby developeent platform that is easy to instal and use? I've heard good tinhgs about RubyMine but I'm so close to the wire I could really do withsome advice if anyone can help.
Well I usually code on Ubuntu, and so I just use gedit with the gMate package, so it works and acts like TextMate (Mac). I used to work on a Windows machine too and would just use Notepad++ because all I needed was a basic text editor, but with some more goodness than just plain Notepad.
You can checkout this other question about learning Ruby on Rails: https://stackoverflow.com/questions/6906839/best-way-to-learn-ruby-on-rails-from-scratch/6906885#6906885
Michael Hartl's book (http://ruby.railstutorial.org/ruby-on-rails-tutorial-book) is definitely a great way to learn Rails. In it, you basically re-create Twitter. It's really easy to follow, I thought, and you learn a lot. You don't necessarily need to read it straight through though, and can pick and chose what information is relevant to you. But it does go through things like: CRUD (create, retrieve, update, delete) of objects (like creating a new user, showing a user, updating one, deleting one), and how to interact with a database and even how to deploy it on to ye ol' world wide web.

How do I develop a web page that returns password for users to register?

I am doing a project on creating a lab application for a next generation sequencing data using ruby on rails.
The main idea my boss suggests me to do is to have users fill in their details and submit to us. After the submission, the administrator, i.e. me, would send them a password which they can use to login my application. could some one help me with the idea of development. I am naive to ruby on rails and would be very grateful for people who help me.
thank you and cheers
I would start with Michael Hartl's RailsTutorial. Not only did I find it the best way to get started - the application he builds includes a bombproof user security model, just as you require, and so you'd be both learning and developing something relevant at the same time.
I'd also recommend buying the videos, as well as the book. They make all the difference.
Are you new to the whole web development thing or is it just Ruby on rails that you have no knowledge of?
If the former, I'd suggest googling some Ruby tutorials on how to make a simple web application and build from there. Start by a simple "Hello world" application, then proceed to handle submitted forms, then install and use a database and by then you should have the basic knowledge to build what you want.
If the latter, could you specify, what parts you need help with? Ruby is syntactically quite easy to learn if you just take a look at some tutorials, so that shouldn't pose any problems. You have described a simple use case which I'm sure you can handle in a new environment, if you just have the patience to try and learn.

Triggering FireWatir actions from different ruby scripts on the same browser window

I am writing an application that uses FireWatir to do a bunch of different actions. The problem is that I want to trigger these actions from many separate ruby files.
So for example, one ruby script will launch a new FireFox browser instance, than a totally different script will have that instance goto a specific website, and another will log into gmail.
I want all of these scripts to affect the same browser window. That way I can have one script take me to a specific website, and wait for another script to be triggered to do something else.
Please tell me that this is possible.
Chad,
I think that is possible. I am not sure that it's necessary or efficient, but I know that it's possible. The key is to make sure that you attach to the right browser instance. If you will only have one, that could be much simpler.
If you identify the problem that you are trying to solve with these multiple scripts then maybe one or more of the experienced framework designers can point you to existing solutions to the problem. There are some pretty awesome solutions that exist already. At the end of the day, we face the same issues.
Good luck,
Dave
I ended up getting around this issue by using socketing. Had a ruby script acting as the server that was waiting for requests from another group of ruby scripts that could be triggered whenever.

Getting Started with Ruby & Ruby on Rails

Some background:
I'm a jack-of-all trades, one of which is programming. I learned VB6 through Excel and PHP for creating websites and so far it's worked out just fine for me. I'm not CS major or even mathematically inclined - logic is what interests me.
Current status:
I'm willing to learn new and more powerful languages; my first foray into such a route is learning Ruby. I went to the main Ruby website and did the interactive intro. (by the way, I'm currently getting redirected to google.com when I try the link...it's happening to other websites as well...is my computer infected?)
I liked what I learned and wanted to get started using Ruby to create websites. I downloaded InstantRails and installed it; everything so far has been fine - the program starts up just fine, and I can test some Ruby code in the console. However my troubles begin when I try and view a web page with Ruby code present.
Lastly, my problem:
As in PHP, I can browse to the .php file directly and through using PHP tags and some simple 'echo' statements I can be on my way in making dynamic web pages. However with the InstantRails app working, accessing a .rb or .rhtml page doesn't produce similar results. I made a simple text file named 'test.rb' and put basic HTML tags in there (html, head, body) and the Ruby tags <%= and %> with some ruby code inside. The web page actually shows the tags and the code - as if it's all just plain HTML. I take it Ruby isn't parsing the page before it is displayed to the user, but this is where my lack of understanding of the Ruby environment stops me short. Where do I go from here?
AMMENDMENT: This tutorial has helped me immensely! I'd suggest anyone who's in my position go there.
First of all, you must disconnect the relationship between files and URLs.
Rails uses an MVC approach, which is worlds-different from scripts-based approach like ASP/PHP
In classic PHP, you have something like this
Server> Server started, serving scripts from /usr/jake/example.com/htdocs/
User> Please give me /home.php, thanks!
Server> OK, /home.php is mapped to /usr/jake/example.com/htdocs/home.php
Server> Executing /usr/jake/example.com/htdocs/home.php
Server> OK, it prints out a "Hello World!", send that to the response.
User> Ok, /home.php shows "Hello World!"
However, most MVC framework (Rails included) goes something like this:
Server> Server started, initializing routing modules routes.rb
User> Please give me /home, thanks!
Server> OK, /home, per the routing module, is handled with action ShowHomepage() in controller FrontpageCtr
Server> Execute FrontPageCtr.ShowHomepage()
Ruby> FrontPageCtr.ShowHomepage() prints "Hello World!"
Server> OK, sending "Hello World!" down the pipes!
User> Ok, /home shows "Hello World!"
As you can see, there is no connection between what the user put into the addressbar and any script files
In a typical MVC framework, processing a request for any URL goes something like this:
Look in the Routing module (which in the case of rails is defined in routes.rb)
Routing module will then tells the server which "Controller" and "Action" should be used to handle the request.
Rails then creates the Controller and invokes the Action function whatever that might be
The result from the action then gets "Rendered", which, in this case, is supposedly rendering the .rhtml file as actual HTML... there are, of course, other kinds of results e.g. send the user to another URL and whatnot.
The result is then written out to the response stream and displayed by the user's browser.
In short: You must disconnect the notion of scripts and URL first. When you're building MVC websites, they are almost always NOT related in a way that most people understand.
With that in mind, you should be more comfortable learning Rails and MVC way of life.
I'm not a Rails pro so please correct me if I'm mistaken on any part.
I would suggest buying and working your way through Agile Web Development with Rails, an excellent book and a very practical way to learn both Ruby and Rails. It's available instantly in a variety of electronic formats, plus you can get paper copy if you prefer that.
From what you describe you have a fundamentally flawed understanding of how Ruby and Rails, in particular, works. I suggest you spend some time with the book then come back and ask about anything that you get stumped on.
Rails is "parsing the page before it is displayed to the user", if you locate the right file to modify ;-) Those files to be modified are under the following folder(s):
app/views/...
That's the short answer. For a comprehensive one (for a newbie), I highly recommend: http://guides.rubyonrails.org/getting_started.html
Getting started with Ruby on Rails is something that is a little daunting at first, but after you get started it gets a lot easier. After running Ruby on Rails bootcamps for Startup Accelerators, Harvard Business School, in Times Square, Boston, and Pittsburgh, I started http://www.firehoseonline.com. It's a video tutorial to get started, so you should check out that site.
My advice is to learn as much as you can by actually writing the code. Don't get caught up too much in the details and the specifics. If a tutorial gives you some code to write, and some information, and you don't absorb all the information at first, keep going. Afterwards go back to the material, and once you have gone through the whole process of writing your first application a lot of the pieces will fit together.
As far as your question about opening the php files directly, using the MVC pattern is a little different. You need to setup a the controller, the views and the routes before you can start putting code into .rhtml (or now .html.erb) files. Because of this architecture you'll be able to write a lot of awesome, clean code, super fast, but it can be a bit tricky to wrap your head around (if you REALLY want to write code that way you can with other frameworks, but trust us that this way is better). Stick with it!
Keep your coding mojo high!
Aloha,
Ken

Is there a Ruby on Rails site thumbnail generator available?

I'm hoping to avoid building this if it already exists. Does anyone know of a plugin for Ruby on Rails that will generate a screenshot of a web site? Thanks in advance to anyone who can help me find one.
As far as I am aware you need a server with a desktop (eg. Gnome, X11, KDE) and a web browser with thumbnail capabilities installed (eg. webkit and CutyCapt). Of course this is not usual for a Linux server.
I have used the service suggested by Soufiane using code based on Peter Coopers snippet and it works very well.
Generating website thumbnails would require significant server resources and some sort of background process and job queue so using a web thumbnail generation service might be a better alternative to generating your own.
Yes there is a wonderful solution:
http://webthumb.bluga.net/
It has an great API and there are some Ruby Wrappers (i.e. http://github.com/simplificator/rwebthumb)
It allows you to process 100 thumbnails a month, if you need more the price for credits is very generous if you ask me.
This is not a plugin, but I found this snippet which is using an external site to do what you want (I think.). I didn't test it though.
This is getting a little dated now, but just for posterity's sake there is an answer over here

Resources