在 Alfred 工作流中运行的 Ruby 脚本中包含 Gem

Posted

技术标签:

【中文标题】在 Alfred 工作流中运行的 Ruby 脚本中包含 Gem【英文标题】:Include Gem in Ruby Script Run in Alfred Workflow 【发布时间】:2014-02-02 04:17:44 【问题描述】:

我正在尝试创建一个 Alfred 工作流程,以通过 Alfred 使用热键更改音量。

控制Sonos的工作宝石在这里:https://github.com/soffes/sonos

问题是:将 gem 作为脚本的一部分简单地包含在内是行不通的。当我运行工作流程时,没有任何反应。我附上了我正在谈论的 Alfred 截图的截图。

我尝试了其他 Ruby 脚本,它们运行良好。但是任何需要宝石的东西都行不通。

我也尝试过下载 gem,只需要绝对路径,但也没有运气。

【问题讨论】:

【参考方案1】:

sonos gem 使用 savon gem 与 Sonos api 进行 SOAP 通信。 Savon 正在登录到 stdout,这阻止了 Alfred 工作流程的工作(它们依赖于 stdout 进行通信)。 My fork of the sonos gem 禁用日志记录,可用于您的 Alfred 工作流程。

require '/path/to/sonos'

Sonos.savon_config =  log: false 

speaker = Sonos::System.new.speakers.first

puts case "query"
  when "play" then speaker.play and "Playing"
  when "pause" then speaker.pause and "Paused"
  when "up" then speaker.volume += 5 and "Turned up"
  when "down" then speaker.volume -= 5 and "Turned down"
  when "next" then speaker.next and "Next"
  else "Unknown command"
end

【讨论】:

Alfred 中的语言下拉菜单设置为 bash 还是 Ruby? 截图如下:dropbox.com/s/mce4vmc6qdt4grf/… 如果您使用系统 ruby​​,那么您可以从 Alfred 工作流程的下拉菜单中选择 ruby​​。

以上是关于在 Alfred 工作流中运行的 Ruby 脚本中包含 Gem的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Github 工作流上运行 Ruby 脚本

python 愚蠢的简单脚本通过Alfred运行,从.app或.icns文件中生成512x512图标并将其复制到Munki仓库

让 Ruby 服务在 Elastic Beanstalk 上运行

如何使用 Ruby 编写 shell 脚本?

搜索启动神器 Alfred 新手使用指南

python 将Alfred工作流构建到.alfredworkflow(zip)文件中