簡體   English   中英

使Bundler解析並從Gemfile中的Gemfile中加載依賴項:

[英]Have Bundler parse and load dependencies from Gemfile/s in gem/s loaded with :path

這是我目前的情況:

我正在使用Rails引擎(“ awesome_engine”)。 我通過主機應用程序進行所有開發,即使用Rails應用程序,該應用程序使用:path參數在其Gemfile中將此引擎指定為依賴項

    gem "awesome_engine", :path => "awesome_engine"

效果很好-引擎gem文件夾相對於主機應用程序的根目錄位於“ awesome_engine”下。 但是,“ awesome_engine”引用了也在開發中的gem“ awesome_core”。 因此,awesome_engine / Gemfile讀取為:

    gem "awesome_common", :path => "../awesome_core"

此設置的問題似乎是Bundler在為主機rails應用程序創建應用程序捆綁包時不在awesome_engine /中尋找Gemfile,它僅從“ awesome_engine”的gemspec中讀取依賴項,這對於任何單個gem都很好您希望以其“未包裝”狀態加載,對於同時要處理相關寶石圖的情況而言,並不是那么好

我是嗎

a)嘗試咬咬我無法咀嚼的東西,並且應該在主機應用程序正在開發中時將“ awesome_core”轉儲到主機應用程序的Gemfile中,並對它感到滿意(我不會:-))

b)缺少關於如何使Bundler做到這一點的瑣碎事情

c)以上都不是(請指定: _ __ _ ____

謝謝! 安德拉斯

ps:我知道Bundler不會解析“ awesome_engine / Gemfile”,因為a)如果我將廢話放進了捆綁包中,則在主機應用程序中安裝仍然可以正常運行b)該文件的其他依賴關系都不會落入主機應用程序應用程序捆綁

因此,當您通過(當前項目的)Gemfile指定一個gem時,假定您所引用的東西具有良好定義的依賴關系。 這意味着應該期望有一個有效的.gemspec文件來命名這些依賴項。 但是你已經知道了。

我對c)的建議是使用bundle gem創建您的gem,該gem設置gem的方式是從.gemspec文件中獲取有關Gemfile的信息。 看看http://gembundler.com/v1.2/bundle_gem.html並生成一個測試gem並閱讀其源代碼,這很清楚。

希望能解決您的問題。

暫無
暫無

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

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