2012年12月30日日曜日

Rubyでコマンド一つでWebサーバを立てるadsf

config.ruを書いてrackを使うのもいいが

コマンド一発でWebサーバが立ち上がってくれるのはありがたい!というわけで紹介です。

インストールから起動まで

adsfをインストールして、ドキュメントルートにしたいディレクトリへ移動しadsfと打つと、3000ポート(変更可)で起動します。楽。めっさ楽。


gem install adsf
cd $document_root
adsf

プログラマーがHTMLとかCSSとか静的なファイルだけを扱うことって少ないのですが、時々必要になるので便利です。生成されたドキュメントをfile:///で見れないときとかね。

2012年12月25日火曜日

今プロジェクトマネジメントに置いて大事なこと

コストがやられたようだな

「ククク...奴は四天王の中でも最弱...(※ただし顧客に限る)」

たんなるつぶやきです。さらっと流しましょう

四天王じゃなくて、今は五天王かもと思う

  • 品質
  • コスト
  • スケジュール
  • スコープ
  • そして、モチベーション

最近、まつもとさんがPerlがあるのになぜRubyを作ったのかという話で、モチベーションも大事なリソースの一つだよねって話をしていて、なるほどと思った。というか、自分はモチベーションにかなり左右されるタイプなので、モチベーションが低い時はほんと辛い。(せめて、就業時間くらい、最低限の生産性は確保したいって微々たる責任感くらいは持ち合わせているつもりだから)


モチベーションの3つの柱

どこかの外人さんが言っていた話なのだけど、この3つが重なるとモチベーションは最も高まるらしい。聞いていて、自分もなるほどなと思ったので紹介しておきます。出典が分からなくてすみません...

  1. やれること
  2. やりたいこと
  3. やるべきこと

つまり自分が達成できるだろうし、達成したいし、達成すべきだと思うことですね。ある程度スキルもあって、ちょっとくらいやってみてもいいなと思っていて、周りも期待してくれているっていうような状況だったりとかですね。コーチングの方から来てるものなのかな?。モチベーションが低いときは、とにかくやってみるというのが一番らしいけど、高めるという時は、やれることを増やすこと、やりたいことを見つけること、やるべき課題に出会うことが大事なのかもしれませんね。PMなら、メンバーをそういう環境に導いて行くといいのかもしれない、と、今思いつきました。(PMじゃないけど)

2012年12月24日月曜日

gitのリモートレポジトリで削除されたブランチをローカルのも削除する

git remote レポジトリ名 prune

