Rails 4.2.3 and 4.1.12 have been released
weblog.rubyonrails.org
weblog.rubyonrails.org
For those who want to remember the mood of the times, circa 2005, Bruce Eckel did a great job of capturing it in his December 2005 essay "The departure of the hyper-enthusiasts":
http://www.artima.com/weblogs/viewpost.jsp?thread=141312
He was lamenting/celebrating the sudden end of the hype around Java.
Railscasts was active. This was huge. Repeating for emphasis. Railscasts was huge for me.
There were a few headscratchers along the way - RJS, components, maybe a few other oddities (I think turbolinks falls into this category), but they tend to get removed as time goes on if they don't work for a lot of people. The Rails team may get pretty enthusiastic about some weird stuff now and then, but they're also pretty good about reversing their mistakes. They seemed to have learned from the 2->3 transition hell as well. Upgrades are fairly painless now.
That said, it's still very much relevant. It's been polished to the point where you can really do a lot with very little work. There are solid, well maintained gems that do lots of common tasks (although there are a few things that are strangely missing from the community). The REST convention is very powerful, and the code is easy to follow.
I resisted the move towards complex js front end frameworks because I was tired of figuring out which one to learn. That hasn't changed. I abhor the pace of js framework development - I can't justify learning a lot of it from a business perspective. It is just too unstable. I have clients using Rails apps I wrote 7 years ago that are still very maintainable, and that is great.
When I need complex UI's I take a hybrid approach and have rails load miniature angular apps on a page by page basis. If the view is complex enough, I have it load up a single file angular app to handle that complexity - but only for that page. A 4 line helper loads the angular files automatically. Otherwise, it's all Rails. I've found this approach to be very flexible - it's able of delivering a very rich UI where needed without overcomplicating the good stuff that Rails provides for free.
Even if I were starting over today, I think Rails would be at or near the top of my list. I feel for folks picking it up now, though, as it is a little tougher than it used to be.
I'm finding Turbolinks partial replacement a good option in some cases too.
The thing with not doing a traditional SPA in one Javascript framework, is you can rip out or add anything at anytime. So say in the next 30 seconds when a new Javascript framework comes out, I can use that in my Rails app. If I embraced Angular for my entire app it would be impossible to change the framework out. I've been able to play with React, Knockoutjs and others on certain parts of my app because I'm still embracing traditional navigation(with Pjax or Turbolinks)
I recreate the view directory structure in the assets folder, but only for views where I need a complex (angular) UI. So I might have a file in assets/javascripts/users/show.js because the users#show view is more complicated than I want to do in rails.
If that asset file exists, I have a helper automatically load it into the head section of the view layout when the users#show action is hit. The helper itself is only a few lines of some obscure rails code that looks up the name of the controller, action, etc and looks up the files in the assets directory. If you match the view directory structure to the assets directory structure, it stays very organized and is all done by convention.
In the show.js file, I will create an entire mini angular app (one file). The show.html.erb view will just contain angular markup (and maybe some erb). It's that simple. If Angular needs some instance variables from rails, I just pass them in to js with a couple lines in a <script> tag at the beginning of the view.
If I need a custom directive, I put the templates for those in public/templates (there may be a better place for these, depending on what you're doing - for my use case, this was fine).
There are some downsides - you have to separately compile each js file. I suppose you could do them all together, but I like keeping them separate. But largely, you can lay angular on top of rails in a very unintrusive manner this way. It probably doesn't work for every situation - you have to keep your angular apps small or it gets complicated again. But it really lets you enhance the UI of a rails app without a lot of technical debt. Code reuse can be a challenge (organizing bits that are shared is kinda wonky), but often the angular apps are small and simple enough that this isn't really a problem. Repeat yourself a little. It won't kill you.
An example of where I've used it is to load a chart and some daily/weekly/monthly selectable data that is sortable by columns, by date, with pagination, search fields, etc. I make the data available via rails as JSON, and just have the angular app pull it all in for the user to manipulate.
Another would be a form that creates a query interface similar to the one used by google analytics to create custom segments.
There may be better ways to do all this, but this approach has served me well. It's a little rough, and I'm sure it could be improved. As always, YMMV.
...such as? It'd help to know what you consider to be "better alternatives" because it gives scope to what your priorities are. I've seen discussions in which people say, "Well now there's Sinatra"...which is fine, but that's more of an opinion about "Lightweight projects and systems are nicer" rather than "Sinatra is better than Rails". I used to use Rails all the time but now I do most data projects in Middleman...but that's because I prioritize static builds and front-end engineering and most importantly, simplified my data infrastructure so that it can be represented as a spreadsheet or plaintext YAML...but that's not something applicable to all projects.
One of the most valuable parts of Rails is its opinionated infrastructure...and I think that's helped it be a little more nimble from version to version.
Can't speak to Play though.
The configuration syntax (YAML) shown in https://dropwizard.github.io/dropwizard/manual/configuration... looks quite nice. It says there you can use JSON instead. The syntax Gradle uses (i.e. Groovy) has a lot of cruft, including even a full programming language, which can be misused in build config files so best steer clear.
Rails run perfectly on the JVM.
Basically, a few years ago I thought it was easier to build my own framework in Golang, C, C++. I've also used PHP, Node and Flask from time to time. After doing all that, I had a pretty good understanding in how it all works, and can see the beauty in some of the way Rails works. I definitely think it'll keep growing and is worth learning if you're into web development.
citing the parent
no that's bullshit, just do the rails tutorial online and you'll be good to go. OF course you need to know Ruby. Like with any other language, you can't just learn the framework.
If a person know Git, HTML, JavaScript, and one server-side language, I can teach them enough Rails to build production apps in a few weeks. I've had a lot of success with that.
We're finding it to be incredibly productive, and more than performant for our needs — especially when you couple it with Postgresql.
While most people are arguing about web framework speeds Rails has been putting in features that are useful, like mail previews, strong params, async emailing, Russian doll fragment caching(nice if your still doing traditional templates, can be used with JSON rendering too). The community also has very nice and mature libraries for doing authentication, authorization, audit trail, and uploading.
Not to mention, testing is in out of the box.
But so can Spring,Django or Symfony if you know them from the inside out.