プロジェクトローカルな状態でgemを管理しているRailsAppをcloneした時
プロジェクトローカルな状態でgemを管理って何ぞや??
$ bundle install --path vendor/bundle
bundle install
するときにpathを指定することで、その場所にパッケージを入れてくれる。
つまり、プロジェクトごとにパッケージを管理できるのでシステムに依存しないってことだろう。
さっきまで知りませんでした。 んで、このプロジェクトローカルな状態でgemを管理しているRailsをGitHubからcloneした時に、 少しハマったのでメモ。
cloneして上記のコマンドでbundle install
して、「さあ、rails s」ってやっても「rails new」しろよって言われる。
プロジェクトローカルな状態でgemを管理しているので、gem list
と打つとこのプロジェクトのGemfileにあるgemは基本的にはない(既にインストール済みであれば当然ある)。
システム依存はしていないので、つまりは、 vendor/bundle 以下にあるgemsの中に入っている。
のは分かっていたのだが何故railsコマンドが認知されていないってなった。
以下のリンクをみてスケルトンなんてあるんだってなってようやく解決。
[ruby]最初に知っておけば良かったbundlerの使い方 rails編 | Into my web
$ bundle exec rails new .
によりプロジェクトローカルのgemを使って、
指定したディレクトリ(カレントディレクトリ)にRailsアプリケーションのスケルトンを作成する。
この際、既にあるファイルがconflictするので全部Noにして、余分に作成されたファイル(cloneしたものなのでそうなる)は削除した。
これでできたっちゃできた。