Since it is so trivial to open a new tab, I would suggest making the execution of your commands as trivial as possible, and doing this the old-fashioned way.
You called out two specific actions, so let's work with those. Note that I'm going to be making a lot of assumptions based off what I know of Rails, but not necessarily specific to your project.
To cut a long story short, alias a command to do what you want it too, or create a trivial shell script to do what you want to.
Create a shell script named myapp.start
, with the contents:
#!/bin/bash
cd Development/rails/myapp
# Do any common environment initializations here, such as RAILS_ENV=development
script/server
You will likely also have to make a file named .bash_profile in your home directory, or modify one already existing, and add a line like;
export PATH="$HOME/bin:${PATH}"
Then, create a bin directory in your home folder, and move the myapp.start script into it. Ensure also it has the owner execute bit at a minimum (chmod 700 myapp.start
).
Then, open Terminal.app, type myapp.start
, and you have rails running. Alternatively, type mya then press Tab, and let autocomplete fill the rest, press return. Boom, server running.
By extension, you may already understand how to do a log file tail, but I'll continue on anyways. Create another file in ~/bin named myapp.taillog, with the contents:
#!/bin/bash
tail -F ~/Development/rails/myapp/logs/development.log
Again, place it in the bin folder, chmod 700 ~/bin/myapp.taillog
, then after starting then rails server, quickly hit ⌘t, type myapp.taillog
, and you have a log file being printed.
Two commands, two additional keystokes (opening the tabs), perhaps that's sufficient?
There are two very obvious improvements here. One is to write a shell function capable of "discovering" the names of rails apps, so you don't have to write a shell script for each, the writing a sub-command designed to start webbrick/your rails server of choice, and commands for tail -F'ing a few key log files routinely.
The second improvement is that it is likely that you could write an AppleScript that does the necessary terminal interaction, and appropriate command execution inside each one. But frankly, I suck at AppleScript and work in bash code and perl code all day, so I'm offering advice relevant to my skill set :).