sprockets
gem包含一些rake
个任务,这些任务由rails
自动加载。
The initialise
method of that task file可以接受一个参数(任务的命名空间,默认为assets
),但由于它是自动加载的,因此无法实际给出该参数。
在我的应用程序中显式加载这些捆绑的rake任务的简洁方法是什么,以便我可以给出参数?
答案 0 :(得分:2)
没有干净的方法来做到这一点。您可以通过查看sprockets-rails
gem来查看此内容,该gem初始化rails应用程序的sprockets。这些任务被添加到该宝石的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
以便在初始化rails应用时调用您在问题中引用的initialize
方法。如您所见,没有参数传递给super
,因此SprocketsTask
将使用默认参数进行初始化。如果没有猴子修补,显然没有办法让你通过论证。如果这是你真正需要的东西,我建议分叉sprockets-rails
,或者只使用你的分叉版本,或者提交补丁,这样你就可以回到主分支上,如果它被接受了。