00:00:16
So this is the topic that I'm going to talk about: the story of Rails. I'm Ratnadeep Deshmane on Twitter, and perhaps that will be easy to pronounce as well. I come from Pune, India, which is pretty close to Mumbai.
00:00:36
Moreover, I'm one of the speakers from outside the country. I love traveling and work remotely for a couple of clients as a consultant. Apart from that, I have a passion for mechanical keyboards. If remote travel or mechanical keyboards are among your interests, please find me, and we can have a long discussion.
00:01:06
By the way, the Call for Proposals (CFP) for RubyConf India is open, so please consider attending.
00:01:15
Before I dive into the story of Rails, I want to share a personal experience from my first visit to the U.S. I came here in 2015 for the Madison, Wisconsin, Ruby conference.
00:01:29
During my travel for this conference, my flight was from New York to Madison, Wisconsin. I had to clear customs in New York first. Knowing this, I thought, why not spend some time exploring New York before heading to my conference? So, I called a friend who offered me a place to stay, and I decided to spend a week working remotely before heading to Madison.
00:02:00
While spending two weeks in the U.S., I was quite impressed by several things, especially the cars and automobiles. The museums were also fascinating, showcasing science in a wonderful manner. This made me think that someday, Detroit could be an interesting place to visit, so I made plans to visit my friend in Detroit.
00:02:22
I also spent time in Chicago, where I visited the Museum of Industrial Sciences, which was quite remarkable. After Chicago, I went to Detroit, where I stayed for a week and visited the Ford Museum, which left a lasting impression on me.
00:02:49
Remembering my school textbooks, I reflected on the historical events I had studied, such as the Boston Tea Party. Being so close to Boston, I decided to spend the weekend there. While in Boston, I realized that during my earlier trip to New York, I couldn't visit Washington, D.C., so I planned a week to explore the museums there as well.
00:03:24
Finally, while still in the U.S., I learned about a conference in Austin focused on Ruby programming, which I couldn't miss. I spent time in Austin and later visited San Francisco and San Antonio, where RubyConf was being held.
00:03:54
In total, during my six months in the U.S., I visited about ten different cities, working and experiencing the culture in each one.
00:04:08
Now, focusing on the story of Rails, it's essential for new learners to understand why Rails came to be. Knowing the reasons behind various features, their design philosophy, and how they evolved helps in grasping Rails more easily. It's been over ten years since Rails became significant in India, and its growing complexity can be overwhelming for beginners.
00:04:49
Here, I will share a couple of stories that delve into the Rails framework, hoping these insights will help you understand it better.
00:05:11
Let's start with the culture of Rails. While preparing for this talk, I revisited a manifesto written by DHH (David Heinemeier Hansson), which is available on the official Rails website. It emphasizes that Ruby is designed for developer happiness, and Rails strives to make development enjoyable.
00:05:25
One practical example highlighting this idea is the difference in user experience when quitting interactive consoles in Ruby versus Python. In Ruby, typing 'exit' or 'quit' will terminate the session easily, while Python requires more precision with input. This reflects the Ruby philosophy of making things simple and intuitive.
00:06:18
Another interesting aspect of Rails is illustrated with query method calls. Even in earlier versions like Rails 2.3, using methods like 'find_by' allows for easy querying without explicitly defining methods beforehand. This demonstrates Rails' meta-programming capabilities, making it easier for developers to perform complex queries simply and effectively.
00:07:35
For those who may not know, in Rails, you have access to convenient methods for retrieving elements from an array, such as `array.first`, `array.second`, etc. However, there has been some debate in the community regarding these methods. Some feel they are unnecessary since traditional indexing works fine.
00:08:13
In response to skepticism, DHH introduced the '42' method, returning the 42nd element from an array. This alludes to the significance of the number 42 in popular culture, specifically from 'The Hitchhiker's Guide to the Galaxy.'
00:08:55
The core philosophy of Rails is reflected in its principle of 'least surprise.' The goal is to align with developers' expectations and preferences, ensuring a smoother development experience. Ruby's culture is often likened to humor; if Ruby is a language of expression, Rails is a playful storytelling medium.
00:09:48
Moving on to the aspect of community, the Rails community is vibrant and supportive. Back when I began learning Rails in 2011 and 2012, I created a website called violetruby.com to gather reasons why people loved Ruby. It serves as an extensive collection of testimonials celebrating Ruby's virtues.
00:10:37
One of the standout testimonials, added by Konstantin Hesse, declared, 'Ruby is one of the best open-source communities ever.' It's heartwarming to see community appreciation highlighted across various aspects of Ruby and Rails.
00:11:09
Moving forward, I'd like to discuss some significant features. One of the notable features is 'Bundler.' In earlier versions of Rails, managing plugins and dependencies was cumbersome. With the advent of Bundler, we achieved better dependency management, making it easy to specify gem versions.
00:11:50
Previously, the manual editing of dependencies and compatibility issues posed challenges during installation. Bundler fixed these issues with dependency resolution, ensuring that gem versions are compatible and avoid conflicts. It allows developers to specify dependency requirements clearly.
00:12:42
Moreover, Bundler's introduction enhanced the handling of multiple Ruby versions on a single machine, simplifying the dependence resolution process across applications. The 'Gemfile.lock' ensures that the applications maintain their specified dependencies.
00:14:00
The modularity aspect of Rails also stems from early collaborations with the Merb framework. This collaboration led to features that allow developers to selectively use parts of Rails that fit their applications. It offers the flexibility to omit components not required for specific projects.
00:14:49
Rails 3 became the first version to incorporate Merb's modular design philosophy. The modular framework not only improved usability but also ensured that updates came more seamlessly, thereby fostering ecosystem growth.
00:15:24
Shifting to asset management, the Rails framework revolutionized the way we handled front-end assets, especially with the introduction of the asset pipeline in version 3.1. This made compiling assets faster and manageable.
00:15:54
Security has been a primary concern for Rails developers. In March 2012, a hacker highlighted severe vulnerabilities by showcasing exploit methods to the Rails repository without proper acknowledgment from GitHub. This prompted an urgent need for more robust security features within Rails.
00:16:34
The incident led to the introduction of strong parameters, which aimed to prevent mass assignment vulnerabilities. It taught the community the importance of validating incoming parameters carefully to ensure the integrity of the application.
00:17:10
In Rails, developers learned to use strong parameters to permit specific attributes, ensuring sensitive attributes remain protected. The sessions often get inundated with questions regarding how to handle tokens and parameters, indicating a crucial learning curve for beginners.
00:17:52
Despite Rails being opinionated, it offers significant built-in security features. These include encoding all data inputs and outputs as UTF-8 and providing protection against SQL injection attacks by default.
00:18:35
In conclusion, I've shared various stories and insights about the culture, community, and features of Rails. It has evolved significantly, emphasizing the need for developer happiness and a supportive community.
00:19:11
As time passes, both Matz (the creator of Ruby) and DHH continue to influence the Rails community positively. For those who have grown fond of Rails, I encourage you to fondly revisit the nostalgia of its earlier days.
00:19:48
Thank you for your attention.