Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从应用程序rake任务运行gems rake任务_Ruby On Rails_Ruby On Rails 4_Rubygems_Rake_Ruby On Rails 4.1 - Fatal编程技术网

Ruby on rails 从应用程序rake任务运行gems rake任务

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##############'

我正试图从我的应用程序的rake任务中添加gem地理编码器的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
就在这个问题之后 但我总是犯同样的错误

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任务中执行此操作的优点是,我有多个对同一个任务的调用,我想将这些任务组合在一起,这样它就可以工作了。谢谢