MacOS – install gem for older ruby 1.8 on Mac OS X 10.9 Maverics

cocoamacosruby

I installed osx-trash using the answer here but got the error:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- osx/cocoa (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /Library/Ruby/Gems/2.0.0/gems/osx-trash-1.0.0/bin/trash:35:in `<top (required)>'
    from /usr/bin/trash:23:in `load'
    from /usr/bin/trash:23:in `<main>'

Seems that Ruby 2.0 on newer Mac OS X no longer supports the "osx/cocoa" module and people recommend changing the script to run with Ruby 1.8 which I already have on my system. I edited /usr/bin/trash to change the first line to run the script as 1.8:

simbo$ diff /usr/bin/trash /usr/bin/trash.bak 
1c1
< #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
---
> #!/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby

But now I get the error:

/Library/Ruby/Site/1.8/rubygems/dependency.rb:247:in `to_specs': Could not find osx-trash (>= 0) amongst [activesupport-3.2.13, .... uuidtools-2.1.2, vmc-0.3.18, vmc-0.3.14] (Gem::LoadError)
    from /Library/Ruby/Site/1.8/rubygems/dependency.rb:256:in `to_spec'
    from /Library/Ruby/Site/1.8/rubygems.rb:1203:in `gem'
    from /usr/bin/trash:22

I think that this may mean that the original command to install the gem which I ran from the link above installed things for ruby 2.0 so running the script on ruby 1.8 has missing dependencies.

How do I fix the installed osx-trash script to be run properly?

Best Answer

If you have ruby 1.8 in your system then you should also have gem 1.8, in which case I think this should work:

sudo ln -s /Library/Ruby/Gems/1.8/gems/rubygems-update-1.8.12/bin/gem /usr/bin/gem18
sudo gem18 install osx-trash

now with the edit to the top of the trash script to use ruby 1.8 things will work.

Related Question