2012-04-17 49 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但它的運行它在我的當前目錄(thor,bundler,my_gem),而不是test_app目錄(guard,guard-coffeescript,guard-less等)。

運行其他命令,如lspwd產生預期的結果:

Gemfile 
Guardfile 
README.md 
app 

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

不知道這有什麼差別,但我用RVM管理我的紅寶石。

+0

您是否在使用RVM。 – Kashiftufail 2012-04-17 05:32:30

+0

「不知道它是否有所作爲,但我使用RVM來管理我的紅寶石。」 - 是的:) – djlumley 2012-04-17 05:33:39

+0

是的,當然它在管理紅寶石,但在rvm的幫助下,您應該創建gemset並使用該gemset目錄來安裝gem,並且不會出現您現在遇到的問題。 – Kashiftufail 2012-04-17 05:43:10

回答

19

聽起來像是你的應用程序已經在使用捆綁,你有一個捆綁-內打捆問題。試試這個:

Bundler.with_clean_env do 
    puts `bundle install` 
end 

我猜發生了什麼事是你的外打捆設置BUNDLE_GEMFILE環境變量到你的應用程序的Gemfile中,然後你內心的捆綁最終繼承它。

+0

這樣做,謝謝你的解釋! – djlumley 2012-04-23 22:57:05

0

請試試這個,我一定會幫助你的。

 rvm gemset create app_name 


     rvm use [email protected]_name 

Ruby版本你還使用了什麼。

然後安裝捆綁寶石

 gem install bundler.   

然後捆綁安裝和運行服務器..

+0

我正在使用新的gemset目前,它已安裝'thor'和'bundler'。問題不在於bundle未安裝,而是因爲我的生成器沒有在相應的目錄中運行命令,因此它使用_wrong_ Gemfile。 – djlumley 2012-04-17 05:53:41

+0

哦,我已經遇到了這個問題,然後我通過命令行使用這個trick.go到應用程序目錄,並安裝所有的寶石一個接一個,也確定後任何寶石或者它被安裝在正確的gemset目錄。 – Kashiftufail 2012-04-17 05:58:10

+0

我試圖自動化,這就是爲什麼我試圖以編程方式運行'bundle install',類似於rails在其生成器中的工作方式。 – djlumley 2012-04-17 06:12:33