This.
This.
I find it about 2.44 times as annoying as someone commenting "upvoted". I now reflexively downvote any comment starting with "This.". I know I have no power to alter such a strong internet meme, but I thought I'd mention it to get it off my chest. Sorry for wasting your time with this post.
To me, what it signals is that the commenter is aware of the unpopularity of the idea. They've given it a second consideration and still believe in it. By saying so, they're asking the reader to also give it a second consideration.
It's saying "this is more than a kneejerk reaction for me, please respond with more than a kneejerk reaction".
I've been a .NET developer for over 10 years. I'm a Rails "beginner". I'd say I'm comfortable with web technology, and yet Rails was an absolute nightmare for me to get started with.
If the Rails community wants people like me to stop doing what they were doing and use Rails instead, it MUST be easier to get started with.
My experience with Django and Plone, more often than not, makes everything much more painful than it would be were I more comfortable with, say, ASP.NET.
Me too, and I just started using Rails in the last few weeks and am finding it a joy to work with. Way better than .Net. How exactly is it a nightmare?
One expects a learning curve starting any new language, but I prefer that to start AFTER I've got it installed.
I installed it that way, wasn't difficult at all.
As for Ubuntu, it's a sad state. Installing ruby-rvm and/or rubygems from the the repositories can break your whole system.
in general, windows support in the ruby world is sort of a third class citizen, but I had thought rails installation was a solved problem
Not to mention that having to deal with rails legacy code, you quickly realize that despite the original developer's best efforts, the whole magical+'convention over configuration' aspect of rails just totally goes against the concept of 'self-documenting code'. Compound that with the fragile version requirements of both Ruby and Rails, and you have a recipe for frustration. Out of any given search I perform, about a third of the 'relevant' results are for incompatible versions of rails, making it hard to find anything reliable outside the official docs (which leave a bit to be desired).
I may just be spoiled by the relatively conservative + documentation-heavy nature of most of the python frameworks I've worked with, but considering the popularity of rails (even amongst non-developers), I guess I just expected the barrier to entry to be a bit lower...
I learned rails and django at about the same time, and I never understood the praise of the django docs. Both projects have above average documentation for open source projects, but if anything I find the rails docs are far more consistently up to date compared to django. Both have helpful and active communities though (which is far more important imo), and I never really had that hard of a time figuring something out.
I think rails has a "For Noobs" reputation with people who have never used it, but as someone who didn't really have any preconceptions going in, I find this "rails 3 is hard" thing really hard to understand.
I agree, it's not terribly hard to pick up the basic idea, but it still doesn't lend itself to the idea of being 'self-documenting', which has always been a helpful fallback when dealing with python stuff that I encounter problems with. I guess it kinda just feels like it encourages too shallow of an understanding of what's going on, especially if for some reason I might want to tweak/customize certain things later on; it feels more geared towards giving you a fish, as opposed to teaching you how to fish (which is highlighted by the 'standard' encouragement to use lots of code generation). Even after going through the docs, it took me way too long to get even a vague idea of how to properly set up a custom model/migration without the rails generator tool. But I'll admit, that's all a lot more in the realm of personal preference.
Bundler is cool, but even with strict versioning, setting things up for the first time is no walk in the park. I won't blame rails for that though, that's clearly more of an ecosystem problem. A bigger problem than versioning though (in my eyes anyway), is when plugins follow this 'rails-way' of doing things magically, and leave no clear way to troubleshoot problems when they arise (devise, I'm looking at you).
I too find the rails guides and rails tutorial to be immensely helpful, but it's more because I would literally be completely lost without referring to them every 5mins, than because I find them terribly insightful. I know the django docs aren't really that much better, but since I can usually work my way around a django project without referring them as frequently, I guess my standards for them is lower? Same could be said for a lot of their plugins, because again, at least there I have been able to fall back on 'self-documenting code' most of the time.
I do think rails is pretty cool, and I could see why it got the praise it did, but I would probably only use it on small projects that involved only a handful of people from the get-go, because I would feel bad dropping a newbie onto a mountain of legacy rails code.
I have been doing rails every day for about two years now, working on a moderately large (200k loc) app, and we very rarely go against the "rails way" of doing things wrt to naming. Like if you have a model called Post and a model called Comment with a line that says "has_many :comments" in the post, there is a lot going on. The name of the accessor will be called "comments", it will lookup data in the "comments" table that have an fk of "post_id" and materialize a collection of Comment objects.
I find those are good conventions, they are readable, and more importantly, they are consistant across all the rails apps I will ever see. So when I write new code, or am reading code I am not familiar with, there is this whole class of things I don't need to make decisions about, since there is already this implied group understanding of the way things should be.
Now, in the time I have been doing this, there have been probably around 3-4 times when I _have_ wanted to customize those things, but it is really so incredibly rare that I would go so far as to say you wont hit a point where going against the convention is a good idea until you do this professionally, at which point hitting up apidock and finding out about the :class_name and :foreign_key options.
The places where I tend to branch out is things like custom validators, or putting a bit more architecture in then jamming everything into fat models, but fighting rails conventions really isn't something you ever want to do no matter how experienced you are with them
>> Even after going through the docs, it took me way too long to get even a vague idea of how to properly set up a custom model/migration without the rails generator tool. But I'll admit, that's all a lot more in the realm of personal preference.
I think this is where the disconnect is for me about accusations of magic. A model is a ruby class that extends ActiveRecord::Base, is named as the singular version of the table, and is put into the app/models directory. I don't find any of those things particularly magical or mysterious, but if you only use the generators then you are never forced to think about the implications of the code that is being used, so that process of learning gets pushed out until way later.
The other thing is I see it recommended quite often to skip learning ruby by itself, and just pick it up as you go with rails. I think that is terrible advice, rails uses many features in the ruby language that aren't common in other similar languages. So when you run across an api like the create_table which uses a builder pattern with blocks, it seems like a lot more magical then it actually is.
Personally, I only use generators to create migration classes, and that is just so it puts the timestamp in for me. They are really there to help beginners get going (and potentially write some boilerplate code for you, although I usually would rather only write the bits I need rather then delete all the stuff I don't need). Maybe they do more harm then good though, and people should start recommending that beginners learning the framework create files manually until they gain a certain baseline of understanding.
I don't know what you mean about versioning, but IMHO, the versioning story is more solid in the Ruby world. I like virtualenv and pip, but I like RVM, gems and bundler more and had fewer problems while using them. Like, try to specify Maxwind's Geo-IP library as a dependency in a pip requirements.txt and you'll know what I mean.
It really depends on your learning style. Myself I like to read the API docs, or look at the source-code. The Rails Guides are pretty good too, without being boring.
Also, make no mistake about it, Django and Rails are different in mentality. When starting with Rails, don't bring along your preconceptions about how the framework should work.
So if the .NET community wants people like me to stop doing what they are doing and use ASP.NET instead, it MUST be easier to get started with.
And no, I don't want to develop on top of Windows or Visual Studio. Start from there.