我遇到了同樣的問題,我相信我已經解決了它。我希望找到一個簡單的軌道生成器來轉換它,但除非我錯過了一些東西,這並不容易。但是,軌道確實比完全手動完成更容易。
關鍵是rails new
命令可用於現有的應用程序。請注意,這個答案假設你知道如何使用git並在現有應用程序中使用它。
首先也是最重要的是,建立一個新的分支。這有兩個功能,1)如果你搞砸了,你不應該失去你的工作(雖然現在可能是備份它的好時機,比如GitHub),2)所以你可以比較那些擁有在這個過程之後發生衝突並且檢索這個過程覆蓋的任何工作(這對我來說並不多,但它很重要)。
在終端中,從應用程序的目錄中,您要從API更改爲標準。運行以下命令以建立一個目錄,然後讓rails在現有目錄上寫入一個新項目。在最初創建應用程序時使用的第二個命令上使用相同的選項。例如,對於我,我用-d postgresql --skip-turbolinks --skip-spring -T
替換了以下[options]
,因爲這些是我在創建應用程序時使用的選項。我正在使用--skip-bundle
標誌,因爲它可能會比您想要的更改您的Gemfile,並且您可能想在捆綁之前將其更改一些。
$ cd ..
$ rails new your_app_name --skip-bundle [options]
現在Rails是要去通過它的創建所有文件的新應用程序的常規工藝,但是這一次它會跳過幾乎所有的人,因爲他們已經在那裏。它會停止在每一個有衝突的地方,這就是你需要逐一分析衝突的地方。
這裏是爲我工作在有衝突的文件:
- 對他們中的每一個提交
d
看到的差異。
- 如果差異只是添加行,則允許使用
y
。這就是我們爲什麼要這樣做的原因。
- 如果區別只是刪除代碼,然後拒絕它與
n
。
- 如果不同之處在於添加和刪除代碼,請記下該文件以便在此過程之後返回。然後用
y
接受它。
完成此操作後,使用git檢查(4)中記錄的每個文件的差異。您需要保留rails添加的更改,但是您可能需要複製它移回的所有代碼。這可能包括Gemfile。
一個值得注意的區別是,rails會將應用程序控制器從ActionController::API
更改爲ActionController::Base
。我需要一個控制器,所以我創建了一個新文件「app/controllers/api_controller.rb」。然後我將原來的ApplicationController中的內容複製到新文件中,並將類名更改爲ApiController。然後,我將所有現有的API控制器都從新的ApiController繼承,而不是從ApplicationController繼承。
完成後,運行bundle install
安裝添加到應用程序中的gems rails。
這對我有用。我希望它有幫助。祝你好運!
更新並刪除'後'部分。它最初從來不是一個普通的rails應用程序,它最初是一個api應用程序。 –