2012-08-14 49 views
2

如何執行鐵軌我們的Rails控制器中的命令行聲明命令行語句中軌控制器

例如:我需要從我的軌控制器

def index

/Code to execute the command line statement/

end

希望時執行該語句

$rails new test -d postgresql

清除..

回答

10

如果你想運行的內部控制shell命令,只需使用 「系統」

如:

system "rails new test -d postgresql" 

或其他

exec "rails new test -d postgresql" 
+0

basic ..應該試過! :-) 謝謝 .. ! – Yothesh 2012-08-14 10:09:22

+0

嗨,我無法在現有應用程序的控制器內創建一個新的rails應用程序。我得到以下錯誤:無法在另一個目錄內初始化新的Rails應用程序,請先更改爲非Rails目錄。鍵入'rails'尋求幫助。 – Yothesh 2012-08-31 06:40:31

2

使用反引號外殼,像這樣:
`rails new test -d postgresql`

爲此使用作業隊列可能會更聰明。

3

內運行控制器的命令行語句,我們可以使用system命令

system "cd {path_to_folder}; rails new test -d postgresql" 
2

PradeepKumar說(會對此發表評論,但不能因REP):

system "cd {path_to_folder}; rails new test -d postgresql"

你必須聲明所有你想在同一指令(用;分隔)運行命令。我沒有這樣做(分開cd命令,用兩個不同的調用來訪問我的可運行目錄和實際執行行),我得到的結果不是我想要的。 例如,如果您嘗試運行:

system "cd {path_to_folder}" 

然後:

system "rails new test -d postgresql" 

rails命令不會在path_to_folder的背景下,但在命令行中的默認位置被執行界面(例如C:\Users\Me)或您的Rails程序的環境。

另外我在執行命令時遇到了錯誤,我在命令末尾添加了一個&。在這種情況下,指令有兩個命令,我將它添加到第一個命令的末尾(在;之前)。