🌐
Reddit
reddit.com › r/laravel › comparing laravel to ruby on rails
r/laravel on Reddit: Comparing Laravel to Ruby on Rails
June 23, 2024 -

As a new web developer who has only dabbled in both PHP and Ruby I've been weighing Laravel and Rails. I came across the following on r/rails about a longtime Laravel user's decision to leave Laravel for Ruby on Rails. I was wondering what the Laravel community's thoughts are on his reasoning.

https://www.reddit.com/r/rails/comments/1dkcegr/im_switching_from_laravel_to_rails/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

🌐
Reddit
reddit.com › r/rails › how does rails compare with laravel in 2023
r/rails on Reddit: How does Rails compare with Laravel in 2023
May 12, 2023 -

https://news.ycombinator.com/item?id=35896954

Read this yesterday and am curious about where Rails is in comparison these days. It seems like the framework is still simple, focused, productive, etc. But I'm curious about the ecosystem — just look at the Ecosystem menu item dropdown here! https://laravel.com/

There's an awful lot in here — hosting, team management, starter kits, eCommerce integrations, admin panels, built-in search, etc etc.

I'm not a PHP fan, so not interested in the Ruby vs PHP thing. Curious about Rails vs Laravel in terms of ecosystem.

thanks!

Top answer
1 of 2
7
Laravel is cool. It's very much batteries-included (you have to buy the batteries though sometimes). The folks I know who use it, particularly with LiveWire, really enjoy it in terms of a way to get something up and running quickly. Also, the flavor of PHP you write in Laravel is different than regular PHP in ways that I can point out when I see code samples but that I can't describe. It's more ergonomic. My general experience with any sort of batteries-included thing is that it's super cool so long as I don't need to change anything. Then it becomes a giant pain. Most of my work is internal line-of-business applications where getting from 0 to 1 quickly is less important than getting from 1 to 10. I can be wildly productive with Rails without being particularly constrained, and I can write a Rails codebase that's going to age gracefully instead of becoming a giant mess in 1.5-3 years. I don't yet have a great sense of how easy that is to do with Laravel, and frankly none of the things Laravel does well are better enough that I feel any particular need to explore it. If I had to work on Laravel for work (I'm a consultant, and usually don't get to pick the tech stack), I would and it would probably be fine. But I'm not going to seek it out. On the other hand, if I knew someone who was a Wordpress developer (for example) who wanted to break out of the Wordpress ecosystem, I'd 1000% recommend they look at Laravel.
2 of 2
1
I worked with Laravel few years ago. In Laravel, I only miss the CRUD generator. In Laravel, if I use third party Crud generator, usually the generated code is not minimal. In Rails, with scaffold, generated code is simple and Ruby code is easy to edit. Rails is my first choice, and Laravel or Codeigniter is my second choice.
🌐
Reddit
reddit.com › r/rails › i'm switching from laravel to rails
r/rails on Reddit: I'm switching from Laravel to Rails
June 21, 2024 -

I have been using Laravel since version 4 in 2013. Over the years, Laravel has evolved significantly. I initially chose Laravel over Rails due to its favorable position in our local job market. In 2015, I started building our own business using Laravel. Today, that business is the largest job board in Iran, serving over 3 million job seekers and 100,000 employers. Laravel performed well for us, until it didn't.

Over the years of maintaining this application, I have come to some conclusions, both in terms of code and team dynamics. Our entire product/tech team has never exceeded six people, including designers and product managers. During the COVID-19 pandemic I managed everything solo Product/Tech wise.
I have also been part of projects using Spring, Symfony, and Django. We were among the first adopters of Vue.js back in 2015, starting with Vue 0.12.

I told you the story to picture the pains I've been encountering during maintaining a Laravel application over 9 years.

Sticking to framework defaults
Over the years, I have realized that adhering to framework defaults at least 90% of the time is the best way to ensure easy upgrades, address security concerns, adopt new technologies, and hire new developers. Even though there are architectural trade-offs, the benefits outweigh the drawbacks.

Laravel changes opinions and defaults
Laravel tends to change its opinions with every major version or introduce new ones. Most of the time, these new opinions permeate every part of your application. In contrast, Rails sticks to its architectural roots. The "Rails way" remains similar to how it was 10 years ago, allowing you to join a project that respects this method and perform easy upgrades, onboard new developers, or add features seamlessly. Laravel, however, is not like that.

