![](/img/trans.png)
[英]How do I remove ActiveRecord from an existing Rails 4 Application?
[英]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.