Tabs be damned

– at least that seems to be a clear oppinion of the Rails community.

Okay so I lied to you in the last post. I’ve been working on my first real Rails project for quite some time now, so instead of a realtime diary, I will be reflecting upon the major issues, that I went through (eg. “how to make a multiple-page wizard-like create controller”). The reason being, that I haven’t been allowed to speak in public about the project until now – we will release it in the coming week.

But I will break the cronology by starting with one of my latest issues:

Ruby on Rails does not allow tab characters for indentation in RHTML templates

Have you ever tried to get a wierd “SyntaxError Exception” when calling a page in your Rails application? There is nothing wrong with the inlined Ruby code.

It turns out, that if you indent your RHTML code with tab characters instead of spaces, the ActionViewer will report a compile error when evaluating your template.

I know, accept, and also appreciate, that Rails is “oppinionated” software. But this is really ridiculous. IMHO tabs are the only way to go – combined of course with spaces for alignment.

This has been an issue at least since Rails 1.1 (I haven’t been on Rails before that), and I found somebody mentioning a workaround then.

So I patched Rails and worked happily ever after – that is until yesterday, when I decided I wanted to release the app with Rails 1.2 instead of 1.1 (better to work out the knots before going live).

I was slammed with RHTML Syntax Errors again. And I had completely forgotten about this little patch, which was, of course, now overruled by the new version of Rails.

It turned out (after much debugging), that the ActionView has been recoded quite a lot, so the previous patch could not be applied in the same place.

But here is what you should do:

1) In Ruby’s lib folder, find the file:
rubygems1.8gemsactionpack-1.13.1libaction_viewbase.rb

2) From line 504:

def compile_template(extension, template, file_name, local_assigns)
render_symbol = assign_method_name(extension, template, file_name)
render_source = create_template_source(extension, template, render_symbol, local_assigns.keys)

add these two lines just in the top of the method:

def compile_template(extension, template, file_name, local_assigns)
# convert all tab-characters to space-indentation (4 spaces)
template = template.gsub(/t/, ” “) unless template.nil?

render_symbol = assign_method_name(extension, template, file_name)
render_source = create_template_source(extension, template, render_symbol, local_assigns.keys)

Now I only need to find out, how I can format my code in Blogger… 😉

Why I must use Rails but cannot abandon PHP

I think I’m an ordinary guy.

At least in programming terms, I’m pretty ordinary. Over the last year, a lot of people have been talking about, how they would like to switch permanently to Ruby on Rails, but they can still only use it for spare-time projects, since their company/customers/etc. are very deep into PHP/.NET/J2EE/whatever technology in existing projects.

I definetely fall into this category, which then – through the philosophy that “ordinary” is made up by the most people – makes me just like everyone else.

I have my own programming company in Denmark. We used to call ourselves a “webbureau”, but skipped the last part, since now only 20% of our projects are plain homepages with or without a CMS. The rest are real application-programming, although mostly with a webbased interface.

Most of our projects are developed in PHP. That means we have a lot of finished solutions for our customers in PHP, which again explains why it will be quite costly to abandon this language alltogether. Besides, I’ve come to like PHP, since it saved me from the IMHO hideous ASP/VBScript, that I used before (we’re back in ’98).

I’ve been a long way around. As a genuine C/C++ hacker, I’ve always had this urge to experiment with (for me) new things. This have included (in the past) Delphi, Java, and lately for web-development: Perl and Python (and some of its web-frameworks, inclding Zope and ). But always seeking back to PHP when it came to web-development. And my customerbase grew, and so did the software made in PHP.

So now when I’ve found Rails, I am in a position where I simply cannot just switch away from PHP, although I sure would like to. Rails is simply geniously made.

But I have just started a “spare-time” project, which I am making in Rails. And I will try to use this blog as a diary for this project. In the hope, that others (if any are listening) can learn from my mistakes.