Over the past 10 years, Laravel has promoted various combinations, such as (Vue + Laravel), (Laravel + Inertia), Livewire with class components, and Laravel Folio + Volt. This is just on the framework side. The community, including the framework authors and the crew (like Laracasts), has promoted multiple nonsensical architectural ways of writing software. Many of these make no sense, such as repositories with active record models, repositories as service objects, service objects with models, service objects with models and repositories, and service objects with in/out DTOs.

I found my way early on, but this inconsistency makes it hard to find new developers and maintain a consistent codebase. Every community has its challenges, just like the ones I mentioned, but I have never seen DHH, for example, seem confused about how to write Rails software. Look at the source code for first-party Laravel packages like Breeze Scaffoldings, Laravel Fortify, Laravel Telescope, Laravel Sanctum, Laravel Spark, Laravel Pulse, and Laravel Horizon. Each of them has different choices on how to write software, which is precisely the problem I’m facing. Even the framework owner seems inconsistent on how to write business software or near-end user components with Laravel. There are too many choices, and some are abandoned while others are equivalent to each other.

Laravel is somehow merchant of complexity
People are always eager for new content, new tools and new approaches to writing software. Developer tooling authors often build their business plans around this demand, which isn't necessarily bad, but it does have side effects. This is the problem when a dedicated company including a full-time team works on a set of open-source products: the framework is designed for revenue after some years. Basecamp does a ton of marketing with Rails, but I respect how they keep their commercial software separate from their open-source extractions.

Part of these new opinions on how to write software stems from trying to attract everyone and every method. In recent years, Laravel has turned into a sort of food court. Need MVC? We've got that. Think Phoenix LiveView is cool? We create Livewire as a first-party package and promote it everywhere in the docs. Is the React handler+view in one file hyped? We create Laravel Volt + Folio. People love React and Vue but find writing Next and Nuxt hard? We create Inertia. We have responses for every question and consideration.

Yet, from a developer's point of view, you have to keep up with every new cognitive load you're faced with. Nearly all of them are just noise, with only a few, like Inertia, offering something valuable. Sometimes, the old ways are completely abandoned. Although not entirely without backward compatibility, they are neglected and receive no care. Laravel has somehow become a merchant of complexity, constantly introducing new paradigms that add to the cognitive load for developers. Then, they sell courses, books, commercial packages, and companion software around these new paradigms. I'm really okay with this part, but it significantly affects community packages and standards, developer skills, and codebases, this is the part I'm not OK with.

Enough philosophical things—let's talk about code.

ActiveRecord is years ahead of Eloquent
Eloquent has mimicked ActiveRecord but hasn't brought over the most important parts. ORM is a key component of a battery-included framework, and Eloquent has received nearly zero upgrades since 2015.

Part of this is due to Ruby's influence, but that part is manageable. Eloquent lacks several crucial features, such as self-validating models, commit callbacks, and models acting like aggregate roots. This isn't just about putting validation rules in Laravel form requests, controllers, or models; it's about validations being an important part of the model's existence. They fundamentally change how you define behavior, states and solve problems. In Rails, it's much harder to put a model in the wrong state because of self-validating models, models acting as aggregate roots, and model callbacks being first-class citizens.

With Eloquent, you have to wrap nearly every multi-model interaction in an explicit transaction block, and I've paid the price (even financial price) for missing it, which is easily available in other ORM libraries. Eloquent behaves like a Row Gateway during writes, making it easy to corrupt data states in different parts of your app.

The syntax in Ruby for defining validation rules on a model, accessors, or callbacks is far better than the options available in PHP. I love Active Record pattern because of its progressive behavior during development, but I've reached a point where I define rules, getters, setters, casts, fillable, and guarded attributes independently, instead of defining them for a single field in a data mapper ORM with poor syntax that combines object behavior definition with metadata. How can a battery-included framework that offers multiple ways of building front-end! not offer optimistic locks or commit callbacks for models? I mean callbacks, not event listeners, which introduce the highest level of possible indirection when scanning code—another problem in itself.

