2010-03-21 65 views
0

我在这里有点失落,为什么我的rake任务不会创建所需的XML文件,但是当我在.rb文件中使用方法build_xml时,它工作正常。rake不会创建XML文件

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

namespace :xml do 
    desc "xml build test" 
    task :xml_build => :environment do 
    build_xml 
    end 
end 

def build_xml 
    # build xml docoument 
    builder = Nokogiri::XML::Builder.new do |xml| 
    xml.root { 
     xml.location { 
     xml.value "test" 
     } 
    } 
    end 
    File.open("test.xml", 'w') {|f| f.write(builder.to_xml) } 
end 
+1

你是什么意思“不会”?什么是你没有预料到的错误或结果? – rfunduk 2010-03-21 13:40:11

+0

该脚本似乎工作正常,xml显示在屏幕上,跟踪显示没有错误。然而,test.xml文件不是按照File.open(“test.xml”,'w'){| f |)创建的f.write(builder.to_xml)} – user296507 2010-03-21 21:59:08

回答

1

当我与rake xml:xml_build执行你的Rakefile,我得到这个任务environment没有定义的错误。如果我删除environment作为xml_build的依赖关系,然后再次运行它可以正常工作并创建xml文件。

所以我的猜测是,你的环境的任务会导致错误,xml_build从来没有运行(或任务不会在你真正的Rakefile存在要么,所以只是将其删除作为依赖)。

+1

事实上,他可能从一个Rails项目(其中'environment'会为你定义),但现在不运行它里面一个复制这个Rake文件的代码。 – rfunduk 2010-03-21 13:45:51

+0

另外,这不是一个大问题,但''open-uri'不需要这个脚本:) – rfunduk 2010-03-21 13:46:26

+0

我已经删除了环境依赖,脚本输出xml到屏幕ok,但是仍然没有创建test.xml。 – user296507 2010-03-21 22:02:11