Why not make Opal default for Rails?

Hello People,

I just read this blog post http://piotrsarnacki.com/2014/01/01/i-am-tired-by-rails-should-fundamentally-change-crowd/ .

Rails started with a mission to make web development easy. Part of its strategy is to bring Ruby to masses so that tasks that were tough till then became a breeze. Now most applications are moving to javascript, a language that is not liked by many Ruby people because Ruby is elegant.

Rails has answered this problem a bit by making coffeescript as default, but I feel keeping everything ruby like will make it better. There is this project called Opal http://opalrb.org/ which I am following, and I feel it will be great if Rails has this as its default say from Rails 5 or some thing.

What you people feel about this idea, will it change the universe or it just sucks?


Karthikeyan A K

It just sucks.

I would be opposed to this. In fact, I don’t really like having CS as default, though I use it for preference, for the same reason: Javascript, not anything else, is the de facto language of the client side. Javascript should be the default.

CS as a default isn’t so bad as it is designed primarily to expose ‘the good parts’ of JS in a syntactically cleaner format. How close it gets to JS is another matter, but 90% of basic code you write in CS will come out as recognisable JS. Ruby is not nearly as similar to JS as CS; your Ruby code might look pretty going in, but the more ‘Rubyish’ your Ruby, the uglier and harder to maintain the resulting JS will be. (Even transpiled CS takes a bit of getting used to, especially if you’re using the class syntax.)

There is a great explosion of compile-to-JS projects happening at the moment, some of which is very interesting; but Rails’s purpose isn’t (or shouldn’t be) to make web development easier for Ruby people, but to speed up development of real-world web projects as such. That means favouring the lingua franca of the client side where possible. Does Opal play nicely with Jquery? Backbone, Ember, Angular, Underscore, Handlebars … ? I know one language that certainly does, with no hiccups: Javascript. If the future is front to back Javascript, which I don’t really think it is, then you need to know Javascript - simple as.

Of course, it’s pretty minor, since adding or removing any compile-to-JS thing you require is simply a matter of changing a line in the Gemfile.