What Is the Best Host for Ruby on Rails Development
What Is Ruby on Rails Hosting?
Ruby on Rails is a popular, but demanding, development environment. So getting the right hosting for it is critical. In this article, I will explain Ruby and Rails and show you how to get the right hosting for it.
Compare Ruby on Rails Hosting
What Is Ruby on Rails?
Ruby on Rails(sometimes referred to as RoR) combines the simplicity and versatility of the object-oriented Ruby programming language with Rails, a framework designed to give programmers a quick and easy method for building and deploying online applications.
Do You need a framework?
Do you need a web development framework? Well, yes and no. If what you are doing is pretty trivial, a framework might be overkill — it is the digital equivalent of using a wrecking ball when a hammer will do.
However, if you are doing something with any amount of complexity (such as security, login handling, complex transactions, and so on), you can take advantage of the provided boilerplate to make your development process easier.
While most hosts provide basic support for Ruby on Rails applications, there are some hosting companies that specialize in it.
A Web Application Framework
As technology has evolved, so, too, have customer expectations. A company whose website is devoid of now-ubiquitous features like real-time customer service, customer account management, and online ordering may soon find itself devoid of online customers.
Real Time Data with Ruby on Rails
In the past, it was difficult to keep up with that kind of constantly-changing information enough to make it readily accessible to customers. But the technology to automate those processes and provide live data is more accessible now than ever, and one of the best ways to do so is by using Ruby on Rails to build web applications.
Not only does Ruby on Rails streamline the development process, the products that you can create using RoR tend to be visually appealing, dynamic, and user-friendly.
History of Ruby on Rails
Ruby on Rails (or just “Rails”) is not a programming language, but a web application framework. Rails is written in Ruby, a general-purpose, object-oriented programming language, though Rails does extend Ruby with its own semantics.
Ruby was created in the mid-1990s to be a more streamlined, easy-to-use scripting language as an alternative to other languages like Perl or Python. Its creator, Yukihiro Matsumoto, intended Ruby to be not only productive but fun, and to help its users “to enjoy programming, and to be happy.”
The Introduction of Rails
The Rails framework was created in 2003 by David Heinemeier Hansson for use with Basecamp’s (formerly 37signals) flagship product (of the same name).
Heinemeier Hansson then extracted Rails and released it as an open source framework in 2004 to allow website owners to easily create applications optimized for ecommerce, social media, and more.
Ruby on Rails: A Quick Technical Specification
Why Ruby on Rails?
Ruby on Rails is a free, open-source framework with extensive documentation and a passionate and helpful community. It’s used by scores of popular websites in a variety of applications.
Some of is big-name users include discount sites LivingSocial and Groupon, project management giant Basecamp, and even social media titan Twitter all rely on Ruby on Rails to create and manage content for their websites.
The framework provided by Rails allows for applications created in Ruby to interface not only with software on the server, but other network applications and users accessing content on the site itself.
Twitter, for example, created a Rails-driven queuing system, Starling, to sort and organize incoming tweets in real time (the company has since moved its queue and other “middleware” tasks to Scala, but continues to rely on Ruby on Rails for front-end updates).
Who Uses Ruby on Rails?
Groupon and LivingSocial use Ruby on Rails as part of their messaging systems as well; applications designed to track orders, process shipments and send out daily updates to millions of customers are all handled by the framework.
The customer service app Get Satisfaction also chose Ruby on Rails to build their app, which almost 50,000 businesses now use to build their online communities.
Why Startups Love Ruby on Rails
Why did they choose Ruby on Rails over other programming languages/web development frameworks? While many dynamic websites use PHP, it is often better suited for more simple, basic websites such as blogs.
If you need to build a more robust website or web-based application that accesses a database, Ruby on Rails can be a more effective solution.
Ruby on Rails has become popular among web startups because it’s efficient and concise, which enables programmers to build web applications much faster. Its speed and efficiency also make it ideal for prototyping web apps to identify issues before development.
Ruby on Rails Components
Ruby on Rails doesn’t just stand on its own, but works with other components:
|Model View Controller (MVC)||Controls the application|
|Yet Another Markup Language (YAML)||Markup language to structure data|
Ruby on Rails’ MVC Explained
In your readings on Ruby on Rails, you’ll see references to this framework being an MVC framework. What does this mean exactly?
MVC, which stands for Model View Controller, is a principle that divides the actions of a web application into three sub-systems that cooperate together to carry out the necessary work:
The Model maintains the relationship between your objects and the database. Handles things like validations, associations, transactions, and so on. In Ruby on Rails, this is the ActiveRecord, which is implemented using a library of the same name
The View presents the app’s data appropriately. In Ruby on Rails, this is implemented via the ActionView library
The Controller handles the app’s traffic, as well as the search for and organization of the data that is requested. In Ruby on Rails, this is implemented via the ActionController. The ActionController sits between the ActiveRecord (model) and the ActionView (view).
RubyGems: Lots of packages available
Plugins and libraries are excellent tools for extending the feature set and functionality of your Rails application, but installing them and managing the dependencies can become tedious — in some cases, a simple app may have upwards of 20 dependencies.
RubyGems, the package manager for the Ruby programming language. RubyGems provides a standard format for distributing Ruby programs and libraries (which are called Gems). Each gem includes the code itself, documentation, and the specification.
Gems Make Your Web App Shine
With gems, you can easily manage the libraries you use for your apps. In addition to specifying the Gems themselves, you can specify the versions you want to be used with your app (you can list a specific version or generalize and say that any version after a specified minimum will work).
Some gems are ultra simple, but others are extremely powerful. Once such example is Mongrel, which is capable of serving websites powered by Ruby on Rails without requiring the use of any other web server (if you plan to use Mongrel, please be sure to use Mongrel2, instead of the deprecated original).
Essentially, RubyGems makes it really easy for you to install, manage, and update your libraries and the dependencies on which your apps run. For even more power, consider Bundler, a manager for your Gems.
YAML (or YML) and Your Databases
Ruby on Rails using YAML (which stands for “Yet Another Markup Language”) to configure and compile your app’s databases. You will see YAML files with either the
.yml or the
YAML, as its name implies, is a markup language (like XML and HTML) used to structure data within a file. Unlike Ruby, where you have to load the YAML library, Ruby on Rails uses YAML by default — as a matter of fact, the YAML file needed to configure your database goes into the root directory of your application.
As such, you’ll want to ensure that your web host’s server is YAML-friendly (which it should be if it is promising support for Ruby on Rails).
Finally, you’ll probably discover that YAML is easier to read than other markup languages used for data — obviously, this partially accounts for Rails’ famed “slowness.”
Ruby on Rails Maturity
While Ruby on Rails was once seen as the new kid on the block, RoR has been around long enough that you can consider it a stable option. You can rest assured that you are not using a language that will be defunct in the near future.
There’s One Right Way To Do It
However, do note that Ruby on Rails can be considered an opinionated framework. There is definitely a right way to do things, and RoR does its best to guide you into doing things the way the RoR development team thinks you should. The end goal is to promote the use of best practices during the software development process.
Granted, Ruby on Rails allows you to overwrite its built-in functionality with ease, so if you really want to, you can do things your own way. The downside to doing this is that you miss out on the efficiency offered by doing things “100%” the Rails way.
Ruby on Rails Testing
Unlike many other languages, where the tools needed for thorough testing were seemingly added as an afterthought, Ruby on Rails has paid attention to the needs of software testers from the beginning.
In some cases, developers will port Ruby’s Test-Driven Development (TDD) philosophy into Ruby on Rails. What this means is that the developer, before they write a single line of code, writes up all of the unit tests that should pass if the software gets coded correctly.
The Downsides of Using Ruby
With all that said, we do want to make clear that there are downsides to using Ruby on Rails (after all, there is no one framework that is perfect for everybody and for all circumstances). Here are some things to consider before you begin building your RoR app.
- Setting up a development environment
- Slow startup and runtime speeds
- Complexity of applications
- Difficulty of finding Ruby developers
- Debugging Ruby on Rails applications
- Frequent updates.
Ruby on Rails applications are best developed on macOS. You can certainly build apps on a Windows/Linux machine, but it will require much more work on your part.
If the latter options are the only ones available to you, think very carefully about how much work you want to put into your development environment so that you can work with Ruby on Rails.
It certainly is not the only web development framework available, so you might consider finding something that works better for you.
Slow Speed During Startup and Runtime
One of the most persistent perceptions of Ruby (and by extension, Ruby on Rails) is that apps built using this framework see slow start-up speeds.
This problem becomes more and more obvious as you add Gems to your application — before your app can run, all of its dependencies must load. If you have a lot of Gems involved, you will see it affect the startup time of your app.
Furthermore, Ruby on Rails is famed for slow runtime speeds. This is especially true when compared to Go or Node.js or statically-compiled languages like Scala and Java.
Ruby on Rails Complexity
Ruby on Rails applications are, by nature, elaborate. They are nowhere near as simple as a WordPress site (which suffers from bloat itself). Such complexity might be difficult for someone with less technical expertise to manage.
Furthermore, you might find yourself needing to manage multiple Ruby environments — while packages such as RVM (Ruby Version Management) or its competitor, rbenv, make this easier, this is still an additional management step.
Ruby Is Great If You Think Inside The Box
RoR is great if you are doing things where the framework shines (such as apps that rely mostly on creating, reading, updating, and deleting records and not much more).
If you step outside the somewhat narrowly-defined box, such as interfacing with an existing database or connecting with an API that isn’t defined with JSON or XML, you might find yourself working really hard to work around the established procedures RoR has built in.
Difficulty in Finding Ruby Developers
Is Ruby on Rails Too Easy To Use?
Because Ruby on Rails does so much of the work for you, you might be lulled into a false sense of accomplishment. Rails is hard to learn, and in times of debugging, it might become painfully obvious how much hand-holding Rails does.
This is not a reason to avoid using Rails, but more of something that you should keep in mind when working on your application.
Ruby on Rails is updated relatively frequently. While this can certainly be a good thing (fixing bugs, patching security issues, and issuing new features are all boons), updates always present the possibility that your app, which was working just fine, suddenly breaks.
Such updates also puts pressure on your web hosting company — web hosts try to balance the line between updating to the latest versions available and guarding against breaking changes. As such, you need to manage the update process for your app while also keeping tabs on the update process of your web host.
Selecting Ruby on Rails Hosting
Because of Ruby on Rails’ popularity, many general web hosting companies provide support for Ruby on Rails as part of their standard hosting packages.
This means that you will not have to worry too much about compatibility, and when making a decision as to which host is the best fit for you. You will continue to focus on things like resource allocation, domain name inclusion, access to GUI-based control panels (like the cPanel), and so on.
VPS vs Shared
This availability, however, is new. Ruby on Rails web apps can be extremely resource intensive, but as it (and Ruby) matured over the years, performance, reliability, and ease of deployment have gone up.
Furthermore, use of RubyGem does not require root access to your server instance. Where you once had to opt for a VPS hosting plan or dedicated server for your app, you might be able to choose a more inexpensive option, such as a shared plan.
Getting Your Ruby On Rails Site On Track
However, even if your site requires dedicated support for application development/deployment, you can readily find it, since hosts specializing in Ruby on Rails hosting remain popular.
Ruby on Rails hosts may optimize their servers to run it more efficiently, provide pre-installed features, continuously update to the latest version, and provide expert support.
Some, like Site5, have positioned themselves as the “ultimate” in Ruby on Rails hosting by building and deploying their own network and server management systems using the framework, including a Ruby on Rails-driven billing system and customer account manager.
There are several things you’ll need to consider when choosing a Ruby on Rails hosting provider:
- Your database
- SSH tunnels
- Customer Service
- Technical support
We’ll look at these factors in more detail.
MySQL databases are the most commonly-used databases with Ruby on Rails. Because many providers come standard with MySQL databases, you probably will not even have to pay your web hosting provider extra for specialty databases (such as PostgreSQL, which is also used often with RoR).
You might also consider looking for hosts that offer SSH tunnels for secure transfer of data when it comes to your RoR app. This is especially important when your app receives data or notifications from a third-party app or service.
While setting up SSH tunnels is a relatively simple process, the downside to this is that SSH tunnels tend to be a premium feature and included only in VPS/dedicated plans (though this is by no means a hard and fast rule).
Customer Service and Technical Support
Because RoR is so popular, there are a large number of resources devoted to this framework on the internet. You can likely find the answer to your question with just a simple web search.
But what happens if you run into a larger issue with your web hosting due to your RoR app? Will the tech support team at your web host claim that such “custom scripts” are outside the scope of their support services? If you think this might be an issue, check your potential provider’s terms of service before you finalize your purchase.
Web Host Providers and Deployment Solutions Affiliated with Ruby / Ruby on Rails
There are two application deployment solutions that are affiliated with Ruby or Ruby on Rails that we want to mention: Phusion Passenger and Heroku.
Phusion Passenger, which you may see referred to as mod_rails or mod_rack is a web and application server that was originally designed to support RoR apps and utilizes your choice of Apache or NGINX.
It has since grown to support any of the Ruby web development frameworks, as well as Python and Node.js. This is useful if you are using multiple languages to create your apps.
There are currently two variants of Passenger: Enterprise and open source. The former is designed for businesses who have a large number of users, need high performance and reliability, or both. The former is free and a great option for smaller projects.
We also note that Phusion Passenger is, according to the current Ruby on Rails development team, the “preferred deployment setup” for RoR apps.
If you are even a bit concerned about the performance of your RoR apps, Phusion Passenger claims that it is capable of improving Rails’ performance and reducing its memory consumption by 33%.
In addition to Phusion Passenger, we wanted to mention briefly Heroku, which allows you to build, run, and scale your web applications easily. Heroku counts among its staff Yukihiro Matsumoto, the creator of Ruby.
Heroku was originally developed to support projects compatible with the Ruby-based platform, Rack. Since then, Heroku has grown from being an exclusively Ruby environment to become a major cloud platform as a service (PaaS) supporting Java, Node.js, Scala, Clojure, Python, PHP, and Go.
Heroku is supremely easy to use, and if you configure an integration with GitHub (assuming you are using it for version control), updating your Heroku app is as simple as pushing a commit to your repository. Your first dyno (or web server instance) is free of charge. However, for larger apps, Heroku can become relatively pricey.
If you are just getting started with RoR hosting, we recommend Heroku over Passenger (though once you gain your footing, you might consider moving your website over to Passenger since it will likely be the better option for you as your website grows.
For hosts specializing in Ruby on Rails, pricing is consistent with traditional hosting, with basic hosting starting at $5 a month and “high end” packages coming in at around $20 a month. When Ruby on Rails is an included feature, it generally does not impact the price of service, but as always, check with your host for details.
Furthermore, we strongly recommend that you opt for a VPS hosting plan or dedicated server. Not only is RoR a large framework, RoR apps are resource intensive when running. You can certainly make things work on a shared plan, but this might not be optimal when it comes to performance.
Ruby on Rails Summary
Ruby on Rails (RoR) is a powerful web development framework built on top of the elegant Ruby programming language. RoR uses commonly-available features, such as MySQL databases, and is supported by many web hosting providers.
However, not all support is created equal, so before signing on the dotted line and purchasing a web hosting plan, be sure that the option you are choosing will support your app.
My Choices: The Top Three Ruby on Rails Hosts
With the popularity of Ruby on Rails, many providers will claim that they offer hosting for your Rails projects. However, just because a web host claims that they support RoR doesn’t mean that they provide an optimal environment for your web apps.
As such, you will want to make sure that your web hosting provider treats Rails as a first-class citizen, not as an marketing afterthought designed to garner signups.
As we stated in our review above, the Ruby on Rails framework is updated often. This requires your web host to continue supporting updates, and if there is ever a mismatch or a breaking change, it is likely you will need your web host’s assistance to get your web apps fixed and online again.
Shared or VPS?
Additionally, Rails is a resource-intensive framework. The downside of having a framework that does so much on your behalf is that you will need storage space for these files, as well as larger bandwidth allocations for the file transfers that occur.
If you are set on using a shared hosting plan, a plan that offers an unlimited resource allocation would be beneficial. If you are opting for a higher-end plan where the host enforces usage limits, carefully consider your use cases before making your decision.
Furthermore, if you start with a shared plan, you may find that you need to upgrade to a VPS hosting plan or a dedicated server sooner than if you used other, more lightweight technologies for your project.
As such, you might consider purchasing your hosting from a provider that offers a variety of hosting options and the ability to migrate your site from one type of hosting to another without any (or with minimal) downtime.
My Choices: Good Ruby on Rails Hosts
With all that said, here are my choices for the best hosts to consider for your Ruby on Rails development.
HostGator is one of the largest providers of shared hosting services. The company’s entry-level plans are very affordable, its plans include SSH access, and your environment comes with Rails integrated by default.
The company has also invested heavily in Ruby on Rails support — you can see this explicitly in the cPanel they provide for the management of your website.
Another budget-friendly web hosting option that offers full-featured support for Ruby on Rails is Bluehost. You may know this company for its close ties with WordPress, but Bluehost offers much more than WordPress-specific hosting.
In addition to support for RoR, Bluehost’s plans include things like SSH tunnels in addition to the more typical offerings, such as generous server resource allocations, as well as bonuses like marketing credits.
If you are looking for a more advanced hosting option for your Ruby on Rails app, consider LiquidWeb, which offers both cloud-based and traditional Virtual Private Server (VPS) hosting plans, as well as dedicated servers.
Most of LiquidWeb’s offerings are managed, which makes this company a great fit for someone who wants the features, functionality, and power of a high-end web hosting solution but does not necessarily have the means to handle all of the server system administration alone.
Finally, if you are ready to take the plunge into more developer-oriented options, consider Phusion Passenger and Heroku (which we wrote about in the main article), or the cloud-based offerings from internet giants Google, Microsoft, and Amazon.
Using these options comes with a steep learning curve, but they are far more powerful and include more in terms of developer-oriented features than your typical web host provider.
Pros And Cons Of Ruby On Rails
Like any development framework, Ruby on Rails has good and bad points. Here are the main ones:
- Capable of speeding up the development lifecycle when it comes to developing web apps
- Based on Ruby, an elegant, object-oriented programming language designed to make programmers happy.
- Ruby on Rails apps are resource-intensive, so you might not see great performance if you opt for a budget-friendly shared hosting plan
- RoR meets the needs of a particular niche very well, but if you are outside this niche, expect to spend a lot of time implementing workarounds.
Other features in Languages and Frameworks
- .NET Framework
- Server Side Includes
- PHP 5
- PHP 7
Ruby on Rails Frequently Asked Questions
- What is Ruby on Rails?
Ruby on Rails is a web development framework built using the Ruby programming language.
- What is a web development framework?
A web development framework is a set of tools for speeding up and standardizing the development of a web application. A framework includes modules for handling common development tasks, like session management.
Ruby on Rails follows the Model-View-Controller (MVC) pattern of application development.
- What is MVC?
Model-View-Controller is a way of organizing application functionality. There are three component parts.
The Model defines the data structure, and communicates with the database. The View handles the presentation of content to the user. The Controller handles application logic.
In an MVC application, each group of data objects (users, blog posts, projects, products) has a single model that defines its properties. A single model then can have many views. Controllers handle the business logic, such as sending an email when a new project is created.
- Is Ruby on Rails open source?
- Does Ruby on Rails provide code generation support?
Yes. Ruby on Rails provides command line tools for quickly creating new Models, Views, and Controllers. This makes coding faster and more efficient.
- Does Ruby on Rails provide support for testing?
Yes. Rails comes with a testing tools and is compatible with a number of testing engines.
- What database system does Ruby on Rails use?
The most common production-level database is PostgreSQL, but you could also use MySQL, MariaDB, or MongoDB. The default database is SQLite, but that is only recommended for development.
- What operating systems does Ruby on Rails work on?
Ruby on Rails works well on most operating systems, including OS X, Linux, and Windows, but it’s best suited to deployment on Linux.
- What web servers does Ruby on Rails support?
Phusion Passenger is the most popular. It can be used as a module added on to Apache or Nginx, or as a standalone server.
Ruby on Rails also includes its own built-in web server, WEBrick. WEBrick is for development use and is not recommended for production.
- Can I run Ruby on Rails on a shared hosting plan?
Some hosts will allow you to do this, but it isn’t ideal. Ruby on Rails depends on the Ruby Gems system for dependency management, and your Rails application may need to download and install dozens of individual gems. You might not have permission to do this on a shared hosting account. It’s far easier to go for a VPS or dedicated server. As with any specialized requirement, ask your host what they recommend before you sign up.
- What are the alternatives to Ruby on Rails?
- What’s the difference between Ruby on Rails and PHP frameworks?
As with most languages, this is mostly personal preference. Ruby is a more powerful than PHP, but less widespread in hosting environments.
- Should I use Ruby on Rails or. Node.js?
Node.js runs on an event-driven architecture, which makes it ideal for real-time interaction. Live chat is a good example. Ruby on Rails is very good for data processing, so it is better for transactions and content management.
- Should I use Java instead?
Java is more portable across different types of hardware and software platforms, so if you are planning to package up your applications for deployment in a wide variety of places, Java will work in a way Rails will not. Additionally, it is probable that Java performs better under load than Rails, but Ruby on Rails is generally recognized as having the advantage of a faster development cycle.