So, how do I get Textmate to use MacRuby, a branch of 1.9.2, instead of the default Ruby in OSX, 1.8.7?
问题:
回答1:
Simpler answers:
Install MacRuby
Go to TextMate->Preferences->Advanced->Shell Variables and add a variable named
TM_RUBY
set to/usr/local/bin/macruby
.- Alternatively, edit the
PATH
variable to include/usr/local/bin/
and just setTM_RUBY
tomacruby
.
- Alternatively, edit the
If you have installed MacRuby through RVM, then instead:
Generate stable wrapper:
rvm wrapper macruby-0.8 macruby
# creates ~/.rvm/bin/macrubySet
TM_RUBY
to/Users/yourusername/.rvm/bin/macruby
(must be the absolute path).- Alternatively, edit the
PATH
variable to include/Users/yourusername/.rvm/bin
and just setTM_RUBY
tomacruby
.
- Alternatively, edit the
In case it wasn't obvious from the UI, you can use the checkbox next to TM_RUBY
to enable or disable its use in TextMate.
回答2:
Been working on this since last night…finally got it to work
How to Get MacRuby Running on TextMate
By (johnrubythecat*)
*reference to john robie, "the cat", thief played by cary grant in To Catch A Thief
Ruby on OS X is currently 1.8.7 But latest version of Ruby is 1.9.2 (MUCH faster) And MacRuby (much better than RubyCocoa) is built on 1.9.2
- http://www.ruby-lang.org/en/
- http://www.macruby.org/
- http://rubycocoa.sourceforge.net/HomePage (obsolete, but if you're curious)
So here are instructions for easily building mac desktop apps using ruby
INSTALL RVM
1) install rvm with git
$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head ) http://rvm.beginrescueend.com/
1.2) source command in .bash_profile or .bashrc (so rvm bin can be found):
source $HOME/.rvm/scripts/rvm
INSTALL MACRUBY
2) Use rvm to install MacRuby
rvm notes # to see available rubies
rvm install macruby-0.8 # for exmpl
3) then, rvm --default macruby-0.8
(or at least rvm use macrmacruby-0.8
)
CONFIGURE TEXTMATE
4) update Textmate bundles with this script, just to make sure you're up to date; see:
- http://www.christopherirish.com/2010/06/28/how-to-setup-textmate-to-use-rvm/
- and https://gist.github.com/455521
--- #!/usr/bin/env bash
mkdir -p /Library/Application\ Support/TextMate/
sudo chown -R $(whoami) /Library/Application\ Support/TextMate
cd /Library/Application\ Support/TextMate/
if [[ -d Bundles/.svn ]] ; then
cd Bundles && svn up
else
if [[ -d Bundles ]] ; then
mv Bundles Bundles.old
fi
svn co http://svn.textmate.org/trunk/Bundles
fi
exit 0
5) Generate Ruby wrapper wrapper for TextMate
rvm wrapper macruby-0.8 textmate
wrapper is in $HOME/.rvm/bin
; it's called textmate_ruby
6) go to shell variables in TextMate preferences and set TM_RUBY
to
/Users/homedirname/.rvm/bin/textmate_ruby
that should do it
RUN YOUR APP
7) this script ran great —opens a Cocoa window
framework 'AppKit'
class AppDelegate
def applicationDidFinishLaunching(notification)
voice_type = "com.apple.speech.synthesis.voice.GoodNews"
@voice = NSSpeechSynthesizer.alloc.initWithVoice(voice_type)
end
def windowWillClose(notification)
puts "Bye!"
exit
end
def say_hello(sender)
@voice.startSpeakingString("Hello World!")
puts "Hello World!"
end
end
app = NSApplication.sharedApplication
app.delegate = AppDelegate.new
window = NSWindow.alloc.initWithContentRect([200, 300, 300, 100],
styleMask:NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask,
backing:NSBackingStoreBuffered,
defer:false)
window.title = 'MacRuby: The Definitive Guide'
window.level = NSModalPanelWindowLevel
window.delegate = app.delegate
button = NSButton.alloc.initWithFrame([80, 10, 120, 80])
button.bezelStyle = 4
button.title = 'Hello World!'
button.target = app.delegate
button.action = 'say_hello:'
window.contentView.addSubview(button)
window.display
window.orderFrontRegardless
app.run
And here is a video discussing how to integrate MacRuby with XCode.
http://thinkcode.tv/catalog/introduction-macruby/
It's 8.99, but I am recommending something I purchased myself. It's MacRuby is out of date (0.6), but it shows the nuts and bolts of using MacRuby in XCode, including setting up the XIB and making connections, creating the application delegate, setting up Textmate as your external editor.
Quite useful. Recommended.