Rails:如何显式初始化rake任务"捆绑"有宝石?

时间:2014-04-04 10:10:36

标签: ruby-on-rails rake sprockets

sprockets gem包含一些rake个任务,这些任务由rails自动加载。

The initialise method of that task file可以接受一个参数(任务的命名空间,默认为assets),但由于它是自动加载的,因此无法实际给出该参数。

在我的应用程序中显式加载这些捆绑的rake任务的简洁方法是什么,以便我可以给出参数?

1 个答案:

答案 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,或者只使用你的分叉版本,或者提交补丁,这样你就可以回到主分支上,如果它被接受了。