Rails : Deploy using GoDaddy.com - ruby-on-rails

I know this is a topic which is very delicate however the simple question is.... has anyone uploaded a rails app using godaddy.com and if so how did they do it. I'm literally clueless. This is my first time. I cannot use anything else due to my clients choice.

If you're looking for shared hosting, Heroku is your best bet. Although you will need to make some minor modifications to your application to fit this environment, the benefits are considerable.
I would not recommend using regular shared hosting, which is primarily intended for PHP applications, for Rails. You need a VPS at the very least, and if you're not prepared to manage this, you need a managed environment like Heroku or you'll end up in serious trouble.
For small scale or hobby projects, a 512MB VPS is usually sufficient to get started.
If your client is insisting on GoDaddy, Rails may not be a good choice for you. It does seem possible according to the documentation but you need to have the correct account type.

Related

Rails server that can compete with wordpress

So I have a lot of smaller clients that want more simple websites. This is very common and even more common is the mess of code that I get from their last developer who used wordpress. Since I am trying to hone my rails skills, I would prefer to just redo the site in rails. The biggest problem I've encountered though is server hosting costs.
It is really hard to convince someone to go from their $5-10 a month cost for their servers to $34 with something like heroku or amazon EC2. So my question is how can I effectively use rails to rebuild these wordpress sites without incurring more costs on the client?
Some options I have thought of are:
Find a shared web hoster and figure out how to get rails on it (doesn't seem like a good idea due to lack of rails support by these host sites like godaddy, host monster, etc).
Use a scalable server like EC2 and put multiple apps on it, and since most of the sites are low traffic it should balance out to a reasonable cost.
Submit to the popularity of wordpress
Some of the example sites are a store, blog/store, and a marketing website.
There's nothing wrong with honing your skills on the job but you also have to be considerate of the clients needs.
Just because you'd prefer to redo the site in rails doesn't mean that's the best thing for the client. If their site is running smoothly on their cheap hosting do they really want to increase their monthly outgoings to support a platform that they didn't want in the first place.
There's very little functionality the client might need that they can't get from WordPress and the examples you gave certainly don't suggest rails is necessary.
I'd suggest keeping them on WordPress and seeking clients who need a rails developer.
Here's my 2 cents. Stick with WordPress. If you're trying to hone your Rails skills, start a side project. But if you try to convert these sites to Rails, you're going to be incurring a lot of cost to the client (your time), and hosting. As you mentioned, hosting a Rails app costs much more.
It's hard to justify that cost just to hone your skills unless you could convince the client that, in the long term, they will save a great deal of money, either by the reduced overhead on code maintenance, or they're trying to do something that Rails can do that WordPress genuinely can't. With the ubiquity of high quality WordPress plugins, you'd really have to dig for a functionality that you absolutely cannot do with WordPress that you can with Rails, though there are some.
Sure, Rails is much more pleasurable to work in than WordPress, but if these sites are for clients, you can't just factor in developer happiness. You need to be adding value for your customer, and building a site in Rails because it's more fun to work in adds little value for your customer.
Honestly, if they're a few static sites, then keep them on WordPress. You could start new clients out on a Rails-based CMS (or a custom solution, if you can sell them on it and you're sure you can make it worth their money), but my advice would be that it's not worth the cost to you or to them to build the sites in Rails just for the sake of building the sites in Rails.

What kinds of sites/apps is Heroku best suited for?

Recently I have been dabbling in Ruby on Rails by learning it through Michael Hartl's tutorial and various other resources on the net. I'm quite impressed with it and have a number of ideas for applications I want to write with it.
Heroku seems like a really nice option for deploying these applications - it's smooth and extremely easy to set up, which is great. Something that I'm not clear on, however, is the type of projects Heroku is best suited for. This might seem like a subjective question, but keep in mind that I am asking from an entirely technical aspect (for instance, "Heroku is most used for X because of Y"), trying to figure out which option would work best given the type of projects I'm interested in.
With that said, I have three basic types of applications I'd like to write:
A personal site with a blog front page and several content pages
A community site that acts as a repository for Illustrator ".ai" files with forums and possibly a wiki
An image host with forums
For each of these projects, which would be best: Heroku, a traditional host with RoR support, or a different cloud host with RoR support?
Heroku is designed for any kind of webapp really. It is designed to scale well depending of your needs.
If you want to host user files you will have to use an outside service like amazon S3, because heroku is not designed to upload files directly in the application. Which is a good practice.
http://devcenter.heroku.com/articles/slug-size
http://devcenter.heroku.com/articles/s3
http://aws.amazon.com/s3/

References for web application scalability and deployment best practices

I find it easy to find resources on amazon/online to learn new frameworks/programming languages. However, when it comes to web app deployment, I find it really hard to find a single resource that explains all. Most of them just tell you what to do without explaining 'why'.
I just did my second rails app deployment with unicorn and nginx. Although I 'kind of' know what is going on when reading the tutorial, I would like to know more about the 'how' and 'why' of the steps that were given.
In short, I would like to read books/articles/tutorials (hopefully all-in-one) about best practices for web app deployment, and how to scale/load-balance your app when it gets more traffic (and hopefully it the tutorial uses NGINX/unicorn setup).
Well, deployment and scaling are completely orthogonal topics, so I don't think you'll find an article/tutorial that covers both.
As for deployment, you better automate your work. When you deploy to 100+ servers, the last thing you want to do is to do it manually (fetch from git, migrate db, restart servers, etc).
Capistrano - very well known and adopted tool for deploying Rails.
Vlad - another tool that gains more attention lately.
Chef - very powerful tool for server management. Several top Russian sites use it.

