簡體   English   中英

如何將現有的Rails 3應用程序轉換為引擎?

[英]How do I convert an existing Rails 3 Application into an Engine?

如何將我一直在開發的論壇應用程序轉換為Rails引擎,以便它可以嵌入到其他應用程序中?

我應該添加,保留或刪除什么? 我應該提供一種集成模型的方法嗎? 如何設置路由和用戶配置? 如何將其打包成寶石? 我應該注意什么?


閱讀完文章和文檔后,我設法縮小了我的問題范圍:

  • 我應該命名模型嗎? 也就是說,我應該將它們保存在我的引擎模塊和app/models/engine文件夾中嗎?
  • 什么樣的配置文件中config ,我應該保持周圍?
  • 怎么樣的public文件夾? 在Rails 3.1中,樣式表和javascripts被移動到app/assets文件夾,這解決了這個問題,但是如何在Rails 3.0中實現相同的效果呢?

這里有太多問題可以正確回答這些問題。 這是通過挖掘和嘗試來為您帶來回報的其中一項。 隨着您的深入了解,請回過頭來詢問新的具體問題。

以下是我最近這樣做時使用的一些資源。

在大多數情況下,您可以將應用程序目錄中的內容保留在原來的位置。 您還應該能夠將routes.rb在config目錄中,但如果您的某些路由與應用程序的路徑發生沖突,則可能存在一些問題。

您可能希望創建一個generator來創建包含引擎所需的所有表的遷移。 可以創建其他生成器來覆蓋默認視圖等等。

創建一個使用您的gem的測試應用程序。 您將遇到的許多問題都是確保正確加載引擎的依賴關系。 在開發過程中,編輯測試應用程序的Gemfile直接指向gem的源代碼......如下所示:

gem 'my-forum', :path => '~/work/my-forum'

命名空間

您至少應該命名您的表/模型,這樣就不會遇到命名沖突。 看看你當前的論壇應用程序,我至少在你的所有表格前加上'forum_'。 使用你的引擎的人很可能會有一個名為Category的不同模型,例如......所以ForumCategory將是一個更好的選擇。

絕對命名您在lib目錄中創建的任何類的命名空間。

配置文件

您需要將routes.rb保留在config目錄中。 您可能還需要保留初始化器。 任何應用程序特定的東西可能需要移動到其他地方。

公共文件

使用Rails 3.0.x,您可以將樣式表和javascripts保存在公共目錄中。 我認為有一些代碼需要添加到您的Engine類中,但是......

initializer "static assets" do |app|
  app.middleware.use ::ActionDispatch::Static, "#{root}/public"
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM