What do you think about building a web application in Ruby on Rails?
We're contemplating a switch to Ruby on Rails and are looking for people's perspectives. What are the pros and cons? Are there traps to beware? Is it hard to find developers? Are the scaleability issues real or overblown? etc.
Answers (9)
That development environment is gaining a lot of traction over the last few years. Enphase has developed their system on Ruby. Check with Chris if you want specific details.
Leor A.
Senior Technical Consultant at ABB Inc.
Best Answers in: Databases (1), Software Development (1), Web Development (1)
Leor A. suggests this expert on this topic:
Diňésh R.
► WE'LL HELP YOU ◄ deliver Defects Free Software ► HELP Improve your Software Testing Productivity◄
Best Answers in: Using LinkedIn (1509), Customer Service (49), Business Development (6), Staffing and Recruiting (5), Certification and Licenses (3), Work-life Balance (3), Education and Schools (2), Mentoring (2), Event Marketing and Promotions (2), Planning (2), Manufacturing (2), Professional Books and Resources (2), Professional Organizations (2), Professional Networking (2), Computers and Software (2), Regulation and Compliance (1), Hotels (1), Travel Tools (1), Occupational Training (1), Resume Writing (1), Financial Regulation (1), Risk Management (1), Government Policy (1), Health Care (1), Public Health and Safety (1), Treaties, Agreements and Organizations (1), Direct Marketing (1), Guerrilla Marketing (1), Mobile Marketing (1), Search Marketing (1), Business Analytics (1), Corporate Governance (1), Nonprofit Management (1), Social Enterpreneurship (1), Project Management (1), Quality Management and Standards (1), Supply Chain Management (1), Wealth Management (1), Market Research and Definition (1), Career Management (1), Ethics (1), Business Plans (1), Franchising (1), Blogging (1), Databases (1), Information Security (1), Telecommunications (1), Software Development (1)
Hello Chip:
I think it has long way to go though there is a traction seen.
I have not come much of the requirements on this space..
Cheers,
-Dinesh
Olivier B.
Entrepreneurial CTO & Managing Director - launched ocado.com, moneio.com, fashionetteparis.com
You will hear a lot of pro's and con's which will be primarily driven from people own bias and their depth of knowledge of the given technology. In the end, you want to pick a technology:
- that's proven to be good (used by top websites)
- with a lot of help online
- with lots of free packages for common/shared features
- with a large community of qualified developers
- with tools that speed up the development
JAVA certainly fits the bill and it has been used for countless projects. But do remember that whatever the technology you end picking, you need top developers to build good software.
Sean W.
Web Developer at Wave Accounting
Best Answers in: Web Development (24), Software Development (7), Computer Networking (4), Search Marketing (3), Computers and Software (3), Internet Marketing (2), Public Relations (2), Manufacturing (1), Small Business (1), Starting Up (1), E-Commerce (1), Enterprise Software (1), Databases (1), Using LinkedIn (1)
Hey Chip,
I picked up Rails a couple of years ago. Now I use Rails or Sinatra for almost all my web projects, and Ruby is mostly replacing Perl in my sysadmin arsenal. Pros and cons depend on what you're coming from.
For pros, you'll find that developers are really productive. Rails handles most of the boring stuff associated with web development, and the Ruby language is very good. There's a great community out there and a lot of gems & plugins that have already solved some difficult programs. The focus on testing is also a bonus.
The two cons that come to mind are a more complicated deployment compared to PHP, and Rails' opinionated nature.
If you're used to editing .php files on a production server, you'll need to become more disciplined. You should have done that anyway though :) If you're used to deploying java applications, Rails will be a breeze. I'd recommend looking at Phusion passenger and Capistrano. Phusion is a souped up version of Ruby along with an Apache or nginx module that does a lot of the hard work of running a ruby app (it's free). Capistrano is a gem that lets you automate deployment, so that you just type "cap deploy" to upgrade your application.
Rails is opinionated software. If your developers don't like the way it does things, sometimes it feels like you're fighting the framework. In my experience, whenever I'm doing something that feels hard, it's usually because I didn't know Rails already had a way to do it. This is just a matter of experience.
I think the scalability problems are unfounded. They usually come from the early days of Twitter, when they way they built their application was just not built for the traffic they had. No matter what they built their application in, it wouldn't have scaled. One central database for everything? Not Rails' fault. They're trying to solve a really hard problem.
Rails has built in caching mechanisms, and there are lots of gems for other types of scalability problems. One common problem with Rails is that people don't use ActiveRecord properly, and end up putting more load on the database than they need to. There are plugins to find these problems (eg Bullet) and after a while, you learn to think about the way you code to pre-empt those problems.
I tried setting up a ruby rails environment in my lab and experimented a bit. It's a paradigm shift and not trivial. Hire experts, that would be my advice.
Greg
Fidel V.
Software Engineer
Best Answers in: Software Development (7), Web Development (1), Wireless (1)
What was first? the Language or the framework as in the Egg or the Chicken dilemma.
In my case I discovered RoR long after playing and enjoying Ruby programming language so is the case that I tend to favor this one over any other MVC web framework. As mentioned by Greg, if you try the framework first and do not find it appealing due limited ruby knowledge then you are going to discard it pretty fast unless you are willing to learn Ruby programming and to accept the two RoR operating pillars; DRY (Do not repeat yourself) and CoC (convention over specification) where most of its opinionated development nature comes from.
Yes you can always work around these two pillars but you will find very quickly the way to make RoR experience miserable and painful.
Happy coding!
Links:
Roshan S.
Founder of 15+ Startups - Gloscon, Openkick, Reputa, Kosansh, Citiplots. Also a Technologist,Mentor, Investor & Speaker
Best Answers in: Web Development (4), Intellectual Property (1), E-Commerce (1)
Chip,
We have been developing in Rails for past 3 years. I can only say that our investments are increasing. We also develop in Drupal but I feel good when I see that have better control in Rails. Both Drupal and Rails have different targets. Developing in Rails would be time-consuming and you absolutely need to know the framework. Knowledge of RSpec/Cucumber, /Capistrano is certainly recommended. Environment setup, deployment or even getting support from forums/irc can be a bit of pain but once you know your way through, it is actually a lot of fun to develop in Rails.
Roshan
Links:
Mark W. S.
gets software projects done faster and sharpens your dev team!
Best Answers in: Business Development (1), Computers and Software (1), Software Development (1)
Specifically, I <3 the way Rails lets you do database access. The simplest way to hit a database table with Rails is to run a "generate scaffold" command that creates the table for you and writes all the code for a super-basic CRUD (create, update, delete) web application. You can edit the generated "scaffold" to make it prettier or to add functionality.
When you go just a little farther, you find that the ActiveRecord class does most of the boring database work for you. Every table ("Model" in MVC parlance) is set up to inherit from ActiveRecord, and you don't have to write out (in your code) what columns it contains because ActiveRecord figures it out for you at runtime.
Better still, you can add lines to your Model code such as ":has_many x" or ":belongs_to y" to indicate relationships (joins) with other tables. Again, Rails works out the details. You really don't even have to know what database software is being used; ActiveRecord takes care of the vendor-specific differences.
Those are some specific things that make Rails so nice for web and database development. One of the hardest things for some people is getting used to NOT writing so much repetitive code.