I was using tmuxinator for this, but found that all of my sessions were essentially the same thing except for the name and the working directory.
So I just wrote a shell script that takes a directory, using basename for the session name, starting up what ever windows and panes it needs to. I have two variants, one for generic dev stuff (shell and an editor) and the other is for rails work (shell, editor, logs, rails db and a rails c in the last window).