git branch -a でorigin/*という感じで、いくつものトピックブランチが残っていると思うのですが、年末ですし、お掃除しましょう。

やり方は、git remote origin prune。簡単ですね。

自分でpushして、マージされて、もう不要になったリモートレポジトリが残っているようであれば削除しましょう。(基本的にマージ時に削除して良いと思います。)

gitでブランチ間の差分を見る方法

git diff ブランチ名..ブランチ名

簡単過ぎて、意外と知ってるか知らないかが二分されるものですねー。ブランチのマージ前に差分を確認する時とかによく使ってます。-bで空白やタブの変更だけの行は非表示にできるので、それも一緒に覚えておくと便利です。


リモートのブランチとの差分

質問されたことがあったので書いておきます。

git diff master..origin/master、こんな感じです。originはリモートの名前です。

git commit時に他の人のコミットとして取り込む方法

gitを触ったことがない人の変更分を取り込む時にたまにやるよね

あまり良い開発のやり方ではないけど、ステージングや開発用のサーバで直接変更してもらって、その差分をコミットしときたい時に、わざわざgit config user.nameで変更して、また元に戻すのも面倒なので、覚えておくと便利なので紹介しておきます。


git commit --author "name <email address>"

--authorオプションで指定してあげればOKです。


authorを後から変更する --reset-authorの注意点

--amendで直前のコミットを修正する時に、その直前のコミットのauthorについては上書きされません。--reset-authorを使えば変更できますが、他の誰かではなく、configの設定に置き換わるようです(つまり自分)。--authorを指定する時は間違わないように注意しましょう。(やり方知ってる方いましたら教えてください...)。間違ってしまっても、まだresetとかしてOKな段階なら回避策はありますけどね。

2012年12月23日日曜日

Sublime Text 2のサイドバーをマスターする - TextMateからSublime Text2に切り替え中 〜 その3

サイドバーを制す者は、○○も制す

サイドバーの右クリックのメニューの少なさにちょっとびっくり。まぁReveal in Finderがあればなんとかなるのですが、Open with...とかもあれば欲しいのでSideBarEnhancementsパッケージを入れました。

  • Control + `
  • pa:ins
  • SideBarEn...

毎度のことながら、パッケージインストール簡単でいいですね。TextMate2も同じくらい簡単ですけど。


サイドバーをキーボードから操作する

マウスやタッチパッドで操作するのもいいけど、ちょっと集中が削がれるので、キーボードから操作したいですよね。特にVimでNerdTreeとか使っている人とかはそう思うんじゃないかな。(昔、wycats先生に感化されて、MacVimにスイッチしてみようとして挫折した組ですw)


サイドバーの操作方法

サイドバーに移る方法

control + 0で移ります。


サイドバーの中を移動する方法

カーソルキーで移動できます。(Control + N/B で移動もできますが、Control + Bの動きが最悪な時があります。お試しあれ)


ディレクトリの開く方法と閉じる方法

カーソルキーの→で開き、カーソルキーの←で閉じます。

ファイルを開く方法

サイドバーをカーソルキーで渡り歩いていれば、既にグループの方にファイルが展開されます。エンターキーか、Control + 数字でそのウインドウに移ればファイルを開いたことになります。

サイドバーに移る前のグループがファイルを開く先になるようです。



vintageを有効にしている組としては、jkで移動できて、oでディレクトリを展開できると楽なんですけどね。他のやり方とかご存知でしたら、コメント等で教えていただけると嬉しいです!Pythonの勉強がてらエクステンションを書くのもありかな?


fukayatsuさんによる補足

fukayatsuさんにコメントでサイドバーの移動をhjklでする方法を教えていただきました!ありがとうございます。なるほど、キーバインドの設定を書けばいいんですね〜♪

Sublime Text 2でctagsを使って定義元に飛ぶ - TextMateからSublime Text2に切り替え中 〜 その2

開発環境見直し第1弾

前回はSublime Text 2のインストールと、ショートカットキーを調べて、TextMateからスイッチできるだろうという範囲を調べたので、これからはSublime Text 2を使いたくなるように動いて行く。が、調べていたらctagsというものに出会ったのでちょっと入れてみよう。気分は孤独のグルメ。


brew install ctags

まずはMacにctagsをインストール。元々入っているかもしれないけど、brewで入れちゃいました。


CTagsパッケージをインストール

  1. Control + ` コマンドパネルを表示
  2. pa:ins と入力してPackage Controlのパッケージインストールを開く
  3. CTagsと入力して、CTagsパッケージをインストール

実に簡単だ...


実際に使ってみる

ctrl + t, ctrl + rでCTagsの何かキャッシュ的なものが作成され、ctrl+t ctrl+tでメソッドの定義元に飛べることは分かった。けども、精度はあまり高くないかもしれない。でも、モデル名のところでカーソルを合わせてパッとファイルが開けるのは楽だ。どんどん使って行ってみようと思う。


実はGitのPackageも入れてみたのだけど、デフォルトでキーバインドがなかったのと、CUIとSource Mapで事足りているので導入しなかった。ちなみにプラグインやパッケージ向けのキーバインドの基本方針みたいなものはあるのかな?OS Xのキーバインドは大体踏襲してくれているようで使いやすいが、一部既に割り当ててあるものがあって、よく使う機能じゃないから別によかったのだけど、他とかぶらないキーバインドってみんなどう探してるんだろう。


キーバインドをまとめておく

後日、あれ?キーバインドどうだっけ?となったので追記


  • CTRL T + CTRL R: ctagsが使えるようになる(語弊ありまくり)
  • CTRL T + CTRL T: カーソルが置かれているメソッド名の定義もとにジャンプなど
  • CTRL T + CTRL B:ジャンプ元へ戻る(これが何気に一番便利w)

TextMateからSublime Text2に切り替え中 〜 その1

スイッチングという葛藤と開発環境の見直しへ

TextMateユーザであれば、使い始めた当初から機会があれば他のエディタ等に切り替えができないか、何度か挑戦したり、実際に切り替えたことがあるのではないだろうか。おい!とツッコミを入れる人がいるかもしれないが、実は当たり前のことのような気がする。TextMateは良いエディタだし、TextMate2も日本語の入力問題が解消され、なかなか良い感じにはなった。けども、なんかね...。Ryan BatesがSublime Textにでも乗り換えない限り、自分も乗り換えないんじゃないかと思ってたけども、Sublime Text2も大分仕上がってきているようだし、何よりどんどん日本のユーザが増えているようなので、サポートもされていくのかな?と期待もしつつ、この際本当にスイッチできるかどうかはさておき(実は5回程挑戦してみたが、すぐにmateコマンドで...)、年の瀬ですし、普段の開発環境を見直してみようと思ったので、その遍歴を載せて行こうと思う。


まずはショートカットを調べる

普段TextMateで使っているこれは必須というショートカットや、調べていて便利なものを忘備録として集めた。網羅はできていないけど、これだけ知っておけばまずは大丈夫だろうと個人的に思った範囲。まだ実際に開発に使用していないので、他にも増えるだろうけどね。


ナビゲーションとその他

  • subl TextMateのmateコマンドにあたるもの

    ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" ~/bin/subl


    過去に設定していたのを忘れていたので追記
  • Control + ` コンソールを表示
  • Command + P (Go To Anything) TextMateと同じくCommand + Tでも開く
  • Command + Shift + P コマンド実行選択ダイアログみたいなのが出る(後述するPackage Controlで使用)
  • Command + R メソッドやファンクション(シンボル)の一覧から選択しそこにジャンプできる TextMateでいうCommand + Shift + T
  • Command + { or Command + } タブ移動(Command + alt + ←がSublime Text2では普通のようだけど、Macユーザはこっちを使う人もいるので対応しているか調べた。対応されていてとても素晴らしい!
  • Command + K, Command + B、サイドバーの表示非表示
  • Command (+ Shift) + alt + 数字、ウィンドウを縦横に分割。
  • Control + G 指定行に移動
  • Control + L カレントラインが中心になるよう縦スクロール
  • Command + カーソルキー、↑ファイル先頭、↓ファイル最後尾、←行頭、→行末にカーソルを移動
  • alt + ←→ 単語間移動?

選択・検索・置換・編集

  • Command + F 検索
  • Command + Shift + F 検索/置換
  • Command + G 次に検索に該当したものに移動
  • Command + Shift + G 前の該当に戻る
  • Command + D カーソル位置にある単語とマッチするものをハイライト
  • Command + Control + G マッチした単語の後ろにカーソルを入れる(マルチカーソル) Command + Dと併用すると良い
  • Command + ] or Command + [ インデント
  • Command + L 行選択
  • Command + / コメントアウト切り換え


Package Controlのインストール

Package Controlというもので、Sublime Text2もTextMate2のバンドル管理のようなことができるらしい。ということで早速インストールして活用。

  1. Control + `でコンソールを開く
  2. Installationに書いてあるPythonコードをコピペ
  3. Sublime Text2を再起動し、Preferences > Package Controlが入っていればOK

viモードを有効にする

viのc + shift + $とか、慣れてると使うので、使えるものは使っちゃいましょうと思って有効化した。

  1. Command + , で設定ファイルを開き
  2. ignored_packagesに記述されているVintageを削除かまたはコメントアウトする

Soda ThemeとColor Schemeをインストール

Soda ThemeのDarkの見た目が好きなので入れてみた

  1. Control + `でコマンドパネルを開き、pa:insと入力しPackage Controlのインストールを開く
  2. sodaと入力しテーマをインストール
  3. Command + , で設定ファイルを開き、"theme": "Soda Dark.sublime-theme"と設定し有効化

カラースキームも変えてみたければ、やり方とファイルと配布されているのでSoda Themeのサイトを見てみると良いです。


続く...


気になったこと

  1. ユーザ個別の設定ファイルの置き場が深い。TextMate2なら~/.tm_propertiesで分かりやすい
  2. プロジェクト別に設定ファイルを持てるのか?
  3. スプリットビューのスムーズな移動・操作方法

追記...


スプリットビューのスムーズな移動・操作方法

control + 数字で移動できた!

2012年12月21日金曜日

nginxでRailsのassetsのgzを有効活用する

nginxのモジュールが入っているか確認

nginxのHttpGzipStaticModuleを使うので、有効になっているか確認します。有効になっていない場合は、configureからやり直し。

nginx -V|grep http_gzip_static_module

nginxのconfでgzip_staticをonに


location /assets {
     alias /path/to/rails/app/public/assets;
    gzip_static on;
    gzip_proxied        any;
    gzip_disable        "MSIE [1-6]\.";
    gzip_vary           on;
    expires max;
}


実際に動いているか確認

ブラウザで確認する場合、レスポンスヘッダーのContent-EncodingがgzipになっていればOKです。

nginx側で確認する場合、ワーカープロセスIDに対してstrace -p $PID 2>&1|grep openとしておいて、ブラウザからアクセスし(キャッシュを無効にするためにCommand + shift + Rか、Ctrl shift F5?) gzファイルがオープンされていることを確認してください。no such file or directory や gzが取れたファイルをオープンしている場合は何らかのエラーがあります。


gzip_http_version 1.1か1.0について

プロキシサーバを通してnginxにアクセスする場合、リクエストヘッダーのACCEPT-ENCODINGが渡されないことがあります。その際はgzip_http_version 1.0; とするとうまく動くかもしれません。(デフォルトは1.1)マニュアルに書いてあります。プロキシサーバがACCEPT-ENCODINGをきちんと渡すよう設定するのが一番良いです。

2012年12月20日木曜日

nginx + unicornな環境でRailsアプリをサブディレクトリに配置する方法

nginxのalias

nginxの設定ではlocationディレクティブにaliasで指定してあげるのがコツ。


upstream app {
  server unix:/path/to/rails/app/sock;
}

location /app {
    alias /path/to/rails/app;
    access_log  /access_log/path;
    error_log   /error_log/path;
    try_files $uri $uri/index.html $uri.html @app;
  }


Rackのmap

config.ruに以下のように記述。アプリに合わせて要修正


# This file is used by Rack-based servers to start the application.

require ::File.expand_path('../config/environment',  __FILE__)

if ENV['RAILS_RELATIVE_URL_ROOT']
  # unicorn_rails --path PATHが指定されている時はこちら
  # cdcontrolなどのサブディレクトリに配置する時はpathオプションが必要です
  map ENV['RAILS_RELATIVE_URL_ROOT'] do
    run YourRailsApp::Application
  end
else
  # pathオプションをしていない時は
  # http://localhost:8080/ でアクセスできます
  run YourRailsApp::Application
end


unicorn_railsの--pathオプション

unicornを起動する時に、unicorn_rails --path /app とすると、/app以下がRailsアプリとなります。 asset_pathなども自動で置き換わります。


これでRedmineもGitLabも同じドメインが使えるねっ!

2012年12月18日火曜日

RubyでModuleのmethodが呼び出せないのはmodule_functionしてないから

module_function :method_name [,:method_name2...]

きっと基本中の基本なんでしょうけど、以下のようなコードは動きません。


module A
  def a
    puts "a"
  end
end

A.a #呼び出し name error


module_functionで指定すると動きます


module A
  def a
    puts "a"
  end
  module_function :a
end

A.a #呼び出し


基本的なことなんだろうけど、忘れちゃうことだってあるんだ。人間だm...。でもなぜ??module_functionせずに呼び出せたらまずいものなだろうか?謎。

2012年11月26日月曜日

rvmで共通のgemsetにインストールする方法

rvm gemset use global

pryとか、個別にインストールせずにどのプロジェクトでも使うものをインストールしておくと便利。ちなみにRubyのバージョンが違う場合はバージョン毎にインストールしないといけない。

gem environmentで今どのgemsetを使っているか確認しよう

gem environmentで確認すれば分かるが、globalはrvmが元々もっているグローバル設定のためのgemsetのよう。bundleで大量にgemをインストールする前に、自分が今どのgemsetを使っているのかを把握しておく方が我が身を救いまっせ。

Rails3のrails newでbundle installが走るのを無効にする方法 --skip-bundle

rails new project_name --skip-bundle

--skip-bundleオプションを渡してあげるだけです。rvmでgemsetsを切り替えてから全部インストールしたい時などに使ってます。

bundle install で特定のグループを除外しインストールしない方法

--withoutオプションを使う

bundle install --without production
とすると、以下のgemはインストールされなくなる。
group :production do
  gem 'pg'
  gem 'thin'
end


herokuではPostgreSQLを使っているけど、ローカルはまだSQLite3でいいんだよーという時とか、GitLabをインストールする時に、capybara-webkitなどテストで使うものは省くときなどに使います。

一度実行すると、.bundle/config に設定が書き込まれるので、次回からは省略できます。素晴らしい!

uuidを生成するコマンド uuidgen

uuidgenと打つだけて生成してくれる

何この便利コマンド!

2012年11月17日土曜日

屍鬼の1巻を読んで

まずびっくりしたこと

アニメの冒頭は1巻の最後あたりだったのか!!!

しかし、もう「無駄に」と付けたいほど、村のディテールがあって、想像がついたり、過去の自分の経験を頼りに想像したりして楽しめました。アニメにはなかった大事な要素もあって良かった

そんなことより、びっくりしたこと

実はアニメで2話見逃していたことが判明しました。その中でも清信の作品に関する沙子とのやり取り!!まさに想像していた通りで、納得。んー、やっぱりそういうことかーと思いつつ、2巻を読み進めようと思った次第でした。以上

2012年10月22日月曜日

(ネタバレ注意)まどまぎ劇場版見てきた

結論・感想

アニメファンにはいいのかもしれないけど、普段アニメ見ない人からすると「微妙」の一言。そして原作を知らない人は置いてきぼり喰らうだろうから、誰向けなのかよく分からない。キャラクターのいろんな表情や、世界観をもっと堪能したい、声優さんの言い方一つで変わるのを楽しみたい、とかそういう人には向いているのかも。

いろいろと動作が細かく入っていたり、カット自体が新しかったり、台詞は全部レコードし直したんじゃないかと思うし、音楽はパワーアップしていた。

けど、特にまず音楽だけど、うるさい。才能なくなったんじゃないだろうか、と思ったりもしたけど、そもそもBGMの使い方が原作の方が効果的だと思う。新曲はどれもイマイチ。音楽とシーンとが重なりあったり、一種のテーマ性をそこに見出していたので、逆にストレスになった。が、一部は普通にパワーアップしているのがあって、それは良かった。


ストーリー的追加要素は皆無と言った方がいい

特に後編に期待していたけど、「え、これなら原作のままでいいし」と思ったり、原作と同じままのシーンがあると、今度は同じ過ぎて目立つという変な感覚に襲われた。「あれ、なんで映画館で見てるんだっけ?」みたいな。


前編、後編はすっ飛ばして、新編を見るのがいいのかも

原作をよく見た人は、来年公開の新作を待つのがいいと思う。


キューベェが前編後編で1回ずつ噛んでたような...

前編では、最後の「成長途中の」を「成長とちょうの」って聞こえた気がする。後編は何を噛んだかは忘れちゃった。たぶん聞き間違いだと思うけど

2012年8月28日火曜日

grepで該当するものを省く方法 -v

grep -v $keyword

よくこんな感じで使う。

ps aux|grep unicorn|grep -v grep

(grep検索しているプロセスを除去)

2012年8月25日土曜日

lessで最初にマッチしたところを表示する方法

cat /var/log/*.log | less +/ここに文字列

grepではマッチした行だけ抽出して表示するので、マッチした直後の行とか見たい時に不便だけど、lessなら見れる嬉しさ。

2012年8月19日日曜日

tailを何回も実行するよりtail -fが便利

tail -f $file_pathはコマンド実行後からリアルタイム表示

リアルタイム表示というと語弊があるかも。

Railsのdevelopmentログを見ながら作業する場合、別タブやウィンドウでtail -f log/development.log としておけば、アクセスがあるごとにログが表示されるのが分かります。毎回tailをやるのは面倒な時はfオプションをつけましょう。

2012年8月18日土曜日

直前に実行した○で始まるコマンドを呼び出す方法

!○でok

環境によってはすぐに実行されるので注意!

例えば、

  • tail -fを実行
  • !tってやると、tail -fを実行される
地味に便利。環境によってすぐに実行する場合と、実行するものを一度ターミナルに入力した状態で止まり、エンターキーを押さないと実行されない場合がある。後者の方が安全。


ctrl + rもおすすめ

ctrl + r は履歴から該当するものを検索して実行する。tailで始まるものを検索したい時は、ctrl + r でtailと入力する。他に該当するものを探したい時は、ctrl + r を何度も押せばその前の履歴が出てくる。

2012年6月3日日曜日

Ember.jsのRoutingに期待している

Ember.jsのサイトがリニューアルされてドキュメントが増えたよ!

Check: http://emberjs.com/

GUIDEというのが増えていて、他のMVCフレームワークと違いEmber.jsはどういう設計になっているかを図解で説明してくれているのと、Railsとの違いも書いてあってとても参考になります。ちなみにRailsはオワコンではありませんので、その辺は誤解のないように。


Ember.js 1.0でリリースされるであろうRouting

Routingがうまくできれば、RailsやSinatraのようにコードを簡潔にかけると思うのですが、クライアントサイドの場合は難しそう。マッピングとディスパッチを簡単にできればいいけど、そこにステートがくっついてくるのかなーというイメージでいました。たぶん、そのイメージは正解で、Ember.jsではEmber.stateManagerとEmber.Stateを使って実現するようです。


他にもリンクを

Ember.jsの情報は追いにくいので、個人的に有用だと思ったリンクを載せときます。


しかしJSはRubyより記述量が多いなー

Routingのサンプルを見ても、ちょっとごちゃごちゃしてるなーって思っちゃいますね。CoffeeScriptとか出てきたのはすごく納得のいくことですが、CoffeeScriptでやるならRubyでいいし、何かはまるとデバッグしずらそうと思って避けちゃいます。簡単なやつならCoffeeScriptで書くこともあるけど。JSは進化が遅いというか、もうこのままなんでしょうかね。Emberとかそういったものを使わずに作られているSPAのJSは機能の割にコード量が多くて可視性も悪いものが多いんじゃないかな。(可読性とは別)

サーバサイドと違い、ブラウザで動く言語は指定できません。JavaScriptオンリー。しかもブラウザとバージョンごとに実装もバラバラ。大変ですね。JSはAjax到来により再評価されて高評価を得ましたが、それは誤解されていたという点の裏返しもあると思います。

ブラウザで動く言語はこれしかないので、今後もたくさんのプログラマーがJavaScriptに束縛されると思います。まるで安いレンタルサーバでPHPしか動かない時のよう。フラストレーションは溜まるでしょうね。まだサーバの方はPerlや他の言語の選択肢を作ることはできるのですが... どの言語でもあると思いますが、残念なJSコードは量産されるでしょうね。PHPからJSに移った人が最初の頃はPHPをdisりますが(過去の自分がそうw)、JSも同じ流れになるだろうと睨んでいますw

それと、マルチデバイス対応を考えると、なんでもJavaScript(クライアントサイド)でやる(ビューの生成とか)という方針はまずいです。もさもさ動くようであればユーザエクスピリエンス的に良くないですね。そもそもユーザのマシンに負荷を与えるというのもどうなんだろう?と考えることも大事だと思います。SPAの本来の目的って何でしょうか。サーバ負荷の削減だけが目的ではないはず。きちんとその辺は吟味した上で使って行きたいですね(プロダクトでは)

だらだら書いてしまったけど、Ember.jsに期待している!

2012年4月24日火曜日

rvm updateの新しいやり方 rvm get head(or latest)

しばらく使ってない間に古くなってたみたい

Ruby 1.9.3を入れようとしたら、ERROR: The requested url does not exist というエラーが出た。
そこでrvm updateとしたのですが、もうこのコマンドは使えないみたい。(めんどくさっ!w)その代わりにrvm getを使えと、ただそれだけ。そのまま打っても動きゃしない。フレンドリーじゃなーい!


とりあえずrvm get headやっとけばOK

その後にrvm get latestをやりたければお好みでどうぞ、もしくはlatestからお先にどうぞ。


ちなみにreadlineと一緒に入れるには

rvm install 1.9.3 --with-readline-dir=$rvm_path/usr
# rvm pkg install readline を先にしないとreadlineが入っていないと使えません

Ruby 1.9.3をデフォルトのRubyにするには

rvm use 1.9.3 --default # 簡単!素敵☆

rbenv + ruby-buildについて

使ったことないから詳しくは知らないけど、後発だからといってMacPortsからHomebrewというほど、これに決まり!ってほどじゃないみたい。むしろrvmがよくサンプルでは使われるし、rbenvがいい!というならそうすればいいという感じ。rbenvの方はRubyの種類がRVMに比べれば少ないということと、その分スリムなのかな?って印象。if your thingです。個人的には今はrvmから移行する理由がないのですが、誰かここがいいよ!という点があれば教えてください!