我想創建一個RESTfull服務應用程序是由Rails5與API模式。 我還需要一個管理員應用程序,它提供了用於管理用戶和內容的Web視圖。 這兩個應用程序將相互共享代碼。做Rails5 API模式的應用程序和非API模式的應用程序共享代碼彼此?
我知道一種創建API模式應用的方法。
$ rails new apiapp --api
如何創建其他的項目?
我想創建一個RESTfull服務應用程序是由Rails5與API模式。 我還需要一個管理員應用程序,它提供了用於管理用戶和內容的Web視圖。 這兩個應用程序將相互共享代碼。做Rails5 API模式的應用程序和非API模式的應用程序共享代碼彼此?
我知道一種創建API模式應用的方法。
$ rails new apiapp --api
如何創建其他的項目?
您將其他項目構建爲普通導軌項目。瞭解Rails 5 api模式的一點是,你不能將普通的html作爲它的一部分。整個渲染管道(資產等)都缺失。 Rails 5 api模式很快,因爲環境的很大一部分只是簡單的消失了。
你想要做的是有2個項目:
,並找出一種方法來跨越他們分享你的模型的邏輯。
如果您使用devise進行身份驗證,這是非常棘手的,因爲devise添加到您的用戶模型,你不能在api項目中的東西。以下是我如何解決這個問題:
If Rails.application.class.parent_name == "admin"
# devise crap goes here
end
如何在2個git倉庫中輕鬆共享模型目錄?我沒有很好的答案。我有一個rake任務,它通過將它們從規範源複製到目標來手動同步事物,但這是一種破解。
我想實現這種功能的方法是,像這樣:
這是我能想到的最乾淨,最少代碼重複實現,它遵循行業標準。
這是根據軟件口頭禪「消費自己的狗糧」 - 如果你創建一個API,使用它的界面來做你的東西。這樣你就可以隨時測試和改進它。
如果您只想在兩端使用RAILS,那麼最好將ADMIN和您的API作爲一個應用程序來實現,以實現最少的代碼重複。爲所有外部呼叫創建一個API控制器名稱空間,併爲您的管理視圖和內容編寫普通導軌。這樣你的數據庫和模型驗證和關係邏輯就是共享的,但是控制器和路由名稱空間不是。
Toodles。