Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 rake不会创建XML文件_Ruby_File Io_Nokogiri_Builder - Fatal编程技术网

Ruby rake不会创建XML文件

Ruby rake不会创建XML文件,ruby,file-io,nokogiri,builder,Ruby,File Io,Nokogiri,Builder,我在这里有点不明白为什么我的rake任务不会创建所需的XML文件,但是当我在.rb文件中使用build\u 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_

我在这里有点不明白为什么我的
rake
任务不会创建所需的XML文件,但是当我在
.rb
文件中使用
build\u 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

当我使用
rakexml:xml\u build
执行您的rakefile时,我得到一个错误,任务
环境
未定义。如果我将
environment
作为
xml\u build
的依赖项删除,然后再次运行它,它将正常工作并创建xml文件


因此,我猜想您的环境任务会导致错误,并且xml_build永远不会运行(或者该任务也不存在于您真正的rakefile中,所以只需将其作为依赖项删除即可)。

您说的“不会”是什么意思?什么是您不期望的错误或结果?脚本似乎工作正常,xml显示在屏幕上,跟踪显示没有错误。然而test.xml文件并不是按照file.open(“test.xml”,“w”){| f | f.write(builder.to_xml)}创建的。事实上,他可能是从rails项目中复制了这个Rakefile代码(在该项目中,
environment
将为您定义),但现在没有在其中运行它。另外,没什么大不了的,但是这个脚本不需要
open uri
:)我已经删除了环境依赖项,脚本输出xml到screen ok,但是test.xml仍然没有创建。当作为rake任务运行脚本时,可能是文件权限问题吗?同样,当我在.rb文件中有代码片段时,同一个脚本成功地创建了test.xml文件。好的,我已经解决了这个问题。open文件(“test.xml”,“w”)不起作用,我必须包含test.xml的完整路径。我的rake环境可能没有设置。