rbenv といえば 複数バージョンの Ruby を切り替えて使うための環境を提供してくれる便利なツールとして欠かすことのできないものですが、機会があってそれがどうやって動いているか調べたので、ここに書いておきます。また ruby-build は ruby をインストールするためによく使われている(というか使ってない人いないのでは)rbenv のプラグインです。rbenv install というコマンドは ruby-build が提供しています。これについても一緒に書きます。 はじめに断っておきますが、間違ったことを書いているかもしれないのでその辺はご了承ください。また、将来 rbenv の変更によって変わってしまう部分もあるかもしれません。 また rbenv のドキュメントはとても充実しているので、それを読めばここに書いてあることはだいたいわかると思います。 もくじ rbenv のインス
~/.rbenv/以下に複数のRubyバージョンをインストールして、それぞれのRuby環境を切り替える仕組みを提供する。 ~/.rbenv/ (rbenvがRubyを管理するルートフォルダ) ~/.rbenv/shims/ (rubyやgemがインストールするコマンドへのラッパーを保存しておくフォルダ) ~/.rbenv/version (global環境のRubyバージョンを記録するファイル) ~/.rbenv/versions/ (Rubyの各種バージョンをインストールするフォルダ) Ruby環境の構造 例えば、rbenvがインストールしたRuby-1.8.7-p375は、以下のような構造となっている。 ~/.rbenv/versions/1.8.7-p375/bin/(実行コマンドを含む:erb gem irb rake rdoc ri ruby testrb) ~/.rbenv/v
タイトル読んで納得した人は読み飛ばしてください。 VM の設定が完了するのを待ちつつ Fulentd Casual Talks #2 の ust 聞きながらこれを書いてます。 capistrano-rbenv 使ってますか? デプロイ先で rbenv を使う場合は capistrano-rbenv が非常に便利です。 config/deploy.rb に # rbenv setting require 'capistrano-rbenv' set :rbenv_ruby_version, '1.9.3-p374' set :default_environment, { 'RBENV_ROOT' => "#{rbenv_path}", 'PATH' => "#{rbenv_path}/shims:#{rbenv_path}/bin:$PATH" } と書いておくだけで rbenv を利用し始
ndenv のエントリのおまけで anyenv install plenv 作るかもと書いておいたら、@koba04 さんから欲しい!というコメント頂いたので、とりあえずで実装してみました。ついでに anyenv の説明をば。 riywo/anyenv 何? rbenv をコピーした plenv や ndenv などは、.bashrc とかに 2 行追記して使うわけですが、数が増えるとこんな感じになってなんか悲しいです。 export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" export PATH="$HOME/.plenv/bin:$PATH" eval "$(plenv init -)" export PATH="$HOME/.ndenv/bin:$PATH" eval "$(ndenv init -)" ... そこで
rbenv 環境下で実行された Ruby プログラムの中から他の Ruby プログラムを起動するときに、 rbenv 環境をリセットしたい―要するに別のバージョンの Ruby で外部プログラムを実行したい―という事情があったので rbenv のメカニズムについて調べた。 rbenv 環境下で ruby コマンドを実行するとき、実際にコンパイルされた ruby バイナリが直接実行されているわけではない。 rbenv 環境をお膳立てした上で ruby バイナリを exec するラッパーのシェルスクリプトが実行される。こういうものを binstub と呼ぶ。 binstub である ruby という名前のシェルスクリプトの中身をみてみると、最終的に rbenv exec というサブコマンドを呼び出している。 rbenv のサブコマンドはリポジトリでいうと libexec ディレクトリ以下にある。
is a totally awesome idea still being worked on. Check back later.
rvmやめてrbenvにしました。最初はrvmつかってけど、rvmが重厚でそんなに機能にいらないと思ったので、軽量で扱いやすそうなrbenvを使ってrubyを入れなおしました。 rvmはcdコマンドとかを上書いているのとかも気持ち悪かったです。。。libyamlが入って無い場合は予めhomebrewで入れておいてください。ruby-1.9.3を入れる場合は必須です。無いと再度rubyをコンパイルすることになります >_<作業手順$ rvm implodebashrc bash_profileから設定を消す$ source .bash_profile これ忘れるとcdコマンドでwarnが出る!$ git clone git://github.com/sstephenson/rbenv.git .rbenv$ echo ‘export PATH=“$HOME/.rbenv/bin:$PATH”
rbenv と RVM との違い 列挙してみる。 rbenv は RVM と違ってシェルにコマンドをロードしない → 代わりに $PATH を追加するだけで使えるrbenv は RVM と違ってシェルコマンドを上書きしない(RVM は cd などを RVM 独自のものに置き換える)rbenv は RVM と違って設定ファイルが無い → どのバージョンを使うかの指定のみrbenv は RVM と違って Ruby をインストールしない(rvm install 相当の機能が無い) … 代わりに自分で好きに Ruby をインストールできるし、rvm install 相当の ruby-build を使うこともできるrbenv は RVM と違って gemset の概念がない … 代わりにアプリケーション毎の Bundler を使ったほうがいいよrbenv は RVM と違って他の gem を変更する
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く