ruby File.new `initialize' : No such file or directory

标签 ruby file

我完全被这个难住了。我正在尝试调试一些创建 FirstRun 文件的代码,作为程序已经完成首次运行设置的标记。它尝试在 absworkingdir 变量指定的工作目录中创建它。但是,当它尝试使用 File.new 创建文件时,出现以下错误

`initialize': No such file or directory '

相关代码如下:

#First run setup
puts workingdir#debug
absworkingdir = File.expand_path(workingdir)
puts absworkingdir#debug
if File.exist?("#{absworkingdir}/FirstRun.lock") == false
    puts "This appears to be the first run of FigShare Sync. We'll setup a few things."
    print "Where would you like to store settings and files? [~./figsharesync]: "
    @input = gets.chomp
    puts @input#debug
        if @input.empty? == false
            workingdir = @input
            absworkingdir = File.expand_path(workingdir)
        end
    print "Please enter OAuth consumer key: "
    consumerkey = gets.chomp
    print "Please enter OAuth consumer key secret: "
    consumersecret = gets.chomp
    print "Please enter OAuth access token: "
    accesstoken = gets.chomp
    print "Please enter OAuth access token secret: "
    accesstokensecret = gets.chomp
    puts "Great! we'll get running now..."
puts absworkingdir#debug
File.new("#{absworkingdir}/FirstRun.lock", "r")
end

这是调试行的输出:

~/.figsharesync/                                                                                                                                                                                                                        
/var/lib/stickshift/5165dc1e4382ec92040001a8/app-root/data/.figsharesync                                                                                                                                                                
This appears to be the first run of FigShare Sync. We'll setup a few things.                                                                                                                                                            
Where would you like to store settings and files? [~./figsharesync]:                                                                                                                                                                    

Please enter OAuth consumer key:                                                                                                                                                                                                        
Please enter OAuth consumer key secret:                                                                                                                                                                                                 
Please enter OAuth access token:                                                                                                                                                                                                        
Please enter OAuth access token secret:                                                                                                                                                                                                 
Great! we'll get running now...                                                                                                                                                                                                         
/var/lib/stickshift/5165dc1e4382ec92040001a8/app-root/data/.figsharesync                                                                                                                                                                
source/figsharesync2.rb:38:in `initialize': No such file or directory - /var/lib/stickshift/5165dc1e4382ec92040001a8/app-root/data/.figsharesync/FirstRun.lock(Errno::ENOENT)                                                          
    from source/figsharesync2.rb:38:in `new'                                                                                                                                                                                        
    from source/figsharesync2.rb:38:in `<main>'     

最佳答案

你想对 File.new 使用写模式,否则你说你想以读模式打开一个不存在的文件:

f = File.new("#{absworkingdir}/FirstRun.lock", "w")
f.close

关于 ruby File.new `initialize' : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200702/

相关文章:

ruby-on-rails - 在不存在的方法上使用 Rails 表单助手

Ruby:读取 xls 文件的内容并获取每个单元格信息

ruby-on-rails - 如何在没有 ActiveRecord 的情况下在 Redis 和 Ohm 上使用表单?

Ruby 的 File.open 和 f.close 的必要性

matlab - 如何在MATLAB中获取特定目录下的所有文件?

javascript - 使用不同的扩展名 javascript 保存文件

mysql - 在Leopard上设置Rails/Mysql时有哪些陷阱和解决方案?

ruby - << 和 = 之间的区别

java - java中文件加载完成检查

c - 在 Linux/C 编程中,使用函数 write 也会在缓冲区上移动指标吗?