There's nothing stopping you from creating extra folders under /app to contain various types of service objects. Personally I have:
/app/factories - for classes which create active record objects
/app/services - for classes which do something I generally don't care about the return value of. Often perfect for background jobs.
/app/decorators - most of these are Draper classes
/app/forms - form objects
You say: "Hey that must suck, is there anything I can do to help?" or if you genuinely can't figure it out ask a question about the bit you don't understand: "Let me get this right, someone stole your car and now you're late for a meeting?"
But be careful about asking questions which seem accusatory: "Did you leave your keys in your car? That would be pretty stupid"
Equivalent hypothetical statements in the realm of sexism/discrimination might be: "That sucks, is there anything I can do to help?" or if you're genuinely curious to learn more: "That sounds awful. You've raised some good points, are there any resources I can read so I can further understand?" but don't say: "You weren't wearing those hot-pants were you? That would be pretty stupid"
Ignorance my be applied equally but thanks to privilege as a male you can afford to ignore or dismiss those ignorant comments in a way that a person with less privilege may not be able to. As a male you're told by society that you're allowed to go out, break all the rules and take what you want whereas as a woman you're meant to be quiet, demure and "proper".
Bringing up alternate social injustices is generally considered a tactic of diversion. It's not that these other injustices aren't important (they are very important) but it happens with such regularity that it's considered de-railing to the conversation.
And this common refrain is the shrill cry of someone who hasn't had to manage a Ruby on Rails application. Application libraries are the domain of the developer, not operations. Your job is to give me a stable system for me to deploy on top of, not to dictate what I can and cannot deploy.
Rubygems and bundler makes updating your application stupidly easy. I blogged about it here: http://bottledup.net/2013/01/10/bundler-and-gemfile/ but if you have a good Gemfile and automated CI then all you need to do is `bundle update rails` and then deploy your code. This is at least as easy as using apt to update your stuff.
No, it isn't bad advice just overly simplified and generalised.
The vast majority of companies won't need to face scaling or big data issues, they're too busy going after that next sale to keep their heads above water. There are, however, some problems that require lots of data very early on so in these situations it's appropriate to look for solutions like MongoDB, CouchDB, Riak et al. What ends up happening all too often is someone hears about MongoDB being the best new cool thing and decides to implement their company CRUD + sales platform on top of it.
The question you have to ask yourself is why isn't Postgres suitable for you. That might be huge amounts of data and heavy reads and rapidly changing schemas that make MongoDB a better choice.
In any case this post was great because it shows that Postgres can scale if you're willing to put some money, thought and effort into it. I doubt many people here have Instagram's data size or scaling issues.
You'd be surprised. There are a lot of small to midsized companies with data-intensive products. There are a dozen different fleet-tracking-as-a-service companies, several thousand inventory-management, medical-billing management, etc.
The Silicon Valley Tech Bubble is not where the bulk of data usage happens.
Why are you thinking about this when you're not even sure that your app will need to run on multiple EC2 regions? This smells like premature optimisation to me.
It focuses on Bundler and your Gemfiles so that people understand not only how to update rails, but their other gems too. Personally I don't like rvm gemsets for bundler controlled apps (like rails) and think that rvm, bundler, rubygems and so on only serve to confuse the same part-time and hobby developers.
If you're running a relatively new version of Rails (hopefully 3.2.10) you can just goto your app on your dev machine and type:
bundle update rails
Then commit and deploy in the usual manner. You'll probably experience no issues with your application, but it's good practice to run your test suite before you do any sort of production deploy anyway.
If you're running an older version of Rails (pre bundler) or if you don't have a solid test-suite, you'll have a tougher time updating. But you definitely need to put aside time to figure it out now.
Actually it depends on what your Gemfile looks like. If you've specified the exact version in your Gemfile you'll need to edit it before running `bundle update rails`. This means your Gemfile might look like:
gem 'rails', '3.2.10'
Running `bundle update rails` when you've absolutely specified the version number won't do anything. Your Gemfile.lock file (which is the file that bundler uses to determine which gems to require) won't be changed. Instead of absolutely specifying the version of Rails you want to use, considering using the '~>' specifier. My Gemfile at Airtasker looks like:
gem 'rails', '~> 3.2.8'
That means that when I run `bundle update rails` it will update the patch version of rails. Our Gemfile.lock has the following entry for rails:
rails (3.2.11)
By using the '~>' specifier it means that we can easily update our gems patch versions without worrying about API changes between major and minor versions.
For completeness it's also worth mentioning that gem 'rails', '~> 3.2.0' may not necessarily update Rails to the latest version when you run `bundle update rails`. The reason is if there is another gem which requires a gem that does not match the requirement of the latest version of Rails, it will backtrack until it finds a compatible version across the board.
So you will want to double-check the specific version that you end up with. If it doesn't work you probably can fix it with `bundle update rails something_else`, unless you have a true conflict in which case you will have to do some spelunking yourself, and perhaps the Rails hotfix should be in place in your app first.
Thank you, in fact I had the 3.1.2 version specified in my Gemfile. So I changed that to 3.1.10 and now bundle show rails shows that version as installed so I think I'm in the clear.
If you have an invite you're able to play in Australia. I don't own an Android but a couple of my friends are playing already. There was an article in the Sydney Morning Herald about the game too but I can't seem to locate the link at the moment.