8 ms·
An Overview Of Upcoming Ruby on Rails 7.1 Features Part 1
- ghiculescu 4y agoI have a feeling the big picture theme for 7.1 will be Docker. See https://github.com/rails/rails/pull/46762 https://github.com/rails/rails/pull/46762 for production, and https://github.com/rails/docked https://github.com/rails/docked for development.
- bradgessler 4y agoI’m stoked about this. It will make it even easier to support deployments to https://fly.io/ https://fly.io/ and other Docker platforms.
- brntsllvn 4y agoI was a devoted rails fan 10 years ago, but haven't looked back since full stack typescript. What's the general vibe on RoR nowadays?
- mplewis 4y agoRails is unfortunately much slower, and it’s quite coupled to the concepts of server-side rendering and OOP MVC. Making Rails work with a modern frontend feels pretty hacky compared to using a full-stack TypeScript framework.
- silversmith 4y agoI'll give you the slow, but "modern" frontend is a breeze. Webpacker (yes, the deprecated one, newer solutions are worse) handles React beautifully, and my graphql API definition gets seamlessly converted into typescript types. If anything, it often feels even easier than the code sharing I've experienced in node-land.
- samtheprogram 4y agoWhat are you using for GraphQL support in Rails? I was just looking into this yesterday.
- gls2ro 4y agoBecause maybe other people might read this: Rails are good enough to keep Shopify standing for another year of holiday sales. It seems to do that since 2006, so this alone demonstrates that Rails can support you a long way in your multi-billion business. And if you think: "yes, but Shopify has a big talented team," I feel the need to say back, "Well, when you are at Shopify business size, you will have it too. And Shopify used it when they were small too." I am not saying Rails fits everything, but if your business fits Rails, that is a great framework to build with.
- deleted 4y ago[deleted]
- ezekg 4y agoI use it daily for my company's API. It's still the most productive framework I've used, and I've used full stack Typescript too (i.e. the wild west).
- angelmm 4y agoAt the backend side, it makes easy to build websites. However, the UI layer is a bit complex to integrate with common framework libraries like Vue and React. Although, I still use it in some projects :)
- flakeoil 4y agoI'm not sure why you think it's difficult to integrate with Vue and React? Maybe InertiaJS [0] would help. [0] https://inertiajs.com/ https://inertiajs.com/
- iamveen 4y agoOMG thank you! So many times I've wished for a nice way to leverage React UI components within Rails without the nuisance of APIs, client-side state, etc. This appears to fit that bill nicely. Are there any glaring reasons one would not want to use this library?
- firecall 4y agoWould you use this instead of Hotwire?
- brink 4y ago> What's the general vibe on RoR nowadays? Most people that use it are fine and productive. Because of lazy evaluation, type issues persist though. Plenty of instances of trying to call string methods on integers, and array methods on nil, and Rails devs in denial that that's a big problem as the app continues to grow.
- randomdata 4y agoBecause of lazy evaluation or because the developers aren't properly documenting their work? A language with a formal type system essentially forces you to provide type documentation, but there is an expectation with dynamically typed languages that you will still document the types (probably in your test suite). Rails in particular makes this a core function of the framework to really push you to do so.
- pmontra 4y ago> Rails in particular makes this a core function of the framework to really push you to do so. This sentence surprised me. How does Rails do it? I never documented types in Rails and all was well, since 2005.
- randomdata 4y agoRails puts testing front and centre. Testing exists to document how features are intended to function and intended to be used (with the added bonus of enabling machine validation of the documentation). If a function accepts an arbitrary type, as is the case for all inputs in a dynamic language, one needs to document how the function is expected to behave when given x type. This is ultimately the same as type checking in a typed language. It just moves where the documentation is located. In that move, it is true that you often lose some strictness in the quality of the documentation. The developers who have an active hatred towards their co-workers may even forgo writing documentation entirely. But if you reach that point you've really got people problems, not technical problems.
- endlessvoid94 4y ago
- kshahkshah 4y agoI love TypeScript, but Rails has a wonderful ecosystem of libraries that just feels unbeatable for the backend. For some reason (hot take incoming) the JS community seems to hate working with each other and improving existing libraries. The Ruby community seems to rally around improving our libraries (gems) rather than reinventing them every year.
- deleted 4y ago[deleted]
- stevebmark 4y agoI take it you’ve never tried to install nokogiri?
- fknorangesite 4y agoI think this joke is five or six years out of date (maybe more?). Nokogiri has been a breeze to install for a long time now.
- dwheeler 4y agoI used nokogiri in Ruby on Rails in 2015 and since, and have never had a problem installing nokogiri.
- fknorangesite 4y agoExactly. It did used to be pretty finicky, but yeah I think it was 2015ish that those issues were fixed.
- Mikeb85 4y agoIt's been fine for years now.
- DiNovi 4y agowhat the heck is full stack typescript
- texxtxxet 4y agopresumably the "programming language(s)" part of the stack never changes between front and back end (it's typescript)?
- jcpst 4y agoWriting typescript code that compiles to javascript code that runs on a platform like node.js, and writing typescript code that compiles to javascript that run in a web browser.
- systems_glitch 4y agoStill using it, still highly productive. Not doing as much Rails work as I was 10 years ago but that's due to a change in the nature of my business. We still use it and Sinatra for the bulk of our Internet-facing and internal stuff.
- andrei_says_ 4y agoIf you use Sinatra take a look at roda. It’s fast and elegant.
- systems_glitch 4y agoI've been meaning to, several people have recommended it to me!
- chrisbaker98 4y agoSwitched to Elixir/Phoenix a few years ago and have never looked back. Absolutely a 100% improvement on Rails in every way (except the availability of work!)
- bboylen 4y agoWhat is so nice about Elixir/Phoenix? I understand that it is functional, which seems neat, but how does that translate into better app development?
- jamie_ca 4y agoI don't have a lot of direct experience, but one of the big draws is that by running on top of OTP you get a lot of stuff for free that you'd otherwise need to hit external dependencies for. Caching and background job management that usually see you pull in Redis are the common call-outs. Also, Phoenix LiveView is absolute voodoo magic the first time you experience it.
- pantulis 4y agoAlso, performance is mind-blowing. Still I am not really sure that the tradeoff makes it worth against non-FP frameworks a la Rails.
- dmak 4y agoElixir is great. I love it!
- jcpst 4y agoI revisited rails this past week for the first time in nearly 10 years. So much easier to quickly develop an app on than what I have been doing. I feel done with the whole SPA thing unless there's no other way to build the app. But now I'm looking at performance, and memory usage, and phoenix looks very appealing from that side. Now I think I should try pheonix, since both rails and phoenix are new to me, so I can compare.
- serverholic 4y agoI went from a full stack typescript project to a rails project and honestly I hate it. The Ruby language is great if you want to jerk off about how concise your code is but programmers end up creating overly abstract, write-only code. There’s so much magic that it’s hard to trace the code to see where stuff comes from. Abstractions are over-engineered. Serializers should be simple, async functions that are easy to step through and debug. Instead you have serializer relations? Delegates, etc. Don’t even get me started on updating rails itself. It’s a massive pain every time and you quite often see projects that are multiple major versions behind. In typescript it’s common to integrate multiple independent libraries into your own framework. This is great because if I need to update my database library I can focus on that specific part of the code. Updating rails means everything could potentially break. Oh and there’s no type system so good luck.
- redox99 4y agoWhat technologies exactly do you use in your full stack typescript?
- ithrow 4y agonodejs, postgres and react?
- alexcosan 4y agoI would be curious to understand what frameworks people tend to use on top of nodejs (or even react). I have not found a standard devise-like way of implementing authentication in nodejs. The usual recommendation I come across is to develop all from scratch (encryption, emails, session management), using something like Passport, outsource it and pay to some third-party or use a framework like nextauth which is very opinionated and hard to change basic options. It's not uncommon to see people changing between ORM or SQL builders all the time because it's hard to find one that works greatly - it seems like a common discussion online in node communities. I love TypeScript and would love to use it more extensively, but whenever I start a project, I quickly feel like I'm wasting so much time to do something that I'd hope a) it'd be very quick, and b) there would be some general agreement in the community on the right approach. It'd be great to compile what libraries to use, so you can very quickly put something together like you'd be able to do with Rails (e.g. devise, sidekiq, actionmailer, ...).
- bambataa 4y agoWhat are you using for full stack Typescript? I’m not aware of anything as batteries included as Rails.
- multiplegeorges 4y agoThere isn't one. RedwoodJS or Blitz come closest, IMO.
- e12e 4y agoAnd maybe deno+fresh? https://fresh.deno.dev/ https://fresh.deno.dev/
- Alifatisk 4y agoAny link to what you refer as fullstack typescript?
- andrei_says_ 4y agoI’ve never seen a more productive stack. Enables me to build complete apps as a single dev - which would take 2x-5x of the time and effort if using separate front end apps. Ruby makes me happy when I use it. Hotwire and Stimulus let me create front end interactions without a separate SPA. The ecosystem is mature and well maintained. Absolutely love it.
- jack_riminton 4y agoI second this sentiment exactly!
- methehack 4y agoRails is really a gift. It's so productive and works so great on teams because of the heavy conventions I think. And the ruby library ecosystem is insanely good. Libraries generally do what they say they're going to do and there are libraries for everything. I've wondered a lot about why this is. Heavy air time? Is there something about ruby? Every now and then I try some new web app framework that catches my eye in some new language and it always seems like its just getting started compared to rails -- and, it is. Worth noting -- rails works great API only as well. I bet Django is pretty good by now too of course, but Rails is really a fantastic tool well suited to task.
- sergiotapia 4y agoI recently tried Nextjs and Remix to explore other stacks since I've been using Elixir and Phoenix since 2016. You won't find the dev UX you take for granted in Elixir and Phoenix. Endless routing options, background jobs? Just install Squirrel and yadabadabadoo or just use AWS SQS(https://old.reddit.com/r/nextjs/comments/qspw4v/how_to_do_background_jobs_workers_tasks_etc/ https://old.reddit.com/r/nextjs/comments/qspw4v/how_to_do_ba...). What about solid backend processes? Can I call those in some kind of repl? In Elixir I can just go `iex -S mix phx.server` and `MyModule.foobar("test")` and bada bing I'm all set. What about logging? Wait I need to decide and configure a logger? I also need to decide and configure what to output to? What about a nice ORM? Prisma looks good, set that whole thing up from scratch, I need to await, but special considerations need to be thought of when iterating through a collection? Promise.all vs for..of? I iterated an array and want to save it to the DB but it's running out of connections (https://github.com/prisma/prisma/discussions/16884 https://github.com/prisma/prisma/discussions/16884)? Why do I even need to think about this? Really curious to hear your counterpoints to this because granted I am quite new to backend typescript.
- melony 4y agoThe counter argument is that you don't have to babysit any of those services. AWS/some other PaaS will handle everything for pennies. Unless you are working in a low cost of labor country, developer time is going to be more expensive than anything else. It will take very large scale/growth for infrastructure fees to exceed the total compensation of a decent US staff engineer or a site reliability engineering team.
- fomine3 4y agoA problem is that "penny" isn't actually penny for hobby or very small internal in-corp project.
- juanse 4y agoI am really excited about the possibility that Rails finally get something in the way of ActiveDeployment. This tweet https://twitter.com/dhh/status/1604856555848884225 https://twitter.com/dhh/status/1604856555848884225 and the commited changes make me wish and wonder.
- aliqot 4y ago
- cguess 4y agoShopify and Github being run on Rails sorta put it to bed a long time ago.
- aliqot 4y agoIt really didn't otherwise there would be a lot more than just those two, everyone would follow their beat. We all ran rails 10 years ago and realized that unless you're a large corp with money to burn on 'ecosystem' then Rails doesn't make a lot of sense. I want to like rails and to see it do well, but it's not keeping pace with the rest of its peers. As competitive as web dev is these days, it's not sufficient to just be rails, you need a ruby alternative to rails as well. Look at javascript. Nobody uses javascript straight up, there's a multitude of rails-like frameworks for javascript. A new one is made each day, and they have staying power. Ruby has Rails, and some might argue that metaphorically speaking Rails has Ruby, by its polite little balls. Unfortunately Rails's star power is outliving Ruby's and given that new Ruby devs aren't being born every day, it's not hard to see that that's bad for Rails. I'd love to see rails move to JS or Elixir or something that'll get people interested in it again, and KEEP them this time by being written in something fast.
- DiNovi 4y agoso much of the web is php and rails it just feels alien to see this kind of thought process
- deleted 4y ago[deleted]
- Beltalowda 4y agoRewriting all of Rails to a different language would be a humongous effort. And as you've mentioned it's been done tons of time already: almost every language has a "Rails-y" framework. Some are good, some a bit less so, but they exist. Rails in $other_language would also no longer be Rails, because other languages have different ways of doing things. In short, if you don't want to use Ruby, then don't use Rails. Also, many large Rails services have some performance-critical parts written in $other_language such as Elixer, Go, Rust, etc. "Using Rails" doesn't mean you need to use it for every last bit.
- ezekg 4y agoI was pretty sad to see the pattern matching PR reverted for 7.1 [0], but I guess the Rails team wants to make sure they nail the execution (?) even if that means being late to the pattern matching party, which is arguably one of the best additions to Ruby since the 1.9.3 hash syntax. For now, I'm good with the little gem that kddnewton put together (https://github.com/kddnewton/rails-pattern_matching https://github.com/kddnewton/rails-pattern_matching). [0]: https://github.com/rails/rails/pull/45553 https://github.com/rails/rails/pull/45553
- orf 4y agoI don’t understand the issue - why was it reverted? Are there multiple ways to do pattern matching? Why?
- ezekg 4y agoI think it was reverted because the Rails team isn't sure what values of a model should be available to pattern match, and how each attribute or association should be pattern matched.
- ohbarye 4y agoThis comment describes well. https://github.com/rails/rails/pull/45553#issuecomment-1179568855 https://github.com/rails/rails/pull/45553#issuecomment-11795...
- orf 4y agoI read that comment, but unless you know Ruby most of the specifics are meaningless
- riffraff 4y agothink of pattern matching being implemented via methods on an object which return a hash/array (deconstruct and deconstruct_keys). ActiveRecord objects wrap an hash of attributes, but are also normal objects which have instance variables and methods plus some hooks and specific API that can be expected to be overriden. So it's unclear how the method should behave: just read from the hash? Invoke some specific method? Invoke any method? The answer may be non obvious.
- angelmm 4y agoGreat to see so many new features in Rails. Tbh, one of the reasons I use it for certain backend projects is how simple to do complex things. Managing files and image variants is a pain when developing a site. Rails make it easy and even adds more features around. However, I still think the UI layer is too coupled to the backend. Webpacker was a try, but I understand why it's deprecated. I would go on supporting common frameworks, even if it's just a template to organize the code.
- Alifatisk 4y agoRails do support frontend frameworks like Vue if you wish to create more interactive & advanced UI's.
- andrei_says_ 4y agoIt being a SSR framework is one of its advantages. De-coupling it is beyond trivial. They really have offered the best of both worlds.
- deleted 4y ago[deleted]
- texxtxxet 4y ago1. Rails retired Webpacker [that] compiled and bundled JS. Import maps, Turbo and Stimulus [are now the] default options, replacing Webpacker, Turbolinks and UJS. How do these new tools compare with the old? Versus Webpack, Vite etc?
- marlomajor 4y agoBetter. Much, much better than webpack/vite imo.
- texxtxxet 4y agoA specific example? Genuinely asking (codebase is Typescript/ES6 modules).
- azangru 4y ago> Genuinely asking (codebase is Typescript/ES6 modules) No luck for you then. Rails doesn't seem to love typescript: https://github.com/rails/importmap-rails/issues/124 https://github.com/rails/importmap-rails/issues/124
- fishtoaster 4y agoMy impression is that there are two ways to use rails: 1. Your frontend js needs are pretty minimal and you don't want something approaching a single-page app. In this case, you lean into Turbo and Stimulus to have rails do most things for you that would previously have been done with some a heavy-weight react-based frontend. 2. Your frontend js needs are significant and you do want a single-page app. In this case, ignore/disable turbo + stimulus. Instead, build your rails app as just a json API and then have a separate project for your frontend built using a dedicated frontend build tool like vite/CRA/webpack/etc. On one hand, I feel like the turbo/stimulus stuff is the rails community preferring to pretend that the JS world doesn't exist. On the other hand, maybe it's really just the rails world embracing the above dichotomy: they're tools for doing some light frontend work with no JS, and an acceptance of the fact that if you want an SPA, there are better non-rails tools that you'll wind up using anyway.
- systems_glitch 4y agoFinally upgraded some internal applications to Rails 7 this month, and I was very happy with the asset pipeline changes. Rails' asset pipeline management hasn't really meshed with our development strategies for CSS and JS for a long time, and it felt like we were always fighting with trying to make our process fit Rails' expectations. We're on Propshaft now and I expect far fewer asset issues in the future :P
- stevebmark 4y ago> Later in the year, Rails retired Webpacker Is Rails anti Typescript? It’s weird to see most other JS environments move to Typescript by default, while Rails now now ignores the ability to use it without jumping through hoops.
- Mikeb85 4y ago> Is Rails anti Typescript? It’s weird to see most other JS environments move to Typescript by default, while Rails now now ignores the ability to use it without jumping through hoops. Have you not paid attention to the direction Rails is going? Hotwire (Rails' default front end) is all amount rendering HTML directly (not via JS) and using the absolute bare minimum amount of vanilla Javascript (with Stimulus). It's not React... So why would it need TypeScript's features and added complexity? The whole point is using vanilla ES6 without a compilation step...
- jmondi 4y agoIf Hey has shown me anything, it is that Hotwire IMO is a complete gimmick. The frontend of Hey had so many issues for me. I used used hey from release until about a month or two ago, and it was the terrible UXUI experience that pushed me to cancel. Weird loading issues, things would update after performing actions, not loading in place correctly etc.
- stevebmark 4y agoIf you think Hey’s UI is bad, you should try Basecamp
- andrei_says_ 4y agoCould you provide some examples? I use basecamp 8+ hours a day and have no idea what you have in mind.
- stevebmark 4y agoMy post was mostly in jest. I’m well aware the “method_missing” crew has no desire to statically analyze their programs.
- mike1o1 4y agoI love Rails and how simple and boring[0] it is, and appreciate how it keeps evolving and growing. I've dabbled with some Javascript frameworks and Elixir/Phoenix, but always come back to Rails and forget just how fast and productive I can be. A lot of people complain about it, but I feel like Active Record just can't be beat, and helps me feel so productive. Add Stimulus and Turbo and the level of UI fidelity possible is impressive. [0] https://boringrails.com/ https://boringrails.com/
- maxpro 4y agoI was struggling with rails 6 and whole JS / webpack thing. But with rails 7 it feels like home again
- shafyy 4y agoI love how they focus on simplicity and are not afraid to cut stuff out. Often times, software projects get more complicated over time. Rails seems to get simpler.
- riffraff 4y agoit has added stuff (attachments, some wysiwyg editor, docker support) while removing other. It's neither getting smaller nor bigger, it just "moves" (maybe following Basecamp's needs). Which is (arguably) a good thing.
- jonahx 4y agoYou can like rails, but calling it boringly simple is highly misleading. I think, generously, something like "complex but fully-featured" might be accurate. As a reference point, the top 2 rails books on amazon are 900 and almost 1100 pages. I say this to warn those who are looking for something minimalist and quick to learn -- Rails does not fit the bill.
- 0x457 4y agonah, at this point RoR is boring (in a good way), and it's a good thing.