Service providers are PHP bullshit
Rails has the advantage of not requiring dependency injection (DI) or inversion of control (IoC), so you don't struggle with IoC on simple tasks like saving an input field to the database. You just see business code in your implementation. In contrast, Laravel uses facades and extensions to address this, but they feel like hacks. As a result, you're left with pages of configuration files and limitations on extending functionality.

Blade is better than ERB
I like ViewComponent in Rails, but even ERB with ViewComponent doesn't match the capabilities of Blade, especially when it comes to components. The XML-like syntax for writing templates is really nice.

About Routes, FormRequests, Policies and Middelwares
When you write a CRUD operation in Laravel, you might end up defining nearly five classes: two Form Request objects, one controller, a policy class, and a simple model, each existing in a separate folder within the application. One of my experiences in programming is the importance of keeping related things together. Rails still has this problem, but you don’t necessarily have to define five classes for a single feature. Using Livewire? You'll need even more classes. Despite this level of abstraction, it's not necessarily enough; there are tons of business-logic-filled middlewares in every Laravel app.

Rails' controller lifecycle callbacks, together with concerns, are a blessing. You still write simple Ruby code without defining a dozen layers just to save a form to the database and introduce some side effects. Route model bindings seem very attractive at first sight, but in a real Laravel project, you either see tons of query logic in explicit route model binding definitions leaking through service providers, middlewares, and route files, or you find yourself performing repetitive find queries for the same fetch logic in hundreds of controllers, passing them to view files each time. Alternatively, you might invent a new class/service/action for these jobs, which every implementation differs from every other Laravel app you've seen.

When learning Laravel, the documentation heavily promotes route model binding, but it seldom mentions that they are not nested through current user and that you MUST define policies for controlling access to them. Just search for sites using Livewire JS file on the internet, create accounts on those sites, and you will likely find many that allow you to access other users' resources by changing parameters in URL.
In Laravel, the routes definition file sometimes contains more logic than your controllers and models combined. Read the documentation for gateways and policies on the Laravel site; they offer dozens of methods for doing the same thing—the scroll is longer than the HTTP server implementation file in Go.

Form Requests advertise nothing about abstraction. Open a standard Laravel project, and you'll see repeated code for rules and authorization everywhere. I've developed the same app for nine years, and believe me, this simple thing annoyed me the most. The annoyance was doubled when they introduced Form Requests. Rails, by default, uses request-lasting query caching for fetching ActiveRecord queries. Open a Laravel app, and you'll see repeating queries in middlewares to control payment walls, bans, etc. There’s still no clear way of sharing data from middleware to controllers. You have dozens of options: singleton classes, request merging, request extending, etc., but no one uses them effectively. At some point, you don't even know what middlewares are bound to your route, and you get surprised.

Laravel controller methods nearly just function as input-output handlers, which is okay, but combining them with dozens of layers and concepts to perform a simple before_action callback directly in the controller or the parent controller is excessive.

Rails has much less noise by not having these features. Rails carefully advertises the way it does things and carefully chooses what not to include to prevent becoming feature-bloated. This is a feature not a bug.

Rails Documentation
At first sight, Laravel seems more documented than Rails, which is true when considering a beginner's perspective. However, the feature of Rails writing the real documentation alongside the code itself is really, really nice. You figure out by Ctrl+B and feels really productive.

Hotwire is better than Livewire
I really believe that simple MVC with strict resource controllers is the best way to decompose an app with hundreds of screens. However, Livewire somehow prevents this. You write your logic alongside some JavaScript-related code, and changing the UI significantly impacts your backend implementation since they live together in the same component. This leads to a lot of dead code in Livewire for long-term maintenance projects, and edge cases are really hard to fix. Additionally, the Livewire way of writing software is deeply specific in its own environment. For instance, I can discuss about models, controllers, before_action, or middlewares—concepts that exist in nearly every framework or library. However, developing software in Livewire, involves a very specific and unique implementation that doesn't translate well to other approaches.

I've also found that 90% of JSON API exposures are just response format changes, which is strongly utilized in the Rails community and is much harder and nearly impossible when using Livewire. With Livewire, you end up writing multiple controllers that do the same thing. Sticking to this design may seem hard at first, but it really keeps the application maintainable and understandable in the long run.

Additionally, I really wish development teams would recognize the value in the Shape Up method. One of its key components during cycles is progressive development. If you want to implement a feature, you can start by writing dead simple HTML and then implement the functionality, wiring them together and adding interactivity later. I think Rails encourages this behavior by the way Hotwire works, and it is really wise.

