2012-04-17 16 views
4

いくつかの内部プロジェクト用に単純なthorベースのジェネレータを構築していて、正しいディレクトリからbundle installを実行できないようです。バンドルインストールが間違ったディレクトリから実行される

新しい[APP_NAME]機能を実行すると、にディレクトリとファイルを作成し、bundle installを実行してアプリケーションに必要な宝石をインストールします。

ジェネレータ関数のソース:

def create 
    puts "Creating application #{name}" 

    directory 'application', "#{name}" 

    Dir.chdir("#{Dir.pwd}/#{name}") do 
    puts `bundle install` 
    end 
end 

そして、これは、メソッドを作成呼び出すコマンドを実行しているから、コンソール出力:あなたが見ることができるように

$ bundle exec bin/my_gem new test_app 
Creating application test_app 
     create test_app 
     create test_app/Gemfile 
     create test_app/Guardfile 
     create test_app/README.md 
     create test_app/app/controllers 
     create test_app/app/helpers 
     create test_app/app/models 
     create test_app/app/views 
Using thor (0.14.6) 
Using my_gem (0.0.1) 
Using bundler (1.1.3) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. 

は、それがbundle installを実行しているが、それはですtest_appディレクトリ(guardguard-coffeescript、)とは対照的に、現在のディレクトリ(thorbundlermy_gem)で実行してくださいなど)。

Gemfile 
Guardfile 
README.md 
app 

/Users/davidlumley/Development/Gems/my_gem/test_app 

ない、それは何の違いになりますが、私はルビーを管理するためにRVMを使用している場合を確認します。このようlspwdなどの他のコマンドを実行している

は、期待される結果を与えます。

+0

RVMを使用していますか。 – Kashiftufail

+0

"違いがあれば分かりませんが、ルビーを管理するのにRVMを使います。" - はい: – djlumley

+0

はい、それはルビーマンギングですが、rvmの助けを借りてgemsetを作成し、gemsetディレクトリを使用してgemをインストールしてください。今直面した問題はありません。 – Kashiftufail

答えて

19

が鳴ります。これを試してみてください:

Bundler.with_clean_env do 
    puts `bundle install` 
end 

私は何が起こっているのか推測していることはあなたの外バンドラアプリのGemfileにBUNDLE_GEMFILE ENV変数を設定して、あなたの内バンドラがそれを継承して終わるということです。

+0

それはあなたの説明のおかげで、トリックでした! – djlumley

0

私は確かにあなたを助けてくださいこれを試してください。

 rvm gemset create app_name 


     rvm use [email protected]_name 

ルビーのバージョン他に何を使用しましたか?

その後、

 gem install bundler.   

は、サーバーをインストールして実行バンドルバンドラ宝石をインストール..既にアプリでバンドラを使用していると、あなたはバンドラ・インサイド・バンドラの問題を持っているよう

+0

私は新鮮な宝石を使用していますその時、それは 'thor'と' bundler'がインストールされています。問題は、バンドルがインストールされていないということではなく、私のジェネレータが適切なディレクトリでコマンドを実行していないため、_wrong_ Gemfileを使用しているということです。 – djlumley

+0

ああ、私はこの問題に直面しているので、私はこのtrick.goをコマンドラインからアプリケーションのディレクトリに使用し、すべてのgemを一つずつインストールします。また、正しいgemsetディレクトリにインストールされているかどうか確かめてください。 – Kashiftufail

+0

私はそれを自動化しようとしています。そのため、 'bundle install'をプログラムで実行しようとしています。これは、レールがそのジェネレータで行う方法と同様です。 – djlumley

関連する問題