# Zsh and ruby functions

**URL:** <https://www.ruby-forum.com/t/zsh-and-ruby-functions/124071>\
**Category:** Ruby\
**Created:** [December 24, 2007, 11:03am UTC](https://www.ruby-forum.com/t/zsh-and-ruby-functions/124071 "2007-12-24T11:03:19Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![crucoba](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e8c25b/32.png) [@crucoba](https://www.ruby-forum.com/u/crucoba)\
**Post date:** [December 24, 2007, 11:03am UTC](https://www.ruby-forum.com/t/zsh-and-ruby-functions/124071/1 "2007-12-24T11:03:19Z")

</div>

hi roobyfiends -

i am trying to get zshell to use some ruby scripts transparently but  
running into problems.

in the ruby script i have:

#!/usr/bin/env ruby

and yet:  
[dc@metroid:~]$ type svnbatchmove.rb (12-24  
09:43)  
svnbatchmove.rb is a shell function

then running of course gives parse errors:

[dc@metroid:~]$ svnbatchmove.rb (12-24  
09:42)  
svnbatchmove.rb:20: parse error near `puts’

how do i coerce zsh into recognizing this as ruby?

if i run the script directly (ie full path) it’s fine…

i have this in my zshrc to prep the ruby scripts as zsh functions -  
is there another way to do this? i tried adding this dir to my path,  
but unable to find the new funcs.

autoload ~/rpm/bin/rubyfuncs/\*(:t)

but this gives:

[dc@metroid:~]$ which svnbatchmove.rb (12-24  
10:02)  
svnbatchmove.rb () {

# undefined

builtin autoload -X  
}

is it only possible to extend zsh with other shell algebra gook?

i found a workaround by defining a shell function to call the ruby  
one…

svnba() {  
~dc/rpm/bin/shellfuncs/svnbatchmove.rb $\*  
}

but this is obviously duplicitious and duplicative …

guess this maybe more of a zsh list thing but … tips appreciated!

/dc

---

<div class="post-metadata">

**Author:** ![crucoba](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e8c25b/32.png) [@crucoba](https://www.ruby-forum.com/u/crucoba)\
**Post date:** [December 25, 2007, 1:46am UTC](https://www.ruby-forum.com/t/zsh-and-ruby-functions/124071/2 "2007-12-25T01:46:47Z")

</div>

d c wrote:

> [dc@metroid:~]$ type svnbatchmove.rb (12-24 09:43)
> 
> # undefined
> 
> but this is obviously duplicitious and duplicative …
> 
> guess this maybe more of a zsh list thing but … tips appreciated!
> 
> /dc

Well, I’ve never used zsh, but you can just call “ruby  
svnbatchmove.rb”–this will always work. If that’s too clunky, you could  
create a valid zsh script called “svnbatchmove” that acts as a wrapper  
and calls “ruby svnbatchmove.rb”.

Dan

---

<div class="post-metadata">

**Author:** ![crucoba](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e8c25b/32.png) [@crucoba](https://www.ruby-forum.com/u/crucoba)\
**Post date:** [December 25, 2007, 1:54am UTC](https://www.ruby-forum.com/t/zsh-and-ruby-functions/124071/3 "2007-12-25T01:54:57Z")

</div>

Hello –

On 25/12/2007, Dan Z. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Well, I’ve never used zsh, but you can just call “ruby  
> svnbatchmove.rb”–this will always work. If that’s too clunky, you could  
> create a valid zsh script called “svnbatchmove” that acts as a wrapper  
> and calls “ruby svnbatchmove.rb”.

This is what the “command” builtin is useful for.

– Thomas A.

---

<div class="post-metadata">

**Author:** ![crucoba](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e8c25b/32.png) [@crucoba](https://www.ruby-forum.com/u/crucoba)\
**Post date:** [December 25, 2007, 1:59am UTC](https://www.ruby-forum.com/t/zsh-and-ruby-functions/124071/4 "2007-12-25T01:59:38Z")

</div>

These are shots in the dark, as I haven’t used zsh, but just maybe one  
of  
them will be helpful:

1. Is the #! line the first line of the file?
2. Just for kicks, check if it works in another shell?
3. Hard-code the path to ruby rather than using /usr/bin/env to find it
