运行gems从应用程序rake任务中搜索任务

时间:2014-10-10 10:25:39

标签: ruby-on-rails ruby-on-rails-4 rubygems rake ruby-on-rails-4.1

我正在尝试从我的应用程序的rake任务中添加来自gem(geocoder https://github.com/alexreisner/geocoder)的rake任务,因为我希望它在构建数据库之后运行。

所以我在rakefile中有这段代码

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

关注此问题Ruby Rake load tasks from a gem 但我一直得到同样的错误

Don't know how to build task 'geocode:all CLASS=ProposedAccomodation'

任何线索我做错了什么?

1 个答案:

答案 0 :(得分:0)

所以这里有几件事需要考虑。

对于记录,这是您使用参数调用任务的方式

Rake::Task["taskname"].execute(args)

在你的情况下,我首先没有意识到,它实际上使用的是环境变量,而不是被称为ENV['CLASS']的任务参数。

可以回答您的问题,因此您可以将其设置为ENV['CLASS'] = 'ClassName',也可以将其传递给您对佣金任务rake geolocal CLASS=ProposedAccomodation的调用。

这让我想到了一个问题:你为什么不只是调用原来的rake任务,你没有添加任何东西。