ruby 代表浪漫?如何从自身更新脚本

标签 ruby macos download hpricot

当我使用我的极客能力来“浪漫”时,我的妻子很喜欢它,所以我想在她的 Mac 上安装一个 ruby​​ 脚本,它可以全天向她发送我的引述和小笔记。 我已经知道我将使用 GeekTool 在后台运行脚本,我将使用 growlnotify 来显示消息。 现在我需要的是一种从网络更新脚本的方法,以防我更改它。 除了如何与控制台交互之外,我对 ruby​​ 基本上一无所知。

我有两个目标: 1) 有一个包含消息的 XML 文件。这需要可以从互联网上更新,但要在本地进行,以防她没有网络连接。 2) 从 Internet 更新脚本本身,以防我发现错误或想要改进它。

现在我知道,如果我愿意,我显然可以在她的 Mac 上手动更新脚本,但我认为这是学习一些更高级的 ruby​​ 的好方法。

优先级 1 是 XML 文件,如果它发生变化,能够下载新版本。我可以使用哪些 ruby​​ 东西来下载文件并将其保存到本地某个地方?

我以前用过 hpricot,这是个好方法吗?

注意:我妻子的 mac 是 Macbook,运行 Leopard(但可能是 10.4,不是 100% 确定)。

编辑

如果有人对脚本的第一个版本感兴趣,可以找到它 here

附注--> 脚本的第一个版本实际上并没有更新自身,它只是更新了 messages.xml 文件,仅此而已。

最佳答案

require 'net/http'

Net::HTTP.start("your.webhost.com") { |http|
  resp = http.get("/messages/messages.xml")
  open("messages.xml", "wb") { |file|
    file.write(resp.body)
  }
}

类似的东西应该可以工作。您也可以下载 Ruby 脚本,然后调用。

exec("ruby script2.rb")
#no further lines in script1 will execute

关于 ruby 代表浪漫?如何从自身更新脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1860566/

相关文章:

iphone - iPhone 应用程序可以轻松扩展并在 Mac App Store 上发布吗?

ruby - 是否可以为 Ruby 中的模块创建别名?

ruby - 十六进制字符串到 Ruby 中的 signed int 转换

ruby - 如何使用 ruby​​ 和/或正则表达式获取匹配括号内的所有文本

go - 如何下载支持简历的文件?

python - Django:在 mongodb 中提供从 GridFS 下载的文件

asp.net-mvc - 如何生成链接以在asp.net MVC 中下载文件?

ruby-on-rails - 如何在 Rails 的链接中添加附加标签?

objective-c - 过滤 [NSWorkspace runningApplications] 以仅包含用户应用程序(无守护程序/UIAgents)

macos - 添加带空格的路径在 OSX El Capitan 中不起作用