gem install rails

rake deploy

O'Reilly has posted an interesting factoid . For the first time ever, Ruby book sales have surpassed Python book sales. In the article he also names Rails as the primary catalyst for Ruby's massive growth in popularity. Then he briefly discusses Python's attempt to respond to Rails.I don't believe Python will be able to catch up to let alone surpass Rails in terms of popularity for a few reasons. By way of background, I have programmed professionally in Python for 3 years, and have been programming as a career for about 13 years now. I have tried a great number of the various web frameworks ASP, ASP/MTS/COM (ugh!), PHP, J2EE, ASP.NET (C#), Cold Fusion, Zope, mod_python, Twisted, Ruby on Rails. I spent significantly more time in some frameworks than others, but I never really *loved* any of them until Rails. In fact J2EE and ASP.NET were so bad in my opinion that I gave up entirely on web programming for a few years and just wrote python scripts to crunch data.After working with Python for a few years I felt like I was ready to venture back into the world of Web Systems. I thought Python would be the ideal language to use because of it's flexibility and general cleanliness. I thought because Python had a relatively active community I would be able to find a really nice Web Framework to use. However after trying numerous frameworks, I came away with the following conclusion: Python sucks for the web.The biggest problem for Python on the web is the same thing that makes Python so clean in the first place, significant whitespace. The second biggest problem Python programmers face is the mindset of the Python community, which is that there should be only one way to do things. The "one way to do things" mantra certainly seems nice to someone coming from Perl, but the general inflexibility of this rule began to wear on me after a while. It started to feel like I was using tools that didn't quite match the job. The quintessential example of this inflexibility is the refusal of the python core team to add a case statement to the language. There are numerous cited reasons, but the net effect is you have to use rather ugly nested if / else statements in the place of a well designed case statement. While that mindset may be good for a niche group, most mainstream programmers tend to prefer practical flexibility to dogmatic adherence to aesthetics.Significant whitespace in your code can be a beautiful and readable thing if you work in a relatively homogenous environment. It's definitely a pain if you have to merge code written by someone else, in a different environment, into yours (especially when they use tabs, or 3 space indents instead of 4). That problem is severely compounded when it comes to web programming. It's so serious in fact, that when it comes to templating, virtually all python web frameworks use some other language to do the templating. Primarily they use Kid and CherryPy. Both of those templating languages grated on me. I wanted something more consistent, more elegantly designed, and definitely something that was better integrated.Then I came to Rails and my first serious introduction to Ruby. Let me tell you, both Ruby and Rails knocked my socks off. The beauty, simplicity, and power of Rails is rooted in something deep within Ruby itself. Despite the claim that Ruby has weird syntax, I found it's syntax to be very clean and straightforward. As far as languages with syntax go, I would say Ruby has just the right operators in just the right places, which in my opinion make programs very readable.Something that definitely struck me while using Rails was just how much Ruby is used. It is used absolutely everywhere, to a degree that I have never seen in any other language. Whereas with Python you have to learn another entire mini-language to do web programming, with Ruby I could use the full power and expressiveness inside the .rthml file just as well as I could within the .rb files. Instead of finding some obscure tool and trying to get it setup and installed and working with my Python Web Framework, with Ruby I could just use RubyGems to automatically download and install the latest version of whatever item I needed. It's literally as easy asto download and install Ruby on Rails. When it comes to testing my application, Ruby comes with an incredibly powerful tool called Rake. Rake is essentially a build tool similar in concept to Make, but it allows you to express everything in Ruby. Rake is so powerful in fact that deploying to your production server has been canonized into a set of Rake tasks known as SwitchTower (once again included with Rails). With SwitchTower you can deploy effortlessly withThere are numerous things that I could mention about Ruby on Rails that are better than what I've seen in other frameworks. But instead of a laundry list of things that you may or may not like I'll leave you with this comparison. In terms of design, Windows is to the Mac as Python Frameworks are to Ruby on Rails. Windows is a powerful operating system, and you can kind of get it working most of the time. But if you use it a lot, there are things you will find frustrating and poorly designed. Whereas the Mac is a beautifully designed and tremendously well thought out system. The most common description is that it just works. So too with Ruby on Rails, from top to bottom, it just works.On his blog, Aaron Schwartz, while discussing the Reddit re-write, said he created web.py because all of the other Python web frameworks suck. I agree with his assessment, if not with his conclusion. The Python frameworks don't suck because the people who wrote them are bad programmers. They suck because they are trying to build a framework to solve a problem in an environment that Python is fundamentally not suited for.Python is a great language in and of itself, and there are numerous things it is well suited to, web programming just isn't one of them. If you are serious about building web applications, I strongly suggest you take a good look at the benefits and productivity offered by Ruby on Rails, I can almost guarantee your competitors will.