HINT This content is obsoleted on OSX 10.9 Mavericks
Automator workflow has the ability to execute ruby code, but it is not that obvious if you doesn’t know it.
To embed ruby code into workflow, you need to create a “Run Shell Script” action first, then choose “/usr/bin/ruby” as the shell. Then the script in the text box will be parsed and executed as ruby code.
So, from now on, you know how to embed ruby into automator workflow.
By default, Automator will load system ruby at
/usr/bin/ruby, which is ruby v1.8.7 without bundler support. For most ruby developers, they must have installed some kind of ruby version manager, such as
rbenv. As to me, I uses
RVM. So I wish I could use RVMed versions of Ruby rather than the system ruby, could be ruby 1.9.3 or even ruby 2.0 with bundler support.
To use the RVMed ruby, I tried several approaches by hacking different configurations or files. And at last, I made it doing this:
RVM provides a ruby executable file at
~/.rvm/bin/ruby. On the other hand,
/usr/bin/ruby is actually a symbol link that pointed to ‘/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby’.
So what we need to do is to replace the the symbol link with a new one pointed to
(You might need to replace the
/Users/timnew/.rvm/bin/ruby with the path to your ruby executable file)
After doing this, done, you have the RVMed ruby in your Automator Workflow.
You can try to excute the following code in Workflow to verify it:
If you do it correct, then you should see ‘1.9.3’ or any other version of ruby you have configured.