Railsters:
While I have work tirelessly on Rails for the past few months, and boosting it for years, I have come to an important career juncture, and have decided to stop using it. No single reason stands out, but this short list should help you all understand my disgruntlement.
- The "dynamic typing" system should just be called "passive typing". Everything is just whatever type its environment wants it to be. Types should be more assertive, to prevent bugs, and every interface should declare what types it takes. This also helps self-document.
- Between Monkey Patching and Ruby's absurd "Module" system, every object essentially sprouts every method of every other object.
- The unit tests are easy to write for simple things like a database hit, or checking that HTML contains a given field. But they are absurdly hard to write for anything non-trivial, and this just takes time from debugging. If the tests' primary purpose are to provide what normal languages do internally, with simple type checking, then I can kill two birds with one stone by not writing unit tests and by switching to a much stricter typing system. I will start using Design by Contract, on websites, immediately.
- When the time comes to "pick a language", keeping track of which one you are in is a total pain. If you are inside Ruby, the #{} will insert contents into a string. But in RHTML, <%= %> inserts it. And don't get me started on the horrors of trying to figure out if I should write ", \", \\\', ', ", or ' into some string that may or may not emerge as JavaScript...
- Because of Passive Typing, the editors _can't_ provide typesafe command-completion, or even a simple Refactoring Browser.
- To scale, you just buy more servers. Oh, I can't _wait_ to tell my penny-pinching client _that_ one!
- Ajax destabilizes both servers and browsers. 'nuff said.
- Also, I heard a rumor that someone is going to sue 37signals for allegedly making web development "easy". The time is now to get clear of _that_ debacle!
In summary, Rails is simply a way to allow inferior programmers to get by with adequate website features. It is not a tool for serious or scalable
I am switching back to Tomcat immediately. I'm downloading it now, and I expect to have it configured by May 1st.