在Alfred Workflow中运行Ruby脚本中的Gem

时间:2014-02-02 04:17:45

标签: ruby gem alfred sonos

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

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

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

我尝试过其他Ruby脚本,运行得很好。但任何需要宝石的东西都不起作用。

我也试过下载宝石并且只需要绝对路径,但也没有运气。

Alfred screenshot

1 个答案:

答案 0 :(得分:0)

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