簡體   English   中英

Rails:如何顯式初始化與gem捆綁在一起的rake任務?

[英]Rails: How to explicitly initialize rake tasks “bundled” with a gem?

sprockets寶石帶有一些rake任務,這些任務會由rails自動加載。

該任務文件的initialise方法可以采用一個參數(任務的命名空間,默認為assets ),但是由於它是自動加載的,因此無法實際給出該參數。

有什么干凈的方法可以在應用程序中顯式加載這些捆綁的rake任務,以便提供參數?

沒有干凈的方法可以做到這一點。 您可以通過查看sprockets-rails gem來看到此信息,該gem會為rails應用程序初始化鏈輪。 任務添加到該gem的lib/sprockets/railtie.rb中,其中L60-61(在v2.0.1中)為:

require 'sprockets/rails/task'
Sprockets::Rails::Task.new(app)

如果我們查看lib/sprockets/rails/task就會看到:

class Task < Rake::SprocketsTask
  attr_accessor :app

def initialize(app = nil)
  self.app = app
  super()
end

因此,在initialize Rails應用程序時,就會在問題中引用您所引用的initialize方法。 如您所見,沒有參數傳遞給super ,因此SprocketsTask將使用默認參數初始化。 而且,如果沒有猴子打補丁,您顯然沒有辦法傳遞論點。 如果這是您真正需要的東西,我建議分叉sprockets-rails ,或者只使用您的分叉版本,或者提交補丁程序,以便您可以在接受主分支的情況下返回主分支。

暫無
暫無

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

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