Ruby on Rails is an open source framework for web development. It is based on certain guiding principles, such as Don't Repeat Yourself (DRY) and Convention over Configuration. It was initially released in 2005 and is gaining popularity. It supports Active Record Pattern - Object Relation Mapping (ARP-ORM), plug-ins (mountable engines) and active resources. Rails also supports a RESTful application design based on client-server relationship and the Agile approach to software development.
PHP: Hypertext Preprocessor is a popular server side scripting language for web development. It can be embedded with HTML code to fetch dynamic webpages. PHP is a cross-platform language and supports most web servers as well. Event driven coding is supported, and exhaustive database connectivity with popular database management systems is provided. The unique session IDs that can be generated using PHP are useful for development of eCommerce web portals and tracking user behavior.
Rails is a development platform or MVC framework for Ruby, and PHP is a scripting language. In an ideal scenario, a proper comparison would be between Rails and a PHP framework, such as CakePHP. However, since the end result of both is a web application, website or webpage, a few comparison points between Rails and PHP are described below.
PHP was built as a web development language, and, for many years, continued to be a preferred choice. On the other hand, Ruby was a general purpose language with no domain specialization. However, with the growth in adoption of Ruby on Rails, there has been a movement towards greater acceptance of it for web development.
PHP uses less memory resources, and hence PHP code is usually faster in execution, but Ruby on Rails requires less code. Due to its nature, PHP can result in lots of unmaintainable code. Its object-oriented nature makes Ruby on Rails more maintainable and scalability can be achieved. Automation of mundane tasks is also possible in Rails.
PHP is language made for the web. It has ready-to-use features, such as header function, MD5 etc. In Ruby, libraries have to be loaded and namespaces need to be defined. Both the languages have sufficient libraries available now. Ruby developers find it easy to integrate Gems using Ruby Gems or use any other third party library.
Server-side deployment and hosting are easy in case of PHP, thanks to the LAMP environment. Setting up background jobs using Ruby on Rails is much easier. Similarly, reusability of code using 'engines' in Ruby on Rails makes its use favorable. Ruby on Rails implements ARP-ORM by default. For PHP, ARP-ORM can be implemented by using various MVC frameworks and libraries available.
Rails documentation has been growing quickly, but PHP has an advantage here due to its early arrival. The advantage that Ruby on Rails has comes in the form of Convention-over-Configuration and the flexibility it offers to developers. Setting up a PHP environment requires initial configuration.
Rails has an integrated testing framework and tools such as ‘irb’ for streamlining web application development. Testing code is slightly more complicated in PHP, although frameworks such as CakePHP allow testing after specific code changes are implemented.
Due to its early bird advantage, PHP has a greater resource pool in terms of available developers and hosting services. However development support for Ruby on Rails is catching up fast.
With its large framework and library base, PHP has the advantage of seniority over Ruby on Rails. Otherwise, they both offer complete packages for web-development.