2012-08-31 26 views
0

您好我已經創建了一個新的rails應用程序。控制器內部我已經使用一個shell cmd以創建一個新的Rails應用,在控制器內部創建一個新的rails應用程序

class DemoController < ApplicationController 
    def index 
    exec "rails new testing -d postgresql" 
    end 

    def list 
    end 
end 

我碰到下面的錯誤。 無法在另一個目錄內初始化新的Rails應用程序,請先切換到非Rails目錄。鍵入'rails'尋求幫助。

據我所知,它不可能創建一個新的rails應用程序inisde另一個應用程序。

是否有任何函數可以指定exec命令中的存儲位置? 或類似這樣的exec「[目錄位置] rails新測試-d postgresql」..?

+0

不要使用'exec'!它取代了當前的過程。使用'system'。 –

回答

1

你也可以傳遞路徑rails new命令:

system "rails new /target/folder/testing -d postgresql" 

或者cd到目標文件夾,然後運行rails new。就像這樣:

system "cd /target/folder && rails new testing -d postgresql" 
+0

我試圖執行「cd/c/Users/username && rails new testing123 -d postgresql」但我得到一個錯誤:系統找不到指定的路徑..但​​是我在命令提示符中交叉檢查了目標路徑,路徑存在..你能指出我的錯誤嗎? – Yothesh

+0

如果它不存在,則不存在。你使用Windows?你的意思是'c:\ Users'而不是'/ c/Users'?你試過我的其他建議嗎? – Mischa

+0

嘗試系統「cd〜&& rails新測試2 -d postgresql」系統找不到指定的路徑..仍然沒有水果.. – Yothesh

1

我知道這是很遲,但已經想要做類似的東西,這裏是我工作:

  1. cd ~/Projects; rails new #{@app.name}(與周圍的反引號) - 這一個執行「默默」。無輸出圖並應用絞死而rails new

  2. system "cd ~/Projects; rails new #{@app.name}" - 這顯示在控制檯上的輸出即生成的文件都隨着bundle install顯示和應用程序同時掛

  3. exec "cd ~/Projects; rails new #{@app.name}" - 這關閉服務器,並顯示輸出爲rails newbundle install

我想從另一個應用程序內創建一個應用程序。在你的情況下,我想你可以這樣做: exec "cd folder_name; rails new testing -d postgresql"。 由於exec會關閉服務器並使您的應用停止,因此我建議您使用前兩個選項中的任意一個。

相關問題