2012-06-26 74 views
1

我新的紅寶石和導軌,但有經驗的Java,JavaScript和一個小python。即時更換導軌

我正在考慮創建一個Web應用程序,它應該可以創建具有各種屬性和連接(關係)的不同事物(模型)。 Ruby on Rails似乎支持一些無模式的後端(mongodb,neo4j等),因此引起了我的興趣。 是否可以構建一個Web界面來創建新的RoR模型,向它們添加屬性和關係?我希望Web界面中的用戶操作能夠在RoR服務器上轉換爲具有指定屬性的新模型。而且這些模型當然應該以某種方式堅持下去(它們可能被作爲ruby文件保存下來嗎?)。 我想你可以在某些方面將它看作CMS。

我應該使用Google搜索的工具或概念是什麼?

關於奧斯卡

+3

請記住「可能」和「好主意」是兩回事。 – tadman

+1

你可以做到這一點(http://stackoverflow.com/a/10724280/479863),但我認爲你應該首先重新考慮你的數據模型。當然有些情況下,用戶希望用戶即時創建新表,但在構建平臺內的平臺之前,您應該考慮兩次(至少)。 –

回答

2

這當然可以做你問什麼,有幾種不同的方法,但我建議你看看你的要求,更深入。

在Ruby以外的語言中,我幫助其他架構師&構建了類似的元建模CMS框架。第一個是在1999年完成的:完整的Web GUI用於直接從瀏覽器創建模型和它們之間的關係。當時我們必須這樣做的原因是,我們使用的底層平臺使創建模型和做MVC變得相當困難,所以我們必須幫助開發人員使用框架代碼& GUI工具。

Ruby作爲一種語言非常適用於內部domain specific languages。 Rails使用內部DSL很多,特別是在ActiveModel。因此,爲Rails模型編寫基本代碼通常要容易得多,然後再使用其他(更高)的抽象級別。特別是,GUI工具在構建好的模型時尤其難以處理,這是因爲需要雙向轉換:需要能夠手動更改代碼並將更改反映到GUI中。這是一個棘手的問題。

與所有的說,如果你還是想要去一個基於GUI的元建模方法,主要有兩種途徑可以選擇:

  1. 大廈參數RoR的元模型
  2. 生成特定的RoR模型

從您的問題的措辭看起來您感興趣的是(2)。在這種情況下,有兩種標準方法可以解決這個問題:你可以解釋或編譯。如果你解釋,那麼你創建一個用於描述模型的DSL,並且它的執行在Rails環境中實例化這些模型。 (在Ruby類中,通過執行定義它們的代碼來定義它們,所以這完全是正常的。)如果編譯比編碼,將生成使用您最喜愛的持久性框架的標準RoR模型。那麼問題就變成了你將代碼保存在哪裏。您可以將其寫入磁盤並加載它。例如,您也可以將其存儲在數據庫中。在這兩種情況下,您可能都想看看諸如sourcify之類的寶石。

另一方面,如果您選擇構建這種類型的系統,我強烈建議您使用NoSql面向文檔的持久性機制,例如使用類似Mongoid的MongoDB。原因是Rails對SQL模式管理提供了有限的支持,甚至更少的工作流自動化(超越了基本的遷移)。給人一個圖形用戶界面,他們很可能會更頻繁地混淆架構。因此,您將不得不處理模式遷移問題。文檔數據庫使這個過程變得簡單一些(部分原因是通過將問題留在代碼中以懶惰的方式處理問題)。關係數據庫通常不會讓你這樣做。他們需要前期的模式遷移工作,這會增加您的系統需求,並影響整個開發人員工作流程。

祝你好運!

+0

好東西!感謝分享 – oskbor