Ruby on rails 从应用程序rake任务运行gems rake任务
我正试图从我的应用程序的rake任务中添加gem地理编码器的rake任务,因为我希望它在数据库构建之后运行 所以我在一个rakefile中有这个代码Ruby on rails 从应用程序rake任务运行gems rake任务,ruby-on-rails,ruby-on-rails-4,rubygems,rake,ruby-on-rails-4.1,Ruby On Rails,Ruby On Rails 4,Rubygems,Rake,Ruby On Rails 4.1,我正试图从我的应用程序的rake任务中添加gem地理编码器的rake任务,因为我希望它在数据库构建之后运行 所以我在一个rakefile中有这个代码 task :geolocal do spec = Gem::Specification.find_by_name 'geocoder' load "#{spec.gem_dir}/lib/tasks/geocoder.rake" puts '##################GEOCODING##############'
task :geolocal do
spec = Gem::Specification.find_by_name 'geocoder'
load "#{spec.gem_dir}/lib/tasks/geocoder.rake"
puts '##################GEOCODING##############'
Rake::Task["geocode:all CLASS=ProposedAccomodation"].execute
end
就在这个问题之后
但我总是犯同样的错误
Don't know how to build task 'geocode:all CLASS=ProposedAccomodation'
你知道我做错了什么吗?所以这里有几件事需要考虑 请注意,这是使用参数调用任务的方式
Rake::Task["taskname"].execute(args)
在您的例子中,我首先没有意识到,它实际上使用了环境变量,而不是读取为ENV['CLASS']的任务参数
这将回答您的问题,因此您可以将其设置为ENV['CLASS']='ClassName',或者将其传递给对rake任务rake geolocal CLASS=ProposedAccodation的调用
这就引出了一个问题:为什么不调用原始的rake任务,而没有添加任何内容。可能的重复项必须作为参数传递给类才能执行。@phoet从一个小时以来,我一直在尝试以不同的方式指定参数,从您链接的问题以及这些问题中可以看出,但我一直收到一个“请指定一个类模型”错误。stuff_args={CLASS=>ProposedTodo}这是我最后尝试的:'Rake::Task[geocode:all].executeRake::TaskArguments.newstuff_args.keys,stuff_args.values'有什么线索吗?可能是参数的大写名称吗?我明白了。这实际上是可行的,在任务中设置参数,比如ENV['CLASS']='CLASS',这就是我要找的。在单个rake任务中执行此操作的优点是,我有多个对同一个任务的调用,我想将这些任务组合在一起,这样它就可以工作了。谢谢