I also believe that creating TRULY VERY high-fidelity UIs with Hotwire is not possible or practical, but I have accepted the trade-off. Most of the time, I struggle to create those UIs even in environments like Vue. Overall, I really like the progressive approach of Hotwire and the low footprint it introduces, but I think Alpine.js is a better alternative to Stimulus.

Rails developers seem to be more skilled in Rails' front-end offerings because it recommends a single approach through Hotwire. In contrast, Laravel offers multiple stacks, making it harder to find a full-stack developer. At least in our local community.

Notifications and Mailer
Laravel allows defining notification classes that can have multiple destinations: email, push notifications, database, webhooks, etc. Rails has mailers, but they are not designed out of the box with the same semantics as Laravel's notification system. I really wish Rails would make this section more unified by introducing web push notifications in Rails 8. The same lack of important features applies to background jobs and writing console commands.

First party packages and Ecosystem
At first sight, it seems Laravel has tons of first-party packages that do a lot of things, but I really think they create much more noise. The Rails community seems more focused on promoting building actual applications, while the Laravel community seems more focused on developer tooling (not developer experience), keeping developers busy figuring them out. That's why you see more end-to-end apps written in Rails on GitHub. Many communities have had their hypes, but relatively few have produced projects like GitLab, Postal, Mastodon, Redmine, and so on compared to other types of open-source projects.

That's the real power of an ecosystem. You have the option to see what real-world code looks like by exploring some of the best end-user-facing applications. I was around the Laravel community for more than a decade and never found a project that improved my knowledge as much as something like Postal or GitLab did. The Laravel community is warm and welcoming, but they are heavily focused on developer tooling.

I don't know if I've successfully transferred my point, but Rails and Django might be the only full-stack frameworks that give me the feeling that you can be cool and show off by building or teaching how to create end-to-end applications, not just by creating libraries.

The only true masterpiece in the Laravel ecosystem, for me, is Forge. It is truly excellent and frees your mind from many concerns. As for libraries, they already exist in the Rails community or are some fancy additions to my workflow. The real pains I experience are those mentioned above.

Conclusion
In the end, I'm really thankful to Laravel. It allowed me to make real money as a young developer who was just eager to build a good life through the internet. However, I have chosen to continue my path with Rails. I feel happier and more productive when I write in Rails compared to Laravel. While I can customize Laravel to my needs to a certain extent, as I mentioned earlier, there is great value in sticking to defaults. Alternatively, if you don't want to leverage the offerings of a battery-included framework or they require extensive customizations, you might consider using very verbose and explicit languages like Go. However, these customizations can make tasks like finding a new developer or performing upgrades more challenging.

This is in no way a recommendation for the job market. Job market dynamics vary from place to place and are not usually influenced by personal preferences or personal considerations like the ones I mentioned above or being a one person framework. Typically, the most hyped technology is the one that commands the highest salaries. From this perspective, TypeScript/JavaScript is currently more hyped than anything else on the planet.

🌐
Reddit
reddit.com › r/rails › has anyone here tried laravel to make a comparison?
r/rails on Reddit: Has anyone here tried Laravel to make a comparison?
June 12, 2024 -

I believe my biggest frustration with Rails at the moment is in the frontend. Hotwire is wonderful, and there are initiatives like Stimulus Components that help a lot in putting together a "UI kit" that makes the frontend as easy to use as the backend.

But it doesn't come close to, for example, a Laravel Filament: https://filamentphp.com/

I have the impression that the Laravel ecosystem is more concerned with the frontend, making a perfect union between the Rails philosophy of avoiding Javascript but at the same time providing easy and beautiful solutions instead.

🌐
Reddit
reddit.com › r/agency › laravel vs. ruby on rails
r/agency on Reddit: Laravel vs. Ruby on Rails
May 16, 2024 - On the other hand Laravel has way more community momentum and I can imagine onboarding junior developers is way easier with Laravel. ... I am estimating around 30% longer compared to rails.
🌐
Reddit
reddit.com › r/rubyonrails › if you like laravel you really like rails
r/rubyonrails on Reddit: If you like Laravel you really like rails
February 19, 2022 -

