First, let us understand why you want to choose a specific technology only. All technologies are developing within the community, tools, libraries and applications. As a business owner, you may want a technology which can last many years beyond the creation of the project. As a developer, you want a technology that will stay long enough, so you can get a return on investment. Business owners or developers will often base their decisions on their colleagues and the community based on technologies that are highly advocated. In this article, we will review the pros and cons of PHP as well as Ruby on Rails. We will discuss the comparison of PHP and Ruby on Rails with common topics such as scalability, maintenance, performance, costs and support.
Apples vs Oranges
Comparing PHP with Ruby on Rails is not right. PHP is more popular than Ruby on Rails, only because Ruby on Rails is a web development framework and not a programming language. Ruby on Rails is the language behind the Ruby on Rails development framework, and PHP is the programming language used to write web applications. Ruby on Rails is comparable to Zend Framework, Laravel, Codeigniter, CakePHP, Symfony 2.0, and many other PHP-based web development frameworks. In order, to understand why there is so much popularity with Ruby on Rails, it's best to first view people's searches.
The above Google Trend graph shows that not all PHP web development frameworks match the number of searches made for Ruby on Rails (in blue). In fact, the only web development framework that is developing in the PHP world is Laravel. So why is Ruby on Rails so popular?
Well, a big part of building a web application is deciding which libraries you will use, how to organize your application, and many other factors. To date, many PHP projects still do not use a mature and proven web framework. Many PHP developers would rather create a new PHP framework, rather than using popular frameworks such as Zend Framework, Symfony2, and so on. Due to the complexity of an application, as with all the frameworks you will spend a lot of time learning how to use it. Thus, Ruby on Rails attempts to simplify the learning process of its framework by using configuration conventions - in other words, you (the developer or the business owner) have little choice to run, organize, or even host the application.
This may seem like a good thing, and for the most part, that's really why Ruby on Rails is so popular. However, since then, many PHP frameworks have recognized this, and are following the development stages of Ruby on Rails. This may be why the growth of the Ruby on Rails community has stagnated in recent years. Now, while other web frameworks are displayed in a small percentage, you should keep in mind that PHP is web-based. So just about everything you write in PHP will run on the web, while in Ruby you will not have the choice of code that you can write to develop a web application.
Easy Maintenance and Scalability
Whether PHP or Ruby on Rails, both have the ability to evolve. However, because of the amount of resources Ruby uses over PHP, scalability issues will arise much earlier in your application lifecycle. Scaling an application in Ruby on Rails versus PHP will affect very common problems. Thus, the scaling will be based on how the application was designed. There are also online services to help you troubleshoot scaling issues, such as using Amazon Elastic Beanstalk or Rackspace Cloud Sites. The situation becomes very different when you want to scale, to scale. When a developer does not have the experience to scale an application, the most common route is to find online articles, tutorials, and other resources to learn. So when it comes to scaling a website, there are a lot of resources written for PHP developers, while Ruby on Rails has a smaller pool of information.
Regarding the easy maintenance, it depends on the organization of the web application.
As long as the developer uses a web development framework, its maintenance becomes a lot easier. PHP offers a wide variety of web development frameworks, all these frameworks are designed for specific purposes, while Ruby has a limited number of selection.
Speed and Performance
Since PHP is a programming language, and Ruby on Rails is a web framework, you have to take performance with a grain of salt. The point of using a complete web framework is to gain productivity at the expense of speed. So let's put some perspective on that.
Here is a table of a very simple "hello world" application. You can see below how fast PHP is pure when it comes to requests - remember, it's a language designed for the web. However, once you start introducing the popular full-featured Web frameworks, performance drops and queries per second are closer to the Ruby on Rails number. In fact, a popular Laravel Web framework works less well than Ruby on Rails. As a result, most benchmarks are useless because the performance and speed of an application is much more than the language or the web framework. For example, the database system, caching mechanisms, and network delays can add a slowdown from 10x to 100x. The design of the application is therefore much more important than the language or the web framework that underpins it.
In general, Ruby and PHP are some of the slower languages ??to choose from, but Ruby takes more resources than PHP. With the given performance issues, both languages ??have taken steps to help reduce the slowness that arise in everyday applications. Both languages ??have multiple runtimes, their main runtime, such as MRI for Ruby, and Zend Engine for PHP. The use of these runtimes is rather slow compared to other languages. There have been several attempts to solve these problems. There has been work to run both languages ??on the JVM, which Java uses as a runtime. The reason to run over the JVM, is not only speed, but also to use all that Java has to offer. However, the fact that they run on the Java virtual machine does not guarantee a faster application. There are things on the Java virtual machine that run more slowly. So, if you need your application to run as fast as possible, there is also Rubinius for Ruby and HHVM for PHP that are designed to run your applications faster, to the detriment of the limited support of the platform. For example Rubinius and HHVM do not support Windows. They do not support everything that the main runtime environments provide. You will need to modify parts of your application to make sure that it can run on these high-performance runtime environments.
Scarcity is a fundamental concept of economics. So, if you have ten PHP developers for each Ruby developer, and the project's role depends on the language, there will be a clear winner in the costs. PHP, because of its strong competition, has lower prices. As a business owner, if your motivation is cost based, this should be a very useful incentive. There's the saying, "You get what you pay for," but that does not mean you have to pay the same amount for the experiment in hand. PHP has a very easy learning curve. On top of that, many PHP developers are new to programming in general and programming web applications in particular.
On the other hand, Ruby is a harder language to learn, so people who choose this language already know how to program. It is very natural for a PHP developer to switch to Ruby on Rails and have his experience in the PHP world transferred to Ruby. In fact, many Ruby developers were PHP developers. So why would developers go to Ruby on Rails? Well, that answer would be the same for almost any other programming language other than PHP. In all other languages ??(except PHP), the language will limit you to the code you can write, as well as what is available. Thus, it becomes a common method of creating Web applications in this language. For example, C # has ASP.NET, Python has Django, Node.js has Express, Lua has Orbit, and the list continues. So, to put that in perspective, let's say you had the choice to engage with a massive audience, or to be among the selected professionals who share the same goals. It would be logical for the most renowned applications to be built on the languages ??that have the largest audience, so PHP is the target language. Applications like Wordpress, Drupal, Magento, Facebook, are just a small fraction of the many applications available, which are written in PHP.
When it comes to hosting your Ruby on Rails applications, costs can increase very quickly. You will have a harder time finding accommodation that supports a Ruby on Rails app, and big brands are not cheap. They start at $ 40 and go quickly to $ 500 or more. There are even companies that offer free hosting but that charge a lot of fees when you need to expand your hosting needs. Almost all hosting companies that provide Ruby on Rails hosting will also provide PHP hosting. Some of the cheaper hosting providers provide outdated and outdated versions of Ruby (the language), thus limiting you to older versions of Ruby on Rails. They also run your Ruby on Rails application as a CGI, which is the slowest way to run your web application.
Resources and Support
PHP has a very large pool of developers and online resources. Ruby on Rails also offers many online resources, but there are many more resources available for PHP. However, many of the resources you find for PHP and Ruby on Rails are often outdated or wrong. It's the nature of relying on the Internet for resources. There have been initiatives in both communities to create definitive guides. For example, PHP has phptherightway.com, which will help newcomers avoid common pitfalls, such as security, installation, multilingual practices, coding, testing, etc. While Ruby has a large selection of podcasts and professional video content.
There are also websites such as stackoverflow.com that provide more up-to-date resources. On stackoverflow.com, for each Ruby on Rails question, there are five PHP questions. The most voted question has 480 votes for Ruby on Rails while the most voted question of PHP has 2660 votes. A strange aspect is that there seems to be many more questions about Ruby on Rails, then Ruby the language. There are also bizarre revelations in Ruby on Rails because it's more about movement than language or code.
In fact, its uniqueness has gained so much popularity that Ruby on Rails has specialized communities such as railsgirls.com, a website designed to help women create online applications. They travel the world encouraging women to get involved in technology. On the PHP side, there is also phpwoman.com, which has been around for more than 7 years, but lacks the viral traction produced by railsgirls.com. And that's the thing to remember, so much of Ruby on Rails' fame was born from the community, starting with very dedicated people, she created something that has such a strong market value. It does not matter if it's slow, or there are better solutions, people see and want to be part of the community.
Both languages have fast development times, due to being an interpreted language. For Ruby on Rails, there was the famous video "Create a blog in 15 minutes", which attracted many web developers of all languages. This video sets the bar on what a Web framework needs to do to quickly build applications. Since then, the following videos have been produced in other languages and frameworks, like creating a blog in 20 minutes with PHP CodeIgniter. Another thing known for Ruby on Rails is scaffolding. Scaffolding is the process of generating code based on certain known parameters. Scaffolding is a very powerful tool to help put your application on the market. FuelPHP provides a lot of similar features that the Ruby on Rails scaffold provides.
Tools and Editors
This is an area where PHP exceeds Ruby on Rails. PHP offers a wide range of publishers and tools. When it comes to benchmarking, profiling and debugging, PHP succeeds in having more options. It is wrong to assume that there is something that Ruby on Rails can do, that PHP can not do. However, there are things that do both well, and the two are not doing as well, or may not be accomplished as easily.
Most of the concerns about PHP limits are related to hosting costs. For example, to do some things in PHP, you need an extension called pecl. Many shared hosts will have a handful, but you can not install your own. So, if you wanted to install yours, you had to rely on a virtual private server, a cloud server or a dedicated server, which are just as expensive as Ruby on Rails hosting because it needs the same requirements. Thus, most PHP software from the PHP community must rely on older features and reduced functionality because they are designed to work in shared hosting environments.
A background task is something that many applications will want to do in order to preserve the user experience by providing fast response time. These are some things that could take a long time to complete. For example, if your user has tried to delete a large amount of data, the application may run in the background and the user does not have to wait for that action to complete. There are also different ways to run a background job. You have threads, which may or may not be a good idea, because you can lock your entire application. There are also asynchronous tasks that run but are delayed or can execute small parts of the operation at a time. Other solutions include running a task on a different process, a server, or groups of servers.
For Ruby on Rails, you have ready-made Threads, but there is a plethora of Gems (Libraries) to consider that are designed to work with Ruby on Rails. Workling, Starling, Resque and many others will help you design your application so that you can run a long process, such as an email, a calculation or even a scheduled task.
However for PHP, the image is very different. There is an extension called pthread, but it is not designed for a "fire and forget" task type, such as an email. Instead, you are forced to make some decisions, which you could do in Ruby on Rails. The first is to design your application correctly to work with a task management system. For example, Gearman is a language-independent framework for job processing. It connects in all languages ??and all your application needs to do is communicate with a workload, such as an email.
So even though background tasks can be very simple in Ruby on Rails, they usually result in poor performance or applications that can not scale. The potential solution that many developers choose is something like Gearman (which can also be used in Ruby on Rails). This brings us to the difficulty of delaying a complicated step of your application at a later stage, when it becomes a problem. The other option in PHP is to continue to send a request to the web server, and this request will check a task to do. This is normally done by a time-based scheduler, such as cron, chronos, launchd, crony, and so on. Time-based job schedulers are used the most when it comes to PHP applications.
A template engine is a way to create and reuse user interfaces based on dynamic information. There are more than 50 template engines in PHP, not to mention the fact that you can use PHP as a template engine. On the other hand, Ruby only has several useful template engines. In the context of Ruby on Rails, there are only 2-3 template engines that would work well with this framework.
So, remember that there is a lot to consider when building an application and if there is really something to remove from this article, it is not a bad solution, it is just that language is the least of your worries. Here is a quick summary of the items you can reference:
Large pool of developers
Easy to learn
Ruby on Rails
Fast to the market
Easier to find skilled workers