我刚刚开始用Ruby学习文件IO,并且有一个问题是能够使用:: expand_path指向与我的程序运行位置不同的路径。
这是我基本上喜欢能够做到的事情,但遗憾的是这对我不起作用。
require 'openuri'
require 'fileutils'
if File.expand_path.exists?("~/newpathdir/")
File.expand_path.open("~/newpathdir/log.txt", "a+") {|f| f.write("#{Time.now} Directory is good. Returning...") } #If directory is present, does nothing
return
else
FileUtils.mkdir_p.expand_path("~/newpathdir/")
File.open("~/newpathdir/log.txt", "a+") {|f| f.write("#{Time.now} Directory not found. Creating...") } #If directory not found, writes to log
end
def writeLatestToFile
tweet_file = File.open("~/newpathdir/latest_tweet.txt", "a+") #Opens file
if tweet_file #Checks if file opened correctly
tweet_file.syswrite("#{@latest_tweet["ID"]}\n#{@latest_tweet["Tweet"]}") #Appends latest_command information to latest_command.txt
elsif
File.open("~/newpathdir/log.txt", 'a+') {|f| f.write("#{Time.now} Error opening tweet_file.txt") } #If error in opening file, writes to log
end
end
非常感谢任何帮助。
答案 0 :(得分:1)
这是你想要的吗?
require 'fileutils'
def append(path, message)
path = File.expand_path path
FileUtils.mkdir_p File.dirname(path)
File.open(path, "a+") {|f| f.write "#{message}\n" }
end
def log(path, message)
append(path, "#{Time.now} #{message}")
end
append('~/newpathdir/latest_tweet', "123456\nLatestTweet")
log('~/newpathdir/log', 'Hello world')
也许你也应该试试Logger
。 Class: Logger (Ruby 1.9.3)
require 'logger'
require 'fileutils'
path = File.expand_path '~/newnewpathdir/tweets_logger.log'
FileUtils.mkdir_p File.dirname(path)
log = Logger.new(path)
log.debug('Hello world.')
log.info('Info message.')
log.error('Error message.')