gistコマンドが便利すぐる
gitのAccount Setting画面にあったAPI Tokenというのが何じゃろと思ったら、すぐそばのリンクからgistというコマンドの存在を知りました。今更?
↓これ
これをインストールするとコンソールから、
gist < file.txt echo secret | gist --private # or -p gist 1234 > something.txt
とかするだけで、gistを使うことができるのですね。
なにこれすごい。
割と短いrubyスクリプトですが、すごくべんりです。
ただ、自分の環境で実行すると、参照はできるんですけど、書き込みがソケットエラーになってしまいました。
エラーメッセージを見るとプロキシ関係っぽいです。
$ gist < test.txt /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `initialize': getaddrinfo: nodename nor servname provided, or not known (SocketError) from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `open' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `connect' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:53:in `timeout' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:93:in `timeout' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `connect' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:553:in `do_start' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:542:in `start' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:404:in `post_form' from /Users/nobeans/bin/gist:34:in `write' from /Users/nobeans/bin/gist:82
ソースをみるとプロキシ対応はされてるようなのですが、@proxyインスタンス変数の初期化が実行されてないため、http_proxy環境変数の設定が無視されてしまってます。
というわけで、以下のようにとりあえず修正してみたらうまく動きました。
$ diff gist.orig gist -u --- gist.orig 2009-11-19 10:19:22.000000000 +0900 +++ gist 2009-11-19 10:19:47.000000000 +0900 @@ -17,8 +17,6 @@ class << self GIST_URL = 'http://gist.github.com/%s.txt' - @proxy = ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil - def read(gist_id) return help if gist_id.nil? || gist_id[/^\-h|help$/] return open(GIST_URL % gist_id).read unless gist_id.to_i.zero? @@ -27,8 +25,9 @@ def write(content, private_gist) url = URI.parse('http://gist.github.com/gists') - if @proxy - req = Net::HTTP::Proxy(@proxy.host, @proxy.port).post_form(url, data(nil, nil, content, private_gist)) + proxy = ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil + if proxy + req = Net::HTTP::Proxy(proxy.host, proxy.port).post_form(url, data(nil, nil, content, private_gist)) else req = Net::HTTP.post_form(url, data(nil, nil, content, private_gist)) end
あまりにも簡単に使えるので、これからはもうちょっとgistを活用していこうかな、と思いました。