[英]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.