I know it is common for non-hackers interested in web development to ask how to get started, but I think my question is a variation and has not been covered in depth. I apologize if I missed a previous discussion addressing this issue.
I am attempting to teach myself Rails and have also made a concerted effort to understand Ruby. I have heard on many occasions that it is advisable to understand what problems Rails solves in order to use the framework to its full benefit and my little bit of experience supports this claim. While my study of Ruby has definitely helped me to understand some of the magic of Rails, there are holes in my understanding that Ruby knowledge alone will not solve.
My weakness is in understanding web fundamentals, and I would like to take a step back from Rails to do kind of a survey of those fundamentals. In particular, I know I need to read up on webservers and CGI. Any particular recommendations on either subject? I also wonder what other subjects I should be reading up on? Are there any books out there that do a survey of web stuff but are relatively technology agnostic? Any particular terms I should be googling for? (I do have a basic knowledge of html and css as well as a very rudimentary knowledge of mysql syntax).
Another area I would like to focus on is how to design the architecture of the web app itself, particularly in a MVC framework. The books I am using are tutorial-based but they never really address how to figure out what your models should be, etc. They just tell you how to make models in Rails. Any suggestions on this front?
I think that I should probably also learn some basics of database design even though ActiveRecord makes it tempting and easy to ignore. Is this a correct assessment?
To make a long post short, I am looking for advice on non-Ruby and non-Rails skills that I need to develop web apps. I know this is a great group of people to ask and appreciate any and all direction.
No matter how convenient a new abstraction might make things, it will some day "leak". If you don't know anything about the layer underneath, at that point, you're pretty shafted.
Some abstractions are more leaky than others. ActiveRecord is a very leaky abstraction. Make sure you have a solid grounding in database usage, db model design, normalisation, etc
As for the web in general, your stack of abstractions reads something like: ActionController > MVC for web apps > CGI-BIN/Servlets > HTTP > TCP > IP > ...
You can probably stop around HTTP or TCP and be ok.
I don't think you'll find a single book that covers all that, but maybe someone will have some suggestions.
Please note you don't need to become an expert at all this stuff - but you need to have a pretty good idea how it all fits together.