From: Sathvik La on 25 Dec 2009 08:09 Hi all , I am using Dir.chdir to change my current working directory. class Test def initialize spin end def spin dire = "/c/Target/tioga-1.11/samples" dire2 = "c:\Target\tioga-1.11\samples" Dir.chdir(dire2) #system("cd", dire) end end My original project inundates with errors "The System cannot find the path specified" & this test program says no such file or directory. Even on MSYS Dir.chdir(dire) does not work ! There are other Dir routines like Dir.each() which gives the error undefined method `each' for nil:NilClass [version: 1.11] Can you please help me correct these errors. -- Posted via http://www.ruby-forum.com/.
From: Ilias bankai on 25 Dec 2009 08:46 Hi, Try using double backslashes: "c:\\Target\\tioga-1.11\\samples" Cheers, -- Posted via http://www.ruby-forum.com/.
From: Luis Lavena on 25 Dec 2009 10:20 Looks like you're using cygwin paths for a non-cygwin version of Ruby. Mismatch those is not good, and that would be the reason you can chdir properly. First check your ruby version (ruby -v) if it says "mswin32" or "mingw32", you should use drive letters. --- frmsrcurl: http://compgroups.net/comp.lang.ruby/Dir.chdir-does-not-work-on-windows-xp
From: Sathvik La on 25 Dec 2009 15:42 Thank you for your replies. Yes the Ruby version says i386-mswin32 and when I used "c:\\Target\\tioga-1.11\\samples" I could chdir. I need to execute another program and parse the output. So I used IO.popen http://ruby-doc.org/core/classes/IO.html pdflatex = "pdflatex" @save_dir = "figures_out" name = "red" syscmd = "cd #{@save_dir} & #{pdflatex} -interaction=nonstopmode #{name}.tex" puts syscmd IO::popen(syscmd, "r+") puts $? It does not work. pdflatex complains Invalid Argument. However when I replace IO::popen(syscmd, "r+") with system(syscmd) it does work but I cannot read the output back. Can you please tell me why does this happen OR a workaround to achieve my goal. ==================================================== Here is the actual code @measures = {} IO::popen(syscmd, "r+") do |f| #puts $? f.close_write # We don't need that. log = File.open(logname, "w") for line in f log.print line if line =~ /^(.*)\[(\d)\]=(.+pt)/ n = $1 num = $2.to_i dim = Utils::tex_dimension_to_bp($3) @measures[n] ||= [] @measures[n][num] = dim end end end -- Posted via http://www.ruby-forum.com/.
|
Pages: 1 Prev: bluecloth 2.0.5 installation error on Windows Next: [ask]How to remove HTML part of a text |