2012-06-12 22 views
1

我正在開發一個ruby應用程序,該應用程序使用來自另一個Ruby on Rails Web應用程序的模型和數據作爲其主要數據源。在另一個應用程序中包含Rails模型的最佳實踐

Rails的模型,通過包括environment.rb文件中的主文件中像這樣包括在這個應用程序:

# Require Rails 
require_relative "../../RailsApp/config/environment.rb" 

這工作,但也有加載模型時使用了Rails中定義的寶石未初始化的依賴的Gemfile。 (例如,acts_as_taggable_on, rack-pjax, devise等)

這個ruby應用程序的依賴關係也通過Bundler進行管理,因此目前獲得應用程序工作的唯一方法是將Rails的Gemfile中的內容複製並粘貼到ruby應用程序的的Gemfile。

顯然這種方法並不是最優的,因爲寶石的要求是重複的。

有沒有更好的方法來包含Rails和它的模型在另一個應用程序中需要的依賴關係?有沒有辦法將Gemfile包含進另一個?

回答

6

這裏有一些選擇,在簡單的順序

  1. 只是把一切都在一個應用程序,很多東西是比較容易這樣
  2. 使用插件來共享公共代碼
  3. 使用Web服務共享數據
+0

最後,我使用編號3,在/ vendor/app_name下創建了一個目錄,並設法擺脫了重複的gemfiles,並在需要該環境的rails下創建了rake任務,所以我不需要包含rails模型了。謝謝 – bruno077

3

您可以將模型和代碼從RailsAppA提取到Gem中。 RailsAppA然後包含該Gem並使用它。

該寶石可以保留在私人存儲庫中,不需要發佈。然後

這兩個應用程序會做這樣的事情:

gem "yourapp-modelage", git: "http://github.com/you/yourapp-modelage.git" 

然後,應用2也將使用寶石......多少進入創業板將取決於你需要多少重新使用。

相關問題