サポート
RVMはボランティアのコミュニティによってメンテナンスされています。問題を報告する場合は、 RVMのIssueトラッカー にご報告ください。
もしあなたが手伝ってくれる、またはメンテナーの一員になりたい場合は、手伝い始めてください。RVM関連のプロジェクトは RVM Github organization でさらに見つけることができます。
スポンサー
Carbon Ads

TextMate

TM_RUBY環境変数を使用すると、TextMateでRVM gemsetをサポートできます。現在、RVMにはすぐに使える2つの構成があります。1つはrvm-auto-rubyで、(.rvmrcがある場合は)自動的にrubyを検出することをサポートします。もう1つはRVMの組み込みラッパー機能を使用して固定されたrubyバージョンのバイナリを生成します。

どちらの場合も、最初に最新の状態にすることが重要です。最近のバージョンでは、次のコマンドを使用してこれを行うことができます。

rvm get head

また、デフォルトのRubyを選択する必要があります。たとえば、1.9.2をデフォルトとして設定するには次のようにします。

rvm --default use 1.9.2

rvm-auto-rubyのアプローチ

rvmには、通常~/.rvm/bin(または、システム全体にインストールされている場合は/usr/local/bin内)にrubyバイナリが付属しており、rubyを実行する前に次の手順を実行します。

  1. RVMをロードします
  2. RVMRCファイルを探してロードします
  3. 通常のrubyとして実行します

このアプローチにより、追加の作業なしでプロジェクトごとにrubyを切り替えることができます。rvmがインストールされている場合、これはrvm-auto-rubyへのフルパスを取得するだけで済みます。これは次の方法で見つけることができます。

which rvm-auto-ruby

そして、TextMateの環境設定の詳細設定セクションで、TM_RUBY変数を指定されたパスを指すように追加または変更します。例として、このスクリーンショットでインストール例を示します。

RVMラッパーのアプローチ

TextMateのインストールで常に単一のrubyとgemsetの組み合わせを使用したい場合は、代わりにrvmラッパーアプローチを使用する必要があります。これにより、TextMateで使用できるrubyバイナリが生成されます。このアプローチを使用するには、まず使用するrubyとgemsetの組み合わせを決定します。この例では、次のようにします。

rbx@rails3
(rvm useで解析できるものであれば、ree、1.8.7、1.9.2@ninja-attackなど、ラッパーコマンドで動作します)。

次に、コマンドを生成する必要があります。rvmラッパーコマンドの一般的な構造は次のとおりです。

rvm wrapper [ruby_string] [wrapper_prefix]

この場合、次を実行します。

rvm wrapper rbx@rails3 textmate

このコマンドは、(前述のように)rvm binパスにファイルを作成します。ファイルの名前は次のようになります。

textmate_ruby
これはTM_RUBYの値に使用できます。したがって、TextMateを開いてTextMateの環境設定の詳細パネルに移動し、コマンドラインで実行した出力にTM_RUBY変数を追加または変更します。
which textmate_ruby
(例:/Users/wayne/.rvm/textmate_ruby)。

バンドルとTM_RUBY設定を有効にするために、TextMateを終了して再度開きます。

ラッパーのテスト

次の手順に従って、正常に動作するかどうかをテストできます。

  1. 新しいドキュメントを開きます
  2. 新しいドキュメントに次のコードを貼り付けます。
    puts RUBY_DESCRIPTION
    
  3. ファイルを 'ruby_test.rb' として保存します
  4. Command + Rを押してrubyを実行します。
「ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]」のようなものが表示される場合は、最も重要なのは 'ruby 1.9.1' の部分であり、期待どおりに動作しています。

TextMateがデフォルトで使用するrubyのバージョンを切り替えたい場合は、次の方法でデフォルトのRVM ruby​​バージョンを変更できます。

$ rvm use rbx@rails3 --default
RVMは、各プロジェクトの.rvmrcファイルに基づいてrubyのバージョンとgemsetも切り替えます。

ラッパーコマンドの自動化

RVMが現在のRubyを変更するたびにTextMateのRubyを切り替えたい場合は、スクリプトファイルを実行可能にすることで、rvmのhooksディレクトリにある "after_use_textmate" フックを有効にできます。

$ cd ~/.rvm/hooks
$ chmod +x after_use_textmate

これで、プロジェクトディレクトリに切り替えてrvmが自動的にRubyを切り替えると、TextMateは現在のバイナリで実行する準備が整います。TextMateのRuby環境がそれに応じて変更されるため、作業中の主要なプロジェクト以外のプロジェクトのディレクトリに切り替えることによる副作用に注意してください!

TextMateが最新であることを確認する

次に、TextMateが最新バージョンであることを確認し、次のスクリプトを実行してすべてのバンドルを更新します。

#!/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

注記

TM_RUBYシェル変数を変更するには、TextMateでメニューを使用して次に移動します。

Textmate | Preferences | Advanced | Shell Variables

問題がある場合は、TextMateのbundler Builder.rbを変更する必要があるかもしれません。TextMateは独自のビルダーを使用するため、それを削除することで、上記で指定したTM_RUBYを使用できます(Seivan Heidariに感謝します!)。

cd /Applications/TextMate.app/Contents/SharedSupport/Support/lib/ ; mv Builder.rb Builder.rb.backup

Ruby 1.9.Xとの互換性のためにosx-plistを更新する必要がある場合は、これが役立つ場合があります。

git clone git://github.com/kballard/osx-plist.git
cd osx-plist/ext/plist
ruby extconf.rb && make
cp plist.bundle /Applications/TextMate.app/Contents/SharedSupport/Support/lib/osx/

Ruby 1.9+で問題が発生した場合、つまり

  ruby:0:in `require': /Users/someuserhere/Library/Application Support/TextMate/Bundles/Ruby.tmbundle/Support/RubyMate/catch_exception.rb:13: invalid multibyte char (US-ASCII) (SyntaxError)

バンドルの更新バージョンを確認するか、問題のファイルを手動で編集し、ファイルの先頭に次を追加する必要があります。

# encoding: utf-8

これにより、Rubyは正しいテキストエンコーディングでファイルを読み取り、マルチバイト文字を許可します。別の解決策は、textmate_rubyを介して呼び出されたときに、ruby 1.9.Xを常にUTF-8モードで実行することです。これを行うには、textmate_rubyファイルを編集し、次の行を含む行を置き換えます。

exec ruby "$@"

次の行を含む新しい行に置き換えます。

exec ruby -wKU "$@"

その他

除外されたファイルを使用してプロジェクトディレクトリを開くためのシェル関数を作成できます。このアイデアの簡単な例を次に示します。

上記の関数コード(最初の行を除く)は、dotfilesを保守していない場合は、dotfilesまたは~/.bash_profileに配置されます。