News for hackers. Stuff that matters.
Re:My time with Rails is up by vinceguidry on Sunday May 22, 2016 @03:35PM (#11749910)
> Now, this line of code is not simple, it’s easy to write it, but the code is extremely complicated under the hood because:

Every time I hear someone complain about Rails, I ask myself if this person is really just complaining about how complex web dev is. I've never seen a complaint that passed this smell test.

Yes, Rails abstracts over a veritable shit-ton of complicated domains. The problem is, that complexity isn't going to go away if you decide not to use those abstractions. Every single one of that laundry-list of things that ActiveRecord::Base.create does will have to be implemented again, by you, badly, if you choose to roll your own.

It boggles my mind why developers don't take the web seriously as a domain, like it's not real coding or something. It's the worst instance of bike-shedding I've ever seen.

Rails isn't perfect, by any means. But Rails is not a black box, it's all free software. You are more than free to re-implement anything Rails does yourself and release it as a gem. Modularity and flexibility are built right in. It seems incredibly odd to leave Rails over this. For what, Java? Unbelievable.

Re:My time with Rails is up by jonahx on Sunday May 22, 2016 @04:14PM (#11750077)
I'm assuming you are not familiar with solnic's work. Because he is not just idling complaining. His rom project, and the ecosystem of supporting gems which have grown from it over years of work, are the exact opposite of "implemented again, by you, badly." It's more like "implemented for the first time, correctly, by someone who actually understands what good design is."
Re:My time with Rails is up by vinceguidry on Sunday May 22, 2016 @04:39PM (#11750187)
That's valid, and you're right, I wasn't familiar with his work.

But that doesn't diminish any of my points. So he did reimplement ActiveRecord. I'm not surprised he found it difficult to actually integrate into Rails. Rails is a framework. You don't treat a framework like a library. It's not going to play nice with your design because frameworks by their very nature impose the design on you.

With a framework, "works for me" is a perfectly valid reason to keep using it and to dismiss criticisms with. That's the whole point, to get you up and running with as little fuss as possible.

I personally hate CSS frameworks, I'd rather retain more control over the markup and selector semantics. That's a choice I make, and I'm aware of the tradeoffs. I would not make the same choice with web dev, because choosing the other side of that tradeoff involves way too much work.

But I'm a working coder, I'm not trying to make my mark on the world. I just want to get shit done and move on. Solnic obviously wants to make something bigger than just a website. He's looking for a bluer ocean to tame. Which is cool, we need all kinds of coders.

What this is really about is that Rails isn't for him. I can accept that. But his rationale is all wrong, it expects Rails to be something it isn't and never could be. Rails is absolutely the best at what it does for the kinds of coders it's intended to do it for. It tracks the state of the art of web development and boils down most of the complexity with user-friendly abstractions.

It's not terribly flexible, but Rails doesn't want to be flexible. It wants to be productive. He wants to go help build the next Rails. Godspeed. I hope he succeeds so that I can go use his framework when it's finally ready in 10 years or so.

Re:My time with Rails is up by xuejie on Sunday May 22, 2016 @09:35PM (#11751209)
I'm sorry but I just don't get this, in your previous comment, you mentioned:

You are more than free to re-implement anything Rails does yourself and release it as a gem. Modularity and flexibility are built right in.

And right here, you also mentioned:

I'm not surprised he found it difficult to actually integrate into Rails. Rails is a framework. You don't treat a framework like a library. It's not going to play nice with your design because frameworks by their very nature impose the design on you.

So which one is correct here?

Re:My time with Rails is up by vinceguidry on Sunday May 22, 2016 @11:51PM (#11751741)
Flexibility is available in Rails. But is not a top priority. I would say that Rails gets most of its flexibility from Ruby. You have Rails Metal, which is intended to provide a modular way to extend Rails. If you know Ruby well, you can take advantage. Solnic had the capability to do so, and did, but eventually chose to leave the ecosystem. I'm fine with that. I don't expect the techs i use and love to be all things to all people. I just wish he hasn't chosen to shit on the tech that sustained him for so long.
Re:My time with Rails is up by dragonwriter on Monday May 23, 2016 @12:03AM (#11751786)
I don't think the honest explanation of the reason he chose to leave the Results ecosystem is shitting on it; and I think that description is itself a sign of the kind of the kind of tribalism in technical communities that obstructs fruitful discussions of technical subjects.
Re:My time with Rails is up by patates on Monday May 23, 2016 @06:39AM (#11752959)
> I just wish he hasn't chosen to shit on the tech that sustained him for so long.

Oh please stop treating your favorite tech like a religion.

Re:My time with Rails is up by askyourmother on Monday May 23, 2016 @11:00AM (#11754263)
Rails is not a religion, it a tech tool (a pretty poor one at that), discussing it's many flaws is not shitting on it.
Re:My time with Rails is up by coldtea on Sunday May 22, 2016 @04:54PM (#11750249)
>But that doesn't diminish any of my points. So he did reimplement ActiveRecord. I'm not surprised he found it difficult to actually integrate into Rails. Rails is a framework. You don't treat a framework like a library.

Who said that? Who carved that in stone? There are absolutely frameworks built to be perfectly OK to have all of their constituent parts used like libraries.

This is just repeating "this is how it always used to be" as an argument.

>It's not terribly flexible, but Rails doesn't want to be flexible.

That's his whole point.

Re:My time with Rails is up by vinceguidry on Sunday May 22, 2016 @05:46PM (#11750420)
> There are absolutely frameworks built to be perfectly OK to have all of their constituent parts used like libraries.

You certainly can use each individual part of Rails without having to bring in the rest of Rails. I bring in ActiveSupport all the time on non-Rails projects. For ORM I prefer Sequel, curious why solnik didn't mention Sequel, the creator of DataMapper even said that Sequel was everything he wanted DataMapper to be and I can't help but think that played a big role in the decision to not continue developing it.

You can use Sequel in Rails, I personally prefer ActiveRecord as I'm not aware of a Form Helper gem that works with Sequel, though to be honest I never really looked. Way more people use AR than Sequel, so Stack Overflow debugging goes much smoother.

I'm not saying he's wrong for leaving the Ruby / Rails ecosystem. I'm saying his stated reasons are inconsistent with his course of action. I'm fine with his real reasons, I just wish he wouldn't frame it as a slight to Rails.

Re:My time with Rails is up by glass_of_water on Sunday May 22, 2016 @07:34PM (#11750765)
> ... curious why solnik didn't mention Sequel ...

From the article:

> It would be unfair not to mention that Sequel showed up already around the same time and till this day it’s being used way less than ActiveRecord despite being a superior solution.

Re:My time with Rails is up by ssmoot on Monday May 23, 2016 @10:26AM (#11754029)
I lost interest in DM mostly because of my open-commit-access policy. I mismanaged the project horribly.

Just because something was called "Session" (ala Hibernate) instead of "Unit of Work", people would claim it wasn't "pure".

The only real compromises for purity were for performance. You saw the same thing play out with ActiveRelation. Ruby is (or was at least) just too slow for complex patterns unless you wanted to pay a huge performance penalty. The kind of slow that materializing 10,000 models in an O/R Mapper would bring your app to it's knees and use hundreds if not gigabytes of RAM.

And since a large reason for writing DM in the first place was AR's miserable performance at the time, it needed to be fast.

Most of the community wasn't that interested in closing open issues. Not that I blame them. It's not fun. But I was burnt out.

During the end, ActiveRelation started development, making many of the same mistakes early DM did in the quest for purity. By that point I just wasn't feeling it anymore. I'd spent orders of magnitude more effort on writing an O/R Mapper than I'd ever hope to recover, and I felt like some of the ideas were fundamentally flawed. So I moved on.

If I were still doing Ruby, I'd be using Sequel though.

Re:My time with Rails is up by ivan_gammel on Sunday May 22, 2016 @04:57PM (#11750259)
Frameworks do not necessarily impose the complete design of the application. Spring Framework in Java, for example, is great, but the only essential part of it is DI container: you may not use persistence, presentation or security layer provided by it, if it does not fully fit your architecture. Good modularity defines quality of the framework and Rails is apparently not best on that criteria.
Re:My time with Rails is up by oafitupa on Sunday May 22, 2016 @06:54PM (#11750637)
Another example is Symfony2, which is completely decoupled (not just loosely coupled). Oh but php programmers are bad, am I right HN?
Re:My time with Rails is up by vesak on Monday May 23, 2016 @01:38AM (#11752110)
No. PHP programmers aren't "bad", PHP is.
Re:My time with Rails is up by spdionis on Monday May 23, 2016 @08:46AM (#11753477)
+1 for symfony being the perfect example if you're looking for a completely decoupled framework.
Re:My time with Rails is up by proyb2 on Monday May 23, 2016 @05:54AM (#11752825)
Magento and Shopify backend are awfully slow, it's the language, not the programmers.
Re:My time with Rails is up by andruby on Monday May 23, 2016 @07:23AM (#11753112)
Shopify is built on Rails, you know that right?
Re:My time with Rails is up by spdionis on Monday May 23, 2016 @08:46AM (#11753481)
And Magento is slow for a whole lot of reasons, nine of which are related to symfony.
Re:My time with Rails is up by AMHOL on Monday May 23, 2016 @10:28AM (#11754038)
Magento is slow because it uses EAV
Re:My time with Rails is up by oafitupa on Tuesday May 24, 2016 @01:17PM (#11763429)
You mean the first version of Symfony (Symfony 1, which was monolithic like Rails), and not the current Symfony (Symfony 2/3) which has nothing to do with the old one other than the name.
Re:My time with Rails is up by proyb2 on Monday May 23, 2016 @09:37PM (#11758391)
I'm aware of that using Rails.
Re:My time with Rails is up by lgierth on Sunday May 22, 2016 @05:05PM (#11750288)
Nitpicking here, solnic didn't reimplement ActiveRecord (he did, but that's long ago) -- ROM implements the DataMapper pattern.
Re:My time with Rails is up by ssmoot on Monday May 23, 2016 @10:45AM (#11754156)
The idea that DM wasn't a DataMapper is misguided. Check out: https://github.com/datamapper/dm-core/blob/0.9.0.1/lib/data_...

The convenience methods were just wrappers. Earlier versions were even more true to the PoEAA version of a DataMapper with a Unit of Work in the Session class.

Turned out this was a bad idea if your primary motivation is performance.

The fact that it didn't bother to abstract away DataObjects was by design. Nobody would claim NHibernate (of the time, 2.x) wasn't a Data Mapper implementation just because it didn't have an adapter for treating an XML file as a database. That's a parlor trick.

The real effort is in making it work and making it fast. Porting Java designs to Ruby just didn't scale in the Ruby implementations of the time and conscious decisions were made to ensure DM would actually solve the problems it was developed to address (#1 being performance as I had a large set of data to migrate that initial experiments with AR projected to take a month(!)).

The primary concern turned out to be Ruby method dispatch performance. The shorter you could make the stack, the better. Since loading 1,000 objects might be operating on a 10,000 row set, and another order of magnitude more fields, the materialization pipeline had to be streamlined as much as possible. (AR implemented a nasty abomination of a hack for this by round-tripping to the database multiple times). When it's faster to round-trip to the database multiple times than it is to iterate a large object in memory, you've got a real problem.

The lazy loading, explicit fields, dirty tracking in the Unit of Work, (which at the time were all fairly controversial ideas in rails-core) etc were all an effort to address performance. The PoEAA was an inspiration for sure, but it turned out to be a prescription for poor performance on Ruby 1.8.x.

Re:My time with Rails is up by vinceguidry on Sunday May 22, 2016 @05:14PM (#11750307)
I can nitpick too! :) I never said he reimplemented active record, I said he reimplemented ActiveRecord. Though I suppose the better verb to use would have been 're-engineered'. Reimplementing seems to imply an algorithm or design pattern, where I meant to re-do the functionality.
Re:My time with Rails is up by spraak on Sunday May 22, 2016 @08:08PM (#11750908)
>I never said he reimplemented active record, I said he reimplemented ActiveRecord

You didn't yet you did? You've said the same thing twice here

Re:My time with Rails is up by vinceguidry on Sunday May 22, 2016 @08:13PM (#11750929)
ActiveRecord is an implementation of the active record pattern. DataMapper is an implementation of the data mapper pattern.

https://en.wikipedia.org/wiki/Data_mapper_pattern

https://en.wikipedia.org/wiki/Active_record_pattern

Re:My time with Rails is up by lgierth on Monday May 23, 2016 @12:56PM (#11755078)
The ruby lib DataMapper is actually an implementation of the active record pattern too ;) That's one reason to why ROM exists.
Re:My time with Rails is up by mattmcknight on Monday May 23, 2016 @10:30AM (#11754054)
I think this is more about Active Record the design pattern, than ActiveRecord the Rails component. Active Record is a really easy to use pattern and ActiveRecord is a very humane implementation. Data Mapper (the pattern) is more complex. Trying to get a Data Mapper implementation to do all of the things the ActiveRecord implementation in Rails does is really hard- it's always going to be harder when you need the object model structure to significantly deviate from the database structure.
Re:My time with Rails is up by rhefan_ney on Monday May 23, 2016 @12:01AM (#11751779)
Jonah so good
Re:My time with Rails is up by overgard on Monday May 23, 2016 @02:18AM (#11752231)
As a counter point, are you sure web dev is the complex thing, or does it just seem complex because you're dealing with these massive gnarly frameworks that hide thousands of lines of code behind seemingly simple facades that perform incomprehensible magic?

I think the mention in the article of the User.Create(params[:name]) one liner is really instructive. Creating a user is one of the most important things you're going to do in an application! The business logic rules are incredibly important, the security implications are huge, everything. Trying to make it "easy" is ridiculous, because as a developer, you should be thinking about these things. That's the kind of thing that should contain absolutely zero magic, the logic should be upfront and visible.

I've worked as a web dev, and I've also worked outside of web development, and the number one thing that drove me insane doing web development was never knowing if any one line of code was doing some severe amount of impossible-to-debug magic. I'd rather just write javascript against the browser APIs with a lightweight http server.

As far as I can tell, the vast majority of frameworks aren't really about providing functionality, they're thought experiments in how to write software. That's fine, but they should bill it as such. I'm not going to say web development is easy, there are parts that are legitimately difficult on their own accord, but I think the web development community has made things massively harder on themselves by pretending all these abstractions are actually simplifying the task they've set out to do.

Re:My time with Rails is up by dkrich on Monday May 23, 2016 @11:16AM (#11754387)
What's missing for me from this whole discussion is the allowance that both methods can be correct.

Use case: you're a solo developer and you need to build a proof of concept web application based on a fairly complex set of requirements. You probably want to use a framework like Rails and focus your time 100% on the specific project requirements, and use the framework to generate the common parts of the web app for you.

Another use case: you're on a large, multi-year project for a huge client where each developer has his/her own specialty area. Here it may well make sense to go with a Java Enterprise app and wire your own persistence layer or write your own SQL queries.

The mantra of Rails has always been "don't repeat yourself." Don't waste time rebuilding the same 90% skeleton every time you need a CRUD app with a postgres database.

Want absolute granular control over all parts of your application? Then almost by definition, you really don't need a framework. So great, don't use one and roll your own web app from the ground up. But there are many times it makes complete sense.

Re:My time with Rails is up by aantix on Monday May 23, 2016 @10:51AM (#11754204)
>because as a developer, you should be thinking about these

>things. That's the kind of thing that should contain

>absolutely zero magic, the logic should be upfront and visible

No, you shouldn't be thinking about these things. Because you'll get them wrong. Are you really going to account for all security cases?

Are you really going to account for all data coercion coming to/from the db? And even if you do, why go through the pain of those cases when there's a community of thousands of other developers, some of which have probably solved it infinitely better?

Eventually, we have to get shit done. The only code that is worth something is code that serves others. Eventually we have to pick some abstractions so that we can get on with the show.

Re:My time with Rails is up by overgard on Monday May 23, 2016 @01:32PM (#11755371)
> No, you shouldn't be thinking about these things. Because you'll get them wrong.

This attitude is really pervasive in web development, and I think it's kind of bizarre. If you're building something as a developer, you need to understand what it's doing, because at some point something will break and you will have to debug it.

When you get to the point you have to debug it, are you going to want to figure out some sort of insane meta-object protocol where you can't figure out where or why a method is dispatched, at what point inputs get santized, etc., or do you want to walk down a simple function chain?

Keep in mind I'm not advocating rolling everything yourself, I'm saying if you use a library it shouldn't be treated as a black box. I'm advocating avoiding abstractions that obscure your ability to understand what's happening (what I call magic). Use a library for user authentication, for sure, but if you can't explain how it works well enough that you could replace it, you shouldn't use it.

Re:My time with Rails is up by code_sloth on Monday May 23, 2016 @11:14AM (#11754370)
> No, you shouldn't be thinking about these things. Because you'll get them wrong.

"Magic" is good for beginners, because there's just too much they don't know.

Not thinking about all these things because the community of thousands should have done it better I did, is just lazy.

This is the kind of thinking that leads to unnecessary layers of abstraction and bloat.

Re:My time with Rails is up by dkrich on Monday May 23, 2016 @11:27AM (#11754458)
So do you roll your own OS? Payment processing system? Web server on your own hardware?

Just because you aren't hand-coding it doesn't make it "magic" or "lazy," it makes it efficient. I'm perfectly happy to use Bootstrap for my web application's styling because they've handled most of the exact same styling problems I will have to, and quite well. I am quite confident I could replicate a lot of that functionality every time I needed to build a web app, but why would I do that when it's already been done and I can focus on other problems?

As an aside I'm curious why you think that "magic" is good for beginners. When you don't have a clue what is going on at all, you really should spend some time learning what happens when you create a user via ActiveRecord, which can easily be done if you study the log files for a bit and read the Rails documentation. Once you are comfortable with what's going on, then you can use the framework to auto-generate code for you.

Re:My time with Rails is up by jimbokun on Monday May 23, 2016 @12:00PM (#11754688)
The point is not about "hand-coding" at all.

It's about reading the code, and having a good mental model of what is happening. This is the point Rich Hickey tried to drive home with his talk "Simple Made Easy".

https://www.infoq.com/presentations/Simple-Made-Easy

If you are a developer and haven't watched this yet, you really, really should. Very important distinction to keep in mind any time you are writing software.

Haven't read the Active Record source code, but would be interesting to find out where it falls on the "Simple vs. Easy" continuum.

Re:My time with Rails is up by spacemanmatt on Monday May 23, 2016 @03:01PM (#11756017)
Simple Made Easy is a really great talk.
Re:My time with Rails is up by code_sloth on Monday May 23, 2016 @04:06PM (#11756503)
> As an aside I'm curious why you think that "magic" is good for beginners.

I was referring to absolute beginners with little prior background. To them, technical documentation is a bunch of gobbly gook. For these people it's usually better to be somewhat opinionated and just tell them "there are other ways, but this is the tried and tested way and it works". A nice side effect is that they don't suffer analysis paralysis and panic attacks.

They don't know what they don't know, so it's sometimes useful to just tell them "this is the syntax to do X" (aka "magic") and gloss over the finer details. I've found that the time to unveil the magic is when they poke around under the hood, read up, and start asking questions about how things work.

Re:My time with Rails is up by dragonwriter on Sunday May 22, 2016 @05:15PM (#11750311)
The complaints weren't about the complexity of web dev, but the degree of tight coupling and bad application architecture that the author sees baked fundamentally into Rails and the approach it is designed to favor.

And as for leaving for what, the author identified both the other Ruby-based stacks and the noon-Ruby languages and frameworks that he sees as valuable. And, no, Java is not on the list.

Your rant looks like a reflexive defense of Rails from someone who hasn't read the source article more than superficially; the article doesn't dismiss the web as a serious domain, it just sees Rails as locked into a dated approach to the domain.

Re:My time with Rails is up by vinceguidry on Sunday May 22, 2016 @06:08PM (#11750488)
Look, if solnik thinks he can do Rails better than Rails, I really hope he succeeds, because I can't wait to meet the perfectly-flexible, perfectly-succinct web development framework that has the kind of support and tooling ecosystem that I enjoy with Rails.

I get it, tight coupling and forced architecture aren't ideal. I accept those limitations so I can get Rails' productivity superpowers. I don't just accept them, I embrace them, I've learned the wonderful joy of having everything you coded 6 months ago just slide right back into your mind because it didn't try to buck the convention. I spent extra time understanding that convention and why it exists when I wrote that code, I think most Rails devs don't do that, and so overcomplicate their applications.

I've been on the other side of that tradeoff, so I can see where you're coming from. There's a lot of appeal in making and using your own abstractions that fit the domain better. But the web is a complicated domain in its own right. The right approach is to use one DSL for the web, and make your own for your domain. DHH was right, Rails is your application. To do otherwise is to over-complicate your architecture.

> locked into a dated approach to the domain.

Ugh, seriously? Is this fashion or engineering?

Re:My time with Rails is up by grandalf on Monday May 23, 2016 @10:34AM (#11754089)
My guess is that you haven't actually had to deal with any large rails applications, or that the one you are dealing with is the first one you've dealt with.

The abstractions Rails uses are fine for a relatively small app (up to 10 models). Beyond that is where the complexity mushrooms and the framework starts dragging down the project.

Solnik's points about create() are very subtle. Think about coercion, validation, and all the potentially invalid or confusing states an app can end up in.

The approach Rails takes with ActiveRecord is fine for a small project, and often benefits consultants who leverage the boilerplate to show superb progress after one month of development, but it fails in the real world.

To be fair to Rails, most approaches to input validation and the creation of multiple levels of nested objects are implemented poorly. Solnik's point is just that Rails serves up a lot of these flawed approaches into one toolkit, and so the resulting ecosystem is plagued by the sum of all the flaws, and the core team is not really seeing the big picture about how to improve the overall state of the ecosystem (why would they, they are getting paid a lot from the Rails status quo).

DataMapper was superior to ActiveRecord. When Merb got merged into Rails, I was certian DM would be the ORM of choice for new projects, but when it wasn't I personally stopped using Rails on new projects. Sinatra + DataMapper is such a superior approach to full-boat Rails too, fwiw. How many thousands of developer hours are spent upgrading to the latest Rails every couple of years for no benefit. How many useful gems are nearly obsoleted, etc.

Rails has had the worst kind of cargo cult success. Most of the gems are weekend projects that lead to a blog post and a bunch of speaking engagements for the writer, and then get left to wither after the community has naively embraced them. This is not the case for all, but it happens way too often.

There are also many, many subtle bugs that are introduced by ActiveSupport. I've personally wasted at least two weeks of time dealing with them over the past 5 years.

Ruby is a great language, but I'm glad someone as talented as Solnik is branching out.

Re:My time with Rails is up by nimblegorilla on Monday May 23, 2016 @12:45PM (#11754992)
> My guess is that you haven't actually had to deal with any large rails applications, > The abstractions Rails uses are fine for a relatively small app (up to 10 models). Beyond that is where the complexity mushrooms and the framework starts dragging down the project.

I've worked on several rails applications with a lot more models than that. Some with over 100 models. ActiveRecord has flaws, but I never felt it was a great impediment to getting things done.

A bigger issue (as you mentioned) is the large number of gems that are abandoned or sporadically maintained. I don't see that as a rails specific issue, but it seems to rear its head most often with gems that interact with rails.

Re:My time with Rails is up by grandalf on Monday May 23, 2016 @04:47PM (#11756833)
> Some with over 100 models.

Very experienced developers can create a usable codebase in Rails with over 100 models, but it is highly unlikely to happen if someone in Rails' target audience uses it.

Re:My time with Rails is up by ssmoot on Monday May 23, 2016 @11:00AM (#11754267)
I'd suggest Play Framework and abandoning the idea of O/R Mapping entirely.

Once you grok pattern matching you'll never want to see another Ruby case statement again. Once you compose a pipeline of functions you'll find Ruby Procs a pale shadow of true functions. There's really no such thing as functional Ruby.

You'll end up with more maintainable code, a lower LoC count, easier testing, more mature libraries, and that's just the tip of the iceberg.

Un uncached Play Framework app will probably outperform a highly tuned Rails app out of the box, even with hundreds of person-hours spent in tuning the Ruby app.

Which leaves you more time to work on actual features.

And then you have Akka. Which is a whole other paradigm to master (but with it's own rewards).

And then you have deployment. Which is a huge breath of fresh air.

Sure, you'll miss some few things in Rails. Like Inflection. Add a dependency for one of the ported versions (like: https://github.com/backchatio/scala-inflector. It's just a single file).

The learning curve isn't the smoothest (though API docs for Java/Scala libs in general and the Play Framework guide is far more complete than anything I ever experienced in Ruby-land). But the rewards.

Come to the dark side. :-)

Re:My time with Rails is up by vinceguidry on Monday May 23, 2016 @05:34PM (#11757229)
> I'd suggest Play Framework and abandoning the idea of O/R Mapping entirely.

Then I'd have to learn Scala. I do not want to have to learn an entirely new stack. It took years for me to learn Ruby's eccentricities. Sure it would take me less time to learn Scala, but I already know Ruby. You seem like quite the masochist, spending years in one ecosystem trying to build something, then burning it all to the ground and starting all over. Just looks like so. much. effort.

> you'll never want to see another Ruby case statement again

I never write case statements in Ruby. What I do when I find myself needing a case statement is to go looking for the missing class. I'm missing a domain element and OO programming to me is all about clarifying a domain.

> Once you compose a pipeline of functions you'll find Ruby Procs a pale shadow of true functions.

I pipeline all the time in Ruby. A lot of times I'll wrap a data pipeline in a class so I can encapsulate the logic and manage it better. When you wrap a pipeline in a class, you can do things like add immutability to the instance variables. Sure, it's not true functional, but I don't want true functional.

> You'll end up with more maintainable code, a lower LoC count, easier testing, more mature libraries, and that's just the tip of the iceberg.

Let's take these in turn.

> more maintainable code

I love maintaining my code. I fail to see how learning a new stack could actually improve on this for me.

> lower LoC count

Mostly aids in maintainability. Again not at the top of the list of things to improve.

> easier testing

I've changed my approach to testing over the years. Again, this is not anywhere close to the top of the priority list.

> More mature libraries

Again, this is something I've fixed by changing my approach to the problem. Whenever I introduce a gem, I put an interfacing class between the rest of the app and the gem. That way it's easy to swap out if it becomes a problem.

> And then you have deployment.

Deployment sucks in Ruby, not gonna lie. But again, problems are indicators of overcomplication and I've tuned my workflow to drive more simplicity over time. I know Capistrano very well, seeing it evolve over time has given me a keen eye for how to keep it manageable.

On the whole, I like the idea of functional programming and am not opposed to coding in a functional style once in awhile. HtDP changed the way I thought about programming, though I eventually switched back over to OOP. I strongly disagree that there's any kind of magic to functional. Everything in programming involves tradeoffs, and OOP better fits my mind than functional does. I look at pure functional as math-heavy and harder to grok. I want stateful objects, because humans think in terms of objects and not data pipelines.

> The learning curve isn't the smoothest

That one issue outweighs all the purported benefits of all the others. I would much rather spend my time thinking about domains than learning new tricks.

Re:My time with Rails is up by ssmoot on Monday May 23, 2016 @06:36PM (#11757583)
There's nothing I love more than a long thread of point-by-point rebuttals, but I think I'll leave this one alone for once. ;-)

If you like what you're doing, more power to you. I picked up Ruby because I thought it showed promise as a good scripting language and web development tool (this was pre-Rails) at a time c# didn't really excel at either.

> You seem like quite the masochist

Maybe. DM was created to solve a problem. I didn't burn anything down. I just walked away. The best time to do the right thing is yesterday. The next best time is now.

After 8+ years, I realized I'd spent much of it trying to work around limitations in Ruby. It was just time to open myself up to the idea that there is more to programming than what I knew.

Re:My time with Rails is up by incepted on Sunday May 22, 2016 @06:37PM (#11750590)
Things get dated in engineering too.

The writing has been on the wall for Rails for a while now, we're just seeing an increasingly large number of people publicly moving on from it.

Re:My time with Rails is up by zyngaro on Sunday May 22, 2016 @07:59PM (#11750868)
Have ever took a look at django (Python)?
Re:My time with Rails is up by yomly on Sunday May 22, 2016 @08:19PM (#11750945)
> Ugh, seriously? Is this fashion or engineering?

> It seems incredibly odd to leave Rails over this. For what, Java? Unbelievable.

Back when Java was introduced, it was partly taken up because the features it introduced made developers more productive - hardware agnostic code, network programming out of the box...

Nowadays a lot of developers have moved on from Java. Maybe the same thing will happen to Rails...

Re:My time with Rails is up by jamra on Sunday May 22, 2016 @03:48PM (#11749968)
I'm not a rails dev, but I believe that you are misconstruing his argument. It is not about inevitable complexity, but about the ownership of that complexity. If you are able to control the side effects part of development, you can control how it scales and debug it much more easily.
Re:My time with Rails is up by Double_Cast on Sunday May 22, 2016 @05:19PM (#11750330)
I have a third interpretation: I think Solnic was complaining about a lack of diversity in the Ruby ecosystem. The most salient part of the post was (imo) the paragraph regarding how Merb was subsumed into Rails, instead of continuing to compete against Rails. Rails is essentially a monopoly.

> It seems incredibly odd to leave Rails over this. For what, Java? Unbelievable.

If projects such as Merb were more common, maybe Solnic could leave Rails without abandoning Ruby.

Re:My time with Rails is up by mooreds on Sunday May 22, 2016 @04:16PM (#11750088)
> It is not about inevitable complexity, but about the ownership of that complexity.

I've been there, done that--was part of a team that owned a java application that grew over a decade (and eventually ran the team). A year or so after I left, they retired the application.

Why? Because we owned all the complexity and couldn't support it.

Maybe that was my failing. Maybe the team's failing. But I don't think that having control of how the whole codebase fits together means you necessarily have more control over complexity.

Re:My time with Rails is up by ethbro on Sunday May 22, 2016 @10:33PM (#11751435)
Those who trade for buried complexity are doomed to start digging whenever they discover an edge case.

Maybe they never need to do that, in which case that's a bargain. But I tend to think that any old enough codebase continually accrues edge cases that must be solved.

Re:My time with Rails is up by philwelch on Monday May 23, 2016 @02:20AM (#11752240)
I've never seen a ten year old Rails application, but from the Rails applications I have seen, I'm horrified by the thought of how it would look after that long.
Re:My time with Rails is up by pimeys on Monday May 23, 2016 @03:03AM (#11752366)
I've been in a company that let their Rails applications grow for 7 years. Believe me, the oldest code was not pretty to read and almost impossible to refactor. When we finally had a real frontend team, the only way out was to reimplement the apps with a new architecture.

At one point I realized, I should not stick into one language and one framework. Ruby is good to know, but I'm better if I can also tackle Scala, Java, Rust, OCaml, Haskell, Python and so on. Also happier, I'd say... I can now choose the best tool for the job.

Re:My time with Rails is up by dagw on Sunday May 22, 2016 @05:00PM (#11750270)
Having worked on systems like that, the problem is that you end up in a situation where there are literally two people in the world who can answer questions about how something works and integrating other third party libraries or solutions becomes harder and harder.
Re:My time with Rails is up by ivan_gammel on Sunday May 22, 2016 @04:53PM (#11750246)
Java isn't that bad, I'd say. ;) I've been in web development for almost 20 years, and used quite a lot of stuff, including PHP, Perl, C++, Java, Ruby and even such a weirdo like Informix WebConnect. Java is still my favorite, and the reason is the true modularity. You can combine Java EE and Spring stacks (lots of XML already forgotten in distant past), you can choose any presentation layer implementation and the architectural flexibility is the real selling point for projects bigger than a homework. I can beleive if the author would switch to it and I'm surprised that you don't.
Re:My time with Rails is up by fat0wl on Sunday May 22, 2016 @07:13PM (#11750698)
yeah i do Scala now but same deal. Where I think the OP comment really goes wrong is when he says something like "you're gonna need all that stuff and you're gonna end up re-implementing it yourself". I really don't find that to be the case... when you're developing with libs you are cognizant of your app endpoints and just add whats needed. It's better to consciously add a lib or turn a feature on than to just accept a big ball of yarn that some cowboy framework devs shat out. In the Rails app at my job it takes a ton of debugging just to figure out how many layers of decorators are firing off around every model.

I might even go so far as to say that a lot of where JVM has strength is that contexts are pretty measurable... Spring containers, Akka systems. You instantiate them and hold them basically in the palm of your hand, you understand your scopes. Any technology that allows application scope to slip out of your fingers and intermingle with everything else under the sun is something I'd be wary of.

Re:My time with Rails is up by endemic on Monday May 23, 2016 @10:35AM (#11754090)
My own anecdote: at a previous job, new development was done in Rails, while "legacy" Python applications were maintained by one (!) guy. The Python apps were about the exact opposite of the Ruby apps -- cherrypy was used for the HTTP interface; very low level (compared to Rails, at least). He used to shake his head at the stack traces that Rails would spit out. "Intermingle with everything else under the sun" sounds about right.
Re:My time with Rails is up by BinaryIdiot on Sunday May 22, 2016 @10:52PM (#11751514)
> Every time I hear someone complain about Rails, I ask myself if this person is really just complaining about how complex web dev is. I've never seen a complaint that passed this smell test. Yes, Rails abstracts over a veritable shit-ton of complicated domains.

I call this "magic" and I dislike it very much. I'm a very explicit person. I like the ability to jump into any project, regardless of language, and be able to figure out how it works. This is typically possible with Python, Node and PHP with most web frameworks. Ruby with Rails? Not at all and for precisely this reason.

I'm fine with abstracting things but only to a degree. If you're doing a laundry list of complex things with a single statement, and I'm referring to web server specific stuff not ASM instructions, then your framework is going to require more ramp-up time than any other explicit one.

Re:My time with Rails is up by agmcleod on Monday May 23, 2016 @08:24AM (#11753370)
Interesting point. I find I can be pretty okay jumping onto a rails project, as I know a lot of the conventions. Where to look to see how things are connected. Admittedly, it's taken me sometime to learn how a multi architecture go project using thrift is setup :)
Re:My time with Rails is up by vectorpush on Sunday May 22, 2016 @06:07PM (#11750485)
ActiveRecord is terrible for any kind of complex database work. If your data models are simple or you decide to shoehorn your entire data model into an "object" representation then ActiveRecord will allow you to work, but if you need to run queries like "return every product that represents less than 2% of total revenue for the last year excluding products purchased by our top 10 most profitable clients" ActiveRecord is going to give you a very inefficient solution where you'll also end up writing Ruby code to accomplish what the database is already capable of.
Re:My time with Rails is up by igor47 on Sunday May 22, 2016 @09:32PM (#11751196)
ActiveRecord is not the right tool for a job like this. It's meant to return records needed for serving normal web traffic, not for running data analytics. This is a better job for a tool which can run queries like this outside of a latency-sensitive environment (hadoop, presto, whatever).

> you'll also end up writing Ruby code to accomplish what the database is already capable of.

This is for the best. Usually, you have only a few database servers, while you have lots and lots of web servers. If you have a computationally intensive task, it's better to perform it on those web servers, which you can scale horizontally.

In our environment, the problem is usually the opposite -- it's way too easy in ActiveRecord to ask the database to do computation like sorting for you. Also, it can be hard to predict what impact an additional clause will have on the server's use of indexes. We try to get engineers new to Rails to write the simplest, most performant queries and then use ruby to do any soft of complicated transformation or computation.

Re:My time with Rails is up by gaius on Monday May 23, 2016 @01:00AM (#11751983)
This is a better job for a tool which can run queries like this outside of a latency-sensitive environment (hadoop, presto, whatever)

Actually the right tool for this is plain old SQL. Even with nice formatting this is probably a 10-liner at most.

If you have a computationally intensive task, it's better to perform it on those web servers, which you can scale horizontally

It's only computationally intensive if you're doing it wrong.

Re:My time with Rails is up by module0000 on Monday May 23, 2016 @12:40PM (#11754948)
SQL is the right tool for the job! I replied to tell you that fewer and fewer people think that way....which is terrifying. "Elegant" solutions are judged as such, by their ability to avoid SQL. It's not a hard language, why is everyone trying to avoid it at the expense of their applications speed and simplicity?

When I post job adverts, a large portion of applicants balk at the SQL questions: "just use PDO, or ActiveRecord, or ADO, or SQLAlchemy". Which is fine, if they can explain the difference between inner, outer, left/right joins - and they can't. SQL will be the next COBOL at this rate, or at least I hope so for selfish and monetary reasons.

Re:My time with Rails is up by mikekchar on Monday May 23, 2016 @04:08AM (#11752524)
Somewhat ironically, perhaps, it goes back to one of the author's complaints: ActiveRecord is not really what you need for complex data. The idea that there is a 1:1 relationship between a table and an object is a poor one. Normally you want a datamapper to map between the model object(s) and the saved abstraction.

To make it a bit more clear, it's exactly the same separation of concerns that you want when you write a view for the UI. The controller takes one or more model objects and uses the view to generate an abstraction for the UI. When we save and fetch information from the DB (or send data out on the wire as JSON, for example) we want the exact same thing.

BTW, be very careful about doing all your computation on the ruby/rails side. It's a good idea from a certain perspective, but you are building a very nice bottleneck there if you have anything of real complexity. For example if you have a report that needs to sort through millions of records, you are going to be hanging your server for a loooong time. As you say, in those kinds of situations, you really want to query a service that has the ability to scale the requests more reasonably. Rails is incredibly poor at this kind of thing.

My own personal opinion is that there is very little that rails gives me that is worth the pain that Rails imposes. I'm much better off building something with Sinatra. What Rails does do very well (which the author also acknowledges) is reducing the number of things you need to know to get up and running quickly. But if you are going to pay the kind of salary I demand, then you will expect me to beyond that level ;-)

Re:My time with Rails is up by fixermark on Monday May 23, 2016 @11:38AM (#11754535)
Agreed. And the challenge with using Rails is that when you hit a problem for which ActiveRecord is not the right tool, you have to now discard your entire process because the whole of the Rails framework is assuming state manipulation via the ActiveRecord abstraction.

"Rails" is an appropriate term for the framework; step too far off of it, and you find you're on rocky terrain.

Re:My time with Rails is up by ikawe on Sunday May 22, 2016 @11:26PM (#11751652)
I keep telling people to accomplish this by encapsulating the query in a DB view, and using a read only active record model in front of it. You can then query the table through the AR interface, and use has_many and friends. Unlike using execute_sql where everything is a string, type coercion works as you'd expect.

This solves the problem if you know ahead of time the format of the query, e.g. The example you gave would probably fit well. But if you're offering some kind of query building interface, well god help you.

No one has told me I'm wrong yet with this approach and it's been working great for years.

Re:My time with Rails is up by sanderjd on Monday May 23, 2016 @01:16AM (#11752033)
Yeah, views are a good approach. Adding more first-class support for them would be a valuable improvement.
Re:My time with Rails is up by necrodome on Sunday May 22, 2016 @06:27PM (#11750550)
You can drop to sql if you find yourself fighting against ActiveRecord. It is simple as ActiveRecord::Base.connection.execute(sql) where you will end up working with arrays and hashes.
Re:My time with Rails is up by philwelch on Sunday May 22, 2016 @07:06PM (#11750676)
OK, what if you want to generate the SQL dynamically with attributes? connection.execute doesn't do sanitization for you by itself (though you can call a private method to do that). If the generation is more complicated than that, you also have to have code to concatenate together strings of SQL code. Not because Rails doesn't have a SQL generation library, just because it's tightly coupled to ActiveRecord and fuck you and the horse you rode in on if that isn't good enough for you.
Re:My time with Rails is up by bloopletech on Sunday May 22, 2016 @10:30PM (#11751426)
I understand your general frustration, but to respond to your specific point here, AR does actually support executing generic parameterized SQL statements:

Model.find_by_sql(query, binds=[])

http://devdocs.io/rails~4.2/activerecord/querying#method-i-f...

Model.connection.select_all(query, name = nil, binds=[])

http://devdocs.io/rails~4.2/activerecord/connectionadapters/...

Re:My time with Rails is up by philwelch on Monday May 23, 2016 @02:15AM (#11752224)
Yeah, I generally advocate for find_by_sql and select_all, but think about what that actually does. It instantiates a bunch of ActiveRecord objects that have to be of a particular model (what if the query joins tables together and returns a result set that doesn't actually neatly contain the intended columns of a given model? I can't even use ActiveRecord::Base.find_by_sql, I have to choose an actual ActiveRecord model arbitrarily), has the columns of the result set dynamically bound to it as methods during runtime (slow), also has the methods of the model itself bound to it, which may have unexpected behavior based on the query (especially if we just choose an arbitrary model), and in exchange we get to treat the result set as an array of structs rather than an array of hashes (which admittedly has its performance advantages, but not if the fields have to be dynamically bound to each object as methods!).

Oh, and if you're writing an INSERT statement you have to use connection.execute after all. Have fun!

Re:My time with Rails is up by hsod on Sunday May 22, 2016 @10:08PM (#11751334)
> what if you want to generate the SQL dynamically with attributes? connection.execute doesn't do sanitization for you by itself (though you can call a private method to do that).

You just answered your own question. You sanitize the string and then you call connection.execute. Not sure I understand your other issue but it doesn't seem too compelling.

Re:My time with Rails is up by philwelch on Monday May 23, 2016 @02:11AM (#11752217)
Yeah but there's no public method to sanitize the string. Having to call a private method works, and I've done it, but it's hacky and fragile and the only way it could pass code review with a clean conscience IMO is if you add an apologetic comment saying, "I know I'm using .send to call a private method and that this could break at any time if we update our Rails version because private methods aren't supported, but there's no other way to sanitize a string programmatically in this context, blame DHH". And I don't like having to put those kinds of comments in my code.

> Not sure I understand your other issue but it doesn't seem too compelling.

If you don't understand the other issue, how do you feel qualified to comment on whether it seems compelling?

Use case: I want to pull up a table of aggregated data for my user. The table is built by joining multiple tables together. The user can dynamically select which columns in the table he wants to see.

Re:My time with Rails is up by vinceguidry on Sunday May 22, 2016 @06:25PM (#11750541)
Don't do complex database work with ActiveRecord. What I like to do is these days is do backend jobs outside of Rails. (ActiveJob doesn't support RabbitMQ yet, I may change my mind about this when it does) Then use whatever toolset you want without Rails getting in your way.
Re:My time with Rails is up by briantakita on Sunday May 22, 2016 @09:41PM (#11751229)
> I ask myself if this person is really just complaining about how complex web dev is

A major problem with rails is it tries to "simplify" the inherent complexity of web development by using abstractions & mappings that ultimately increase incidental complexity in the entire stack.

Re:My time with Rails is up by pjmlp on Monday May 23, 2016 @03:51AM (#11752483)
When performance matters, Java runs circles around Ruby, Python or any other scripting language used in application development.

Having been bitten by web applications written in scripting languages (Apache + TCL like AOLServer) with an architecture very similar to Rails, but done in 1999, Rails was never that interesting to me.

Re:My time with Rails is up by forrestthewoods on Sunday May 22, 2016 @03:54PM (#11749994)
> about how complex web dev is

Isn't that part of the problem? Webdev is complex. But it feels to me like it's been overcomplicated by a factor of 100. It doesn't have to be.

Re:My time with Rails is up by gaius on Sunday May 22, 2016 @04:45PM (#11750213)
Absolutely. At the end of the day you're doing some string substitutions then sending a text file over a socket. We were doing that in the early 90s! But to do it now we use these surreal Rube Goldberg contraptions with a hundred layers of abstraction.
Re:My time with Rails is up by vinceguidry on Sunday May 22, 2016 @05:03PM (#11750282)
And all programming itself is is turning strings of 1s and 0s into other strings of 1s and 0s.

Asking web dev to be less complex is like asking financial markets to be simpler. Websites are market tools, tools have to retain a competitive edge. You can't afford to ignore market trends. You can't afford to wait until everything is well-defined. You can't let craftsmanship get in the way of shipping.

You can buck the rules yourself and operate on whichever side of the tradeoff you want to operate in, but you can't expect everybody else to follow the same rules you do.

I mean, if you don't like the web, then by all means find a different domain. I personally love it, and find it absolutely fascinating. With the right tools, (Rails) the complexity is manageable.

Re:My time with Rails is up by forrestthewoods on Sunday May 22, 2016 @06:24PM (#11750536)
I don't think the web's complexities are intrinsic. It's layers and layers of crap built on top of crap. Computers are so mind numbingly fast that in some respects it's impressive we've made the web as slow as it is.

Which isn't to say that the crap mountain wasn't the best choice. It may very well be the pragmatic choice. The highest net benefit choice. But I don't believe it's intrinsic. I don't believe it has to be this way. Which means it's at least worth considering alternate paths. Even if in the end we picked the same way.

I work in video games. Currently working in VR. Where you absolutely must hit 90fps and never drop a frame. A certain degree of craftsmanship is required to ship. Layers and layers of abstraction on abstraction need not apply.

Re:My time with Rails is up by Psyonic on Sunday May 22, 2016 @08:42PM (#11751031)
Sort of unrelated, but any suggestions for experienced backend developer who wants to get into VR? I'm working on learning 3D graphics and c++, but could use a bit of direction.
Re:My time with Rails is up by forrestthewoods on Sunday May 22, 2016 @09:28PM (#11751181)
What's your goal exactly? Depending on your goal there's a few routes.

If you want to produce compelling VR experiences then I'd recommend you download Unity. You should be able to start making real, valid prototypes for different types of VR interactions in under a week.

If you want to graphics then I might recommend you poke at http://humus.name/index.php?page=3D or https://github.com/bkaradzic/bgfx. But graphics isn't my specialty so my thoughts aren't the strongest.

If you want to learn C++ then... that's an interesting question I've not thought of before. Maybe I'd start with "Learn C the Hard Way"? http://c.learncodethehardway.org/book/ I'm not as much of a C fanboy/C++ hater as other game devs. I quite like C++11 lambdas and move semantics. But I hate boost and it's ilk. So starting with C and later adding a dash of C++ seems like a good way to start.

Re:My time with Rails is up by gaius on Monday May 23, 2016 @12:49AM (#11751947)
Just as a side note I will add a piece of advice I wish I knew back in the day: learn C++ itself, not what I did which was to think I was doing that, but actually really only learn MFC (this applies to any framework or library, Qt etc etc). Having said that, the STL will stand you in good stead whatever you decide to do.
Re:My time with Rails is up by gaius on Monday May 23, 2016 @01:05AM (#11751999)
mean, if you don't like the web, then by all means find a different domain. I personally love it, and find it absolutely fascinating. With the right tools, (Rails) the complexity is manageable.

I built my first website in 1994. I know the right tools. Rails is not one of them.

Re:My time with Rails is up by nicops on Monday May 23, 2016 @12:17PM (#11754812)
Curious. What do you suggest?
Re:My time with Rails is up by Klathmon on Sunday May 22, 2016 @04:57PM (#11750263)
But at the end of the day aren't all platforms complicated.

It's been a while since I did GUI programming on the desktop, but I remember it being so complex to build cross-platform applications that rolling your own cross-platform abstraction would be downright ludicrous.

I think the parent commenters point is correct. People treat the web like it should be easy, like it should just be HTML, but its not. It's full of legacy stuff, it requires working on multiple "platforms" (browsers), it runs on all kinds of device sizes and shapes, and the applications being written for it are no longer trivial.

Re:My time with Rails is up by majewsky on Sunday May 22, 2016 @05:13PM (#11750306)
You should try Qt. It's always fun to write some open-source software, and find that someone ported it to Windows or Mac in a few minutes.
Re:My time with Rails is up by phamilton on Sunday May 22, 2016 @05:38PM (#11750390)
In my observation there are two things going on:

1) Broken platforms. How much "innovation" has occurred in javascript to compensate for a broken execution model? How much caching does your average rails app do because of the poor concurrency the the Ruby platform, requiring external services for persistence across requests?

2) Looking for challenging problems. Design patterns are often a solution to a meta problem. Building a CRUD app, there aren't too many hard domain. However, code maintenance is a hard problem. It involves many people using subjective judgement. So as a somewhat bored developer, I'm going to try to solve the meta problem.

It sort of pains me to see how much engineering effort has gone into essentially making broken systems more performant and maintainable.

Re:My time with Rails is up by citizenkeen on Monday May 23, 2016 @09:15AM (#11753607)
> It boggles my mind why developers don't take the web seriously as a domain, like it's not real coding or something.

I'm glad to hear people say this. I want to be a webdev (second career), but rather than code school I went back for an MSCS, because I really wanted to dive into the nuts and bolts down at the database implementation level.

I've done a fair amount of machine learning, ai, large-scale parallel programming, and algorithm design, and while I'm super-green, it's good to see the top comment is that the web is a serious domain.

Re:My time with Rails is up by PopsiclePete on Tuesday May 24, 2016 @05:05PM (#11765489)
I've written quite a few web apps over the years, sometimes in ruby, sometimes in go, sometimes python, sometimes C#, and I've actually never had to implement 'ActiveRecord::Base.create', much less poorly. I don't see what an ORM framework has to do with HTTP, honestly, the last 2 apps I worked on didn't even use a relational DB. I'd be curious how you'd finagle ActiveRecord to work with ElasticSearch - what would you do in that case?

I don't understand why web dev is so "scary" or "complex" that it needs 8 abstraction layers on top of it for my own protection. The only time I thought I needed hand-holding was when I didn't understand SQL injection and cross-site forgery/scripting (and once you do understand them, it's not difficult to protect yourself against those either).

If I found HTTP methods and headers, Javascript, CSS, Cookies and the rest of the web stack "scary" and needed hand-holding from Rails in order to get shit done, I'd be really, really worried about my skill set...

The web world is changing quickly and you have to ask yourself if you're a "web developer" or a "rails developer". I think you'd want to be the former.

Re:My time with Rails is up by mekoka on Monday May 23, 2016 @02:12PM (#11755678)
He said he's been dabbling with functional programming. I saw mentions of Elixir, Clojure, Scala and Haskell. Where did he say he was going to work in Java?
Re:My time with Rails is up by awesomepantsm on Sunday May 22, 2016 @03:55PM (#11749999)
Try setting up rails dev on a windows environment and get back to me.
Re:My time with Rails is up by xraystyle on Sunday May 22, 2016 @04:15PM (#11750086)
How is this relevant, exactly? Ruby was written on and designed to run on *NIX OS's, as is most of the software commonly found in webapps, because it all runs on Linux servers. I'm sure it'd be a pain in the ass to get MS Paint to run on Debian, too.
Re:My time with Rails is up by kefka on Sunday May 22, 2016 @04:46PM (#11750219)
MS paint on Linux is easy.I double click on paint.exe and it runs.

And I have WINE to thank for that layer of compatibility.

Re:My time with Rails is up by JustSomeNobody on Sunday May 22, 2016 @08:21PM (#11750954)
You realize it is that easy for you because it was a pain in the bottom for someone else, yes?
Re:My time with Rails is up by askl56 on Monday May 23, 2016 @08:23AM (#11753365)
Isn't that the esssence of programming?
Re:My time with Rails is up by jamesgeck0 on Sunday May 22, 2016 @04:15PM (#11750085)
Historically, Ruby in general on Windows has not been awesome. But it's not going to matter when the Windows Subsystem for Linux hits stable in a few months. http://blog.dustinkirkland.com/2016/03/ubuntu-on-windows.htm...
Re:My time with Rails is up by Ericson2314 on Sunday May 22, 2016 @04:21PM (#11750108)
I think that might be a bit too sandboxed for your needs.
Re:My time with Rails is up by rhizome on Sunday May 22, 2016 @04:36PM (#11750174)
It doesn't really matter anymore. It's been conventional wisdom for years to develop in a Linux VM if you have to use Windows otherwise. Unless that turns out to be more complex that the Windows Linux subsystem, I can't see VMs becoming an also-ran.
Re:My time with Rails is up by Ericson2314 on Sunday May 22, 2016 @04:45PM (#11750212)
If a Linux VM is fine for deployment, well then that specific component doesn't really need or use Windows very much does it. (That all unixy things need to put in VMs on a host running Windows is a very different constraint.)

If it's important to deploy as a Windows process, then the Windows Linux subsystem is not much better than a VM. Point is, its no substitute for a (better) MSYS2/Cygwin.

Re:My time with Rails is up by rhizome on Wednesday May 25, 2016 @09:12PM (#11774495)
I think I understand your point, and it's been a while since my MCSE expired, but unless Cygwin has improved a lot I would estimate a VM wrapped by Windows would be much easier to manage and admin.

Now if you're saying that the webapp itself would be required to be a Windows process, there's really no way around that. But as I implied elsewhere, the biggest stumbler for Rails on Windows has always been the lack of a compiler. Whether you compensate for that by installing a subsystem with that capability or by using a VM with the capability is largely a local problem to the company.

Re:My time with Rails is up by stephenhuey on Sunday May 22, 2016 @04:29PM (#11750146)
I've done that over the years and I used to answer questions on the RailsInstaller list, and yes, at times it was harder than at other times. I'm expecting it to be easier than ever thanks to Microsoft's recent announcement to support running Bash as a full-fledged citizen on Windows:

http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUs...

Re:My time with Rails is up by Retr0spectrum on Sunday May 22, 2016 @04:01PM (#11750020)
I think the majority of webdev tools are pretty tedious to set up on Windows without cygwin etc.
Re:My time with Rails is up by schwarrrtz on Sunday May 22, 2016 @04:31PM (#11750151)
Node is a one click install on Windows, no cygwin required.
Re:My time with Rails is up by mikewhy on Sunday May 22, 2016 @04:36PM (#11750176)
True, until you want to build native modules. Then you need Python and parts of Visual Studio
Re:My time with Rails is up by joshmanders on Sunday May 22, 2016 @06:22PM (#11750530)
So? If I want to build native modules on Linux or OS X I still need Python and other build tools. It's not fool proof on any OS.
Re:My time with Rails is up by Marazan on Sunday May 22, 2016 @04:05PM (#11750044)
Flask is no problem, Django is child's play to setup.
Re:My time with Rails is up by true_religion on Sunday May 22, 2016 @04:31PM (#11750150)
I feel like that's because someone put a lot of time and effort into making Python's core library play nice on Windows, and Pythonistas tend to interact with the OS/network only through core library functions.

To contrast, Elixir runs on Windows. However, it may be hard to get all your projects up and running due to various baked in concerns where they were written to support Unix-like systems only.

Re:My time with Rails is up by takno on Sunday May 22, 2016 @04:51PM (#11750236)
Never had any significant issues with Java stuff, or php for that matter
Re:My time with Rails is up by MrBra on Sunday May 22, 2016 @04:49PM (#11750228)
I don't know how long ago you tried it last time, but recently this has got much better. You surely could find some gotchas here and there, but it's not as much frustrating as it was before.
Re:My time with Rails is up by rhizome on Sunday May 22, 2016 @04:31PM (#11750158)
I did until 3.2. The only real problem was native extensions, and many gem developers provided win32 bins for those things if they support win32 at all. Granted, I personally wasn't (...) God's gift to clean code, but I could certainly work with anything other people (say, on IRC) were working with and talking about.
Re:My time with Rails is up by jdiscar on Sunday May 22, 2016 @08:07PM (#11750902)
The rails stack isn't designed for Windows, why should they waste dev cycles trying to support it? In any case, I do a fair amount of webdev on my windows gaming computer (don't want to mix work and side projects), VMs are so easy to set up that I barely install any dev tools on base os.