Heroku vs DotCloud vs Duostack vs other cloud/PaaS providers (Rails and non-Rails)?

We have a very simple function (We look something up from a third party database and return an answer. It's literally five lines of code.) We would like to offload this task from our main server because we expect a high volume of traffic for this one function and would like to optimize it.
We are thinking about testing the promise of many cloud/PaaS providers, where they handle scaling and performance responsibilities.
We're most interested in Rails environments, but are curious to hear experiences from others about any company in the space.
Here are the PaaS companies we found that supports Rails:
1) Heroku
2) DotCloud
3) Duostack
Questions:
1) Do you know of other Rails-specific companies? Also feel free to list non-Rails companies since we're interested in following other companies in case they eventually provide Rails support.
2) How has your experience been with these companies?
Foreword and disclaimer: I work for DotCloud; so the following might be biased. You've been warned.
DotCloud could be interesting for you if you like the following features:
run something else than Ruby (what about some Django or Pylons code talking with your SQL DB? Or even some PHP blog like WordPress or Drupal, using the same user authentication database?)
experiment with databases like Redis or MongoDB, or background ruby workers, without paying for add-ons
SSH access, crontab access (without requiring an add-on)
cheaper workers (I didn't come up with this one; some of our users coming from the Heroku world told us that workers were insanely expensive there)
Duostack is indeed very nice if you want to mix specifically Rails and Node.js. I've been told that they had awesome auto-configuration facilities.
Finally, if you only plan to do Rails and nothing else, ever, you might as well stick with Heroku since they've been in that business for a while, and are probably more mature than the first two of the batch.
Shameless plug: DotCloud is offering a beta test drive; so if you want to see what it looks like, just subscribe to the beta and you will be quickly enough be able to see for yourself. Heroku has a free tier as well.
You could add EngineYard in the mix - but i'd be inclined to use Heroku as my first choice, Dotcloud second (it's a newish product, and is very good but still in development)
If you want more control over your app/servers or want to run it on any cloud or your own infrastructure without having to download/deploy anything, you can try Cloud 66 (www.cloud66.com)
Disclaimer: I work for Cloud 66
A lot has changed on the scene since this question was asked. We recently looked into these services and settled on Heroku, but even more recently decided to continue managing my own deployments directly on EC2. Here are some points not mentioned in the other answers.
Heroku
Now supports much more than just ruby
Has really great-looking support for PostgreSQL
Uses LXC for process containers, like DotCloud
DotCloud
Is now Docker, and is putting a lot of manpower into developing docker.io
Doesn't have a free tier any more
I'm not sure if DotCloud is using Docker internally or not, since the docs say explicitly it isn't production-ready yet.
Our decision to stick with plain EC2 was motivated by the fact that it's cheaper and affords a lot more flexibility. For example, we use local-only http servers behind our public server to do some of our request processing, which doesn't really fit into the PaaS models out there. We would have had to reimplement all our back-end components as redis workers, and pay for them as additional dynos. The fact that Amazon RDS now supports PostgreSQL was also a compelling factor. Incidentally, Amazon has a full-stack PaaS offering as well, Elastic Beanstalk.
Just stumbled upon the question. There are similar ones around here. The problem is also: The PaaS scene is changing very quickly. New vendors are popping in every week or so.
Nowadays OpenShift from Red Hat might also be mentioned here as a Ruby PaaS.
OFFTOPIC + shameless plug: I have compiled a list of PHP PaaS here: http://blog.fortrabbit.com/comparing-cloud-hosting-platforms/

What is the best server stack/configuration for Rails SaaS app

What would you suggest as the best server stack for a dedicated server which needs to host Rails SaaS application (not a lot of traffic but need to keep options open for future).
Regardless of your application, you're probably going to want certain standard components:
nginx/passenger will work for small apps or large apps. You should use it.
Unless you have a specific reason to use something else, you should use MySQL since the vast majority of the Rails community uses it and you will be able to get better support.
You should have memcached running right away, even if you don't use it for much yet. You're going to want to be able to seamlessly add caching as it's needed.
You're going to want to have a process for setting up a new server that is fully automated. That way, if you need to spin up a second server, it's trivial. If you ssh into a box to configure it, this means that if you need another server in a pinch (or the first server gets corrupted), you're going to need to remember all the things you did. Not a good place to be in an emergency.
You should be on the very latest version of Ruby on Rails, and upgrade frequently. Keep an eye on deprecations and changes and make the suggested changes as early as possible. When Rails 3 is released, use it.
Engine Yard, where I work, uses an open source tool called chef to manage our automated deployment solution. That's probably a good option.
As ever with a question that broad, it depends. Some things to think about:
What does the application do?
Does the application use any database vendor-specific SQL?
What are the availability requirements?
What are the performance requirements?
How much data will there be?
Which server stacks do you or the person who will be administering it have experience of?
What is your budget?
One thing I can say with complete certainty is that you don't want to be using Windows because Rails work best on a Linux/UNIX stack.
A lot of it depends on your needs. If the model isn't very complex and/or your traffic is fairly low, you can probably get away with apache, mongrel, and sqlite on some *nix.
If you start seeing performance issues, you can add some memcached into the mix, upgrade (relatively painlessly) to mysql, and use a different server (passenger/nginx).
There are also alternate ruby implementations that have some performance boosting changes. Rubninous and jRuby come to mind.

Resources