web-dev-qa-db-ja.com

プロジェクトごとに正しいgemsetまたはRubyバージョンを使用するようにRubyを構成するにはどうすればよいですか?

ターミナルを開いて、プロジェクトフォルダに移動します(例:cd /proj/tickecting_app)。この後、次のコマンドを実行します:rvm use Ruby 1.9.x@gemset

ターミナルを開くたびに、このコマンドでこれを実行したいと思います。

これを自動的に実行する方法はありますか?具体的には、別々のタブでさまざまなプロジェクトに移動します。

例えば:

  • 最初のタブcd /proj/tickecting_appそして実行rvm use Ruby 1.9.x@gemset
  • 2番目のタブcd /proj/rss_feed_appそして実行rvm use Ruby 2.1.x@gemset

プロジェクトに応じて異なるコマンドを実行したい。これは可能ですか?

7
Sridhar

RVMを使用している場合は、.rvmrcという名前のファイルを次の内容でプロジェクトディレクトリに配置するだけです。

rvm use Ruby 1.9.x@gemset

2番目のプロジェクトでも同じですが、rvm呼び出しを変更するだけです。

10
jabbrwcky

エイリアスはあなたに役立つことができます。特定のディレクトリおよび実行する必要のあるコマンドごとにaliasを作成できます。したがって、あなたが与えた2つの例では、次のようになります。

alias ticketapp='cd /proj/tickecting_app && rvm use Ruby 1.9.x@gemset'

alias feedapp='cd /proj/rss_feed_app && rvm use Ruby 2.1.x@gemset'

したがって、次回はaliasを指定するだけで済みます(上記の場合はcdも指定する必要はありません)。つまり、ticketappfeedappです。

エイリアスを永続的にするには、次のようにします。

vim〜/.bashrc

そして、それらのエイリアスコマンドをそのまま.bashrcファイルに入れます。

6
beginer
[mikeserv@localhost ~]$ PS1=$PS1'$(
    [ ${last_hist=\!} -ne \! ] && {
    h=$(history 1)
    [ -n "${h#"${h##* cd *}"}" ] &&    
    . ./.dircmd >&2 2>/dev/null        
})${0##*["$0"$((last_hist=\!))]*}'
[mikeserv@localhost ~]$ cd .
[mikeserv@localhost ~]$ 
[mikeserv@localhost ~]$ echo

[mikeserv@localhost ~]$ cat <<\DIRCMD >.dircmd
echo this is my home directory
> DIRCMD
[mikeserv@localhost ~]$ 
[mikeserv@localhost ~]$ echo

[mikeserv@localhost ~]$ cd .
this is my home directory
[mikeserv@localhost ~]$

そのようなものはPOSIXシステムで機能するはずです-私はbashだけがそのような!bangの前に\ backslashを必要とすると思います。 bashは、fc(移植可能)では機能しない方法で履歴を更新しているようですが、historyでは機能します。他のシェルでは、history 1ビットはfc -l -1と交換可能である必要がありますが、bashはコマンドの背後にあると思います。かなりイライラしました。

とにかく、プロンプトが描画されるたびに、変数$last_histが最後のコマンドの履歴番号として定義されます。これは、プロンプトに表示されないように常に何にも等しくないパラメーター置換の一致フィールドで行われます。

fcチェックは、最後の履歴番号が実際にインクリメントされていることを確認するだけです。たとえば、Enterキーを押しただけではありません。また、最後のコマンドがcdであったことも確認します。両方が真の場合、.という名前の現在のディレクトリにあるファイルを.dircmdソースしようとします。存在する場合は実行されます。そうでなければ、まあ。

3
mikeserv