I think I was aware of the existance of something called Netbeans in the Java world but for some reason I had always assumed it was some kind of object packaging thing, like Java Beans.
I had been using E Texteditor for about three months and a few things were niggling at me about it:
- My project has many files and I have many files open at once. The files all open in tabs and soon I have too many tabs to be shown in a horizontal bar. With E I end up having to horizontal scroll all the time to get to the tab for the file that I have selected: it doesn't automatically scroll to that tab. As I say, it's a niggle but I've done it too many times.
- It comes with lots of textmate bundles and more can be downloaded but first you need spend time working out what they are supposed to do and how you are supposed to use them, then you have to determine just how broken the script is after its port from an OS X environment and whether you can be bothered to fix it.
- Unlike every other editor on the windows platform the INS button doesn't toggle into overwrite mode.
- I became familiar with it and started to get bored. It lacked depth apart from writing my own textmate-like stuff which I don't have time to do.
The one thing that kept me using E was the ruby bundle that dumped unit test output into a window with stack traces so I could easily click on a line where an error occured and open it in the editor.
Still I started researching what else was available. I use linux at home all the time now and I wanted a cross platform editor/ide.
First I tried Jedit which is another editor written in Java. While it has many features it had a number of it's own niggles:
- the way it displays text is just ugly. It has trouble rendering fonts in anything like a crisp and clear way. There are settings for subpixel antialiasing or whatever it is but I couldn't get it working nicely under Windows. It was better under Ubuntu.
- (silly niggle) instead of a single tree the file manager has two selection controls, a tree for directory and another for the files in the directory. This means mucho switching between the two controls and just reminds me of Windows 3.1 file open dialogs. The project manager is better and has the traditional single file selection tree holding both files and directories.
- the mechanism for running a command and capturing the errors wasn't set up for ruby and I didn't feel inclined to develop a regular expression to parse them. Laziness on my part.
The font thing put me off Jedit the most, it's just awful.
Then I found Netbeans and discovered that despite the misleading name it's an editor/IDE. It comes from the java world and is written in java but it has plenty of modules available to support C/C++ and Ruby/Rails. And the Rails support actually works. I'll emphasise that again, it works. Unlike the fragile stuff in Eclipse and the half-hearted E texteditor bundle ports, the rails features work and are usable: this is an environment that I can use without having to keep a command line open in the background.
The rails support gives me:
- can run and debug a rails environment from the IDE. If I'm editing a file for a rails view, for example, I can press CTRL-R (not the default) and it will start a rails server and open firefox and the URL that relates to that view! The way it runs the server from the IDE is robust and I can even hibernate my laptop, resume and continue running it. That's robust.
- When I say debug I mean the debugger works. It's not an interactive debugger in that I haven't found a way to evaluate expressions from a breakpoint but just being able to breakpoint, single step and watch variables is something.
- run a rails console from the IDE. This is nice except the up/down keys don't work for command history which is a major downer.
- run migrations
- The project tree for a rails application displays the project directories in a slightly flatter way which makes navigating the project much easier. For example, the app directory is suppressed. It's still in the file system but the project doesn't bother to display it.
- Pressing ctrl-shift-a in a view will take you to the controller for that view.
- Pressing ctrl-shift-t in a controller will take you to the tests for that controller.
- There is a built-in database client that lets me browse the mysql databases and run SQL statements.
- There's a built-in gem administrator that shows me what gems I have installed and, interestingly, lists what more are available. This works better under windows than linux as under the latter it is unable to run sudo and install new gems.
- Administer the rails plugins in a project.
General Features:
- Very nice project-search facility, best I've used.
- Refactoring that works! Want to change the name of something, run the refactoring, get a preview of what changes it will make, then apply the changes. I've never dared to try refactoring before but I could use this.
- Runs just as nice on windows and ubuntu.
Netbeans annoyances:
- Initially Netbeans wouldn't run, it would just lock up on opening. I tried installing a development version, googling etc but no joy. I was determined to get it going and ultimately I downloaded the Process Monitor to see what it was trying to do. It turned out that it was trying to use the cygwin version of subversion for something or other (who knows what) and this was locking up. I resolved the situation by simply renaming the cygwin svn.exe to svnhidden.exe and netbeans could start. Once it was sentient enough to open a settings window I installed a windows command line version of subversion for it to use. I'm going to add some keywords here to help other googlers find this fix: netbeans hang lockup freeze dammit ffs.
- Double-clicking in the project tree doesn't always open a file. Often have to right click and click on open.
- Can't seem to use save-as to copy a file. Have to go through irritating 'new file' wizard and copy/paste.
- No apparent python support, not that I care much these days.
- Not sure how well it would support a mixed ruby/c development project.
Conclusion: Netbeans is the nicest rails environment I have found so far.
UPDATE: don't just take my word for it.


It's interesting you say that about netbeans. I tried using version 5.5 a while back and found it much worse than Eclipse(which we use at work for our application development).
Your mention of project-search, refactoring and running on multiple platforms also rings true about Eclipse, as i found all of those to work exactly as you described they work in Netbeans.
Although, i havn't used the Rail's plugins, so i'm unsure how stable they are in Eclipse, i have used the C/C++ ones, and they worked fine.