My new boss is trying to convince me that PHP is the stack we need to start using. He praises the niceties of new PHP and how good Laravel is ( I was a PHP dev before Laravel was big).

I think if you really enjoy Laravel, what you are saying is that you really like rails! I hope we don't end up using the counterfeit and stick to the original web framework

Find elsewhere
🌐
Reddit
reddit.com › r/rails › making the switch from laravel to ruby on rails
r/rails on Reddit: Making the switch from laravel to ruby on rails
April 7, 2022 -

Hey guys, I haven't done web dev for a while now and just got back into it only to see laravel has changed significantly and is headed in a different direction than, I thought it would.

This got me thinking into making the switch from laravel to ruby on rails after seeing a couple of videos about rails however, what really gravitated me towards that decision is ruby, after looking at some code snippets, I seem to really like how clean and readable the language is.

To anyone who made the switch do you guys think it's worth it?

🌐
Reddit
reddit.com › r/rails › rails is the best web framework i have ever worked with. rails is ❤️❤️❤️.
r/rails on Reddit: Rails is the Best web framework I have ever worked with. Rails is ❤️❤️❤️.
May 12, 2023 - Trying to find an equivalent in a JS environment is basically impossible ... Prisma is not bad, but obviously not as mature as ActiveRecord. ... I’d say Laravel is equally as good as rails is.
🌐
Reddit
reddit.com › r/learnprogramming › php/laravel vs ruby on rails. which one is more worth learning now?
r/learnprogramming on Reddit: PHP/Laravel vs Ruby on Rails. Which one is more worth learning now?
April 6, 2022 -

I have interest in both of these languages / frameworks. So far I'm proficient in frontend but need a backend with my React projects. What I mean by worth learning, is which is more popular / widely used in companies? I've seen job listings with either or both. So I can't really tell from that standpoint. Asking people with more experience in the industry than me.

Also, what would you prefer and why? (This is more of a subjective question)

Top answer
1 of 2
3
Of those two I'd suggest Rails, though neither would be my top recommendation for a first backend framework. PHP is... a horrible language. It's badly designed in so many different ways. This classic article gives a breakdown of the many reasons PHP is a nightmare. In the old days, it was still worth using because the PHP+Apache runtime environment was so convenient. But in the modern world where Node, C# and Go all have high performance built in webservers and docker makes spinning up a server repeatable and easy, that advantage is gone. The only reason I'd focus on PHP is if there's a specific company you want to work for that uses it (Meta and Slack are two particularly high profile PHP shops, though both use the Hack dialect that mitigates many of PHPs flaws). Ruby is a much nicer, more consistent language. But Rails does have some real issues. Rails is an extremely opinionated framework. There's a 'Rails way of doing things' for almost every situation. Developers who learned Rails first do have a tendency to struggle when confronted with other frameworks that are less batteries included. That being said, Rails is still wildly used and is very easy to learn. If you wanted my opinion, my stack ranking of BE frameworks to pick up would be: Java/Spring Boot Javascript/Typescript/Node/Express ASP.NET Core Go with native HTTP server Python/Flask or Python/FastAPI Ruby/Rails Any other Java framework Any other Node framework Python/Django Anything in a 'obscure' language like Scala, Clojure, Elixir or (god help you) Haskell Any PHP framework. Anything in C++ But that's as much based on my language biases (I really like Typescript, C# and Go) as it is on skill marketability.
2 of 2
2
PHP is a lot more popular in job market, unless you live in some weird bubble, but you can just check that yourself. I'd prefer neither, mostly because i prefer not working on old code but developing something new, and php and ruby are not really the hot stuff right now. But if i'd have to choose i'd rather write ruby, it's pretty nice. Ruby is pretty much just rails jobs, php has a more variety other than laravel.
🌐
Reddit
reddit.com › r/laravel › php/laravel to ruby on rails
r/laravel on Reddit: PHP/Laravel to Ruby on Rails
September 1, 2021 -

Hi all,

I've been a professional PHP developer nearly 15 years and have worked with just about every PHP framework, cms or platform you could think of in that time. While I really like Laravel, Symfony and even WordPress to a point - I'm wondering if its time for a change of scenery.

For me, it seems like there'll always be demand for RoR developers and the salaries offered reflects that too. My brother is a long-time Ruby dev and abolutely loves getting to use it every day, so it got me thinking. I don't think its going anywhere anytime soon either (GitHub, Gitlab, Shopify, Netflix, Airbnb etc all use it)

Has anyone here has ever considered (or taken the leap) to moving out of PHP and into Ruby on Rails? If so, how have you found it? If not, why not?

🌐
Reddit
reddit.com › r/learnprogramming › as of 2024, ruby with ruby on rails or javascript with node/express is better/in demand?
As of 2024, Ruby with Ruby on Rails or JavaScript with Node/Express is better/in demand? : r/learnprogramming
January 6, 2024 - PHP + Laravel FTW. ... Ruby and rails is completely dead at the moment, only JavaScript/typescript with frameworks or JS + python/java for backend.
🌐
Netguru
netguru.com › home page › blog › laravel vs rails: which framework to choose for your next project? (updated)
Laravel vs Rails: Which Framework to Choose for Your Next Project? (UPDATED)
September 9, 2025 - According to Google Trends, Laravel quickly became more popular than Rails, which is quite obvious as there are more PHP developers than Ruby. Rails on the other hand, has enjoyed very stable interest which has decreased only slightly over the ...
🌐
Nevinainfotech
nevinainfotech.com › blog › laravel-and-ruby-on-rails
Laravel and Ruby on Rails 2024: A Comprehensive Comparison
October 24, 2024 - Comparison of Laravel and Ruby on Rails in 2024 evolves the implementation of the framework. They are comparatively capable enough to resolve the specific needs and desires of the web application on the site server.
🌐
Reddit
reddit.com › r/rails › framework of choice for large "real-world" applications
r/rails on Reddit: Framework of choice for large "real-world" applications
September 28, 2022 -

Let's pretend you're working at a startup to build the next Airbnb. Your team is very small, it's just you and maybe 1-2 other developers. You need to build an application with the following requirements/assumptions:

  • User facing "CRUD"

    • 10+ domain models (eg. House, Guest, Cart, Booking, etc)

    • Lots of forms w/ custom validation

    • Pagination so you can display 1k+ records in tables/infinite-scroll

    • Some areas of rich interactivity (eg. Host availability calendar) but mostly presentational UI / forms

  • Admin panel

  • Background jobs / tasks

    • Scheduled - Run specific job at point in future (eg. Remind user in 3 months about upcoming trip)

    • Recurring - Run cron jobs for repetitive tasks (eg. Run daily report at midnight)

  • Emails / Notifications

    • 10+ custom email templates (booking confirmation, upcoming trip reminder, etc.)

    • Usually sent via background job

  • File uploads / storage (eg. Users upload pictures of house)

  • Auth

    • Users login to book

    • Hosts login to manage their home listings

  • Testing

    • Primarily integration / e2e tests of core flows

You need to choose a framework:

  • Rails (v7)

  • Laravel (v9)

  • Django (v4)

  • Phoenix (v1.6)

Which framework do you choose?

Assume your team knows every framework equally well. Which one allows you to start quickly and still be maintainable 2-3 years down the road while continually adding new features?

Given this is r/rails I expect some bias (myself included!) but I'm curious to hear from those of you who have built applications with other frameworks and what sort of tradeoffs you encountered compared to Rails. Thanks!

🌐
Flatirons
flatirons.com › blog › ruby-on-rails-vs-laravel-which-is-better-2024
Ruby on Rails vs. Laravel: Which is Better in 2025? - Flatirons
Ruby on Rails was created almost 20 years ago and has come to be known as the framework on which a good number of popular apps are built. So, the chances of its creators pulling support anytime soon are very slim. On the other hand, although Laravel is a relatively new language, 12 years is also a long enough time to have attained stability, as a dependable development framework.
🌐
Reddit
reddit.com › r/django › ruby on rails vs django vs laravel (startup edition)
Ruby on rails vs Django vs Laravel (Startup edition) : r/django
September 15, 2024 - For example, out of the box Laravel gives you teams, 2FA, and queues. They also provide a variety of ways to easily setup your dev environment whether you prefer to use containers, VMs, or local. Cherry on the top is first party solutions for things like deployment, e-commerce, and soon hosting. More replies More replies ... My first job uses RoR, and I love it. Ruby is such a wonderful language, it's a shame it hasn't caught on more widely. ... No good tutorials for Rails?