I am taking a step back in my Ruby on Rails journey, as it seems that my initial goals may have been a bit too ambitious.
As I said in a previous post, this is not my first foray into web applications. I've been working with Python and its associated frameworks for some time. When I was asked by a friend to work with Ruby, I thought that there would be a fair amount of similarities between Rails and Django given the structural similarities between Ruby and Python. I could not have been more wrong.
The Ruby and Python communities have taken their languages in completely different directions, and that's just fine. Ruby has no Benevolent Dictator for Life like Guido van Rossum, and 37signals has rejected any implications that their organization can be the sole deciders for Rails. That leaves a community free to evolve however it chooses to do so. There are pros and cons to this. Ruby (and consequently, Rails) has the ability to change and grow into its users' needs far more quickly than Python. That comes with its own set of growing pains, which I encountered in my first efforts in building a demo application.
Ruby makes heavy use of gems, which appear to be like more complex Python libraries. I say "more complex" because they appear to bolt onto each other far more heavily than Python libraries. If I want to make a complex application run, chances are I'll need five gems to do it... and versioning is extremely important. I was following an application template that clearly spelled out all the gems and versions I would need to build it, but hit my first snarl when one gem wasn't quite prepared for Ubuntu 12.04 as its creator had placed some dependencies on OS X. I went debugging and fiddled with the gem to redirect it to its new home in Ubuntu, only to find that my debugging had caused problems with Rails. At this point, I decided that I should probably get a firmer understanding of the core of Rails before I started messing with gems.
So, ye Rubyists, who were so helpful last time with my RSpec gaffes - how do you manage dependencies like this? Are these gem heartburns a common problem in Ruby/Rails or is this mostly due to my ineptitude with the language?
I had the same experience moving from Django to Rails about 3 years ago. We had an application with a messy set of dependencies and it took me over 3 weeks to figure out how to setup the application on Ubuntu. A coworker bought a new iMac and I watched him set up the site in under 2 hours. I'm not going to lie, you will spend significantly more time troubleshooting on Ubuntu than OSX simply because a lot of tools for Rails are built with OSX in mind first. I don't want to argue whether that's good or bad, it's just the experience I've had.
That said, take a look at your dependencies. Are there alternatives? I don't think this is a problem with the framework, the language, or even the dependencies you are using. It's a problem of whether those dependencies are causing trouble with what you're trying to accomplish. I wouldn't immediately that the dependencies that are currently there are the best ones for the job. Do some research for alternatives that are potentially better suited.
The other thing to ask is if this application is already deployed to a server, are you developing in the same environment? If it hasn't been deployed, this is a sign of problems to come when you do deploy it to a Linux box.