该sprockets
宝石附带了一些rake
任务,这些任务被自动加载rails
。
该initialise
任务文件的方法可以带一个参数(任务的命名空间,默认为assets
),但是由于它是自动加载的,因此无法实际给出该参数。
有什么干净的方法可以在应用程序中显式加载这些捆绑的rake任务,以便提供自变量?
没有干净的方法可以做到这一点。通过查看sprockets-rails
gem可以看到这一点,gem为Rails应用程序初始化了链轮。任务添加到lib/sprockets/railtie.rb
该gem中,其中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应用程序时便会在问题中引用您所引用的方法。如您所见,没有参数传递给super
,因此SprocketsTask
会使用默认参数进行初始化。而且,如果没有猴子打补丁,您显然没有办法传递论点。如果这是您真正需要的东西,我建议您进行分叉sprockets-rails
,或者仅使用您的分叉版本,或者提交补丁程序,以便在接受主分支后重新回到主分支。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句