mechanizeを使用して動作するルビースクリプトを作成しました。
- Stackoverflowの評判とバッジ
- Twitterのツイートとフォロワー
出力を画面に印刷します。
私は最初にターミナルでこのコマンドを実行します:
/Users/cyclotrojan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby /Users/cyclotrojan/Desktop/Snippets/get_so_reputation_and_tw_followers.rb
出力は、端末に次のように正しく表示されます。
StackOverflow :
Reputation is : 406
Total Badges : 10
Twitter :
Tweets : 1,494
Followers : 137
ここで、GeekToolsを使用してデスクトップにスクリプトの出力を表示し、更新時間を30分に設定して、スクリプトを何度も実行し続け、統計を更新したいと思います。ただし、同じコマンドをgeektoolシェルに貼り付けると、出力が表示されません。
スクリプトは次のとおりです。
ファイルget_so_reputation_and_tw_followers.rb
require 'mechanize'
def get_stackoverflow_data
url_so = 'https://stackoverflow.com/users/898346/cyclotrojan'
begin
so_page = Mechanize.new.get(url_so)
so_reputation = so_page.link_with(:href => "/users/898346/cyclotrojan?tab=reputation").to_s
so_badges = so_page.search(".badgecount").first
print "StackOverflow :" + "\n"
print " Reputation is : " + so_reputation + "\n"
print " Total Badges : " + so_badges + "\n"
rescue
print "StackOverflow :" + "\n"
print "\tReputation is : " + "NA" + "\n"
print "\tTotal Badges : " + "NA" + "\n"
end
end
def get_twitter_data
url_tw = 'https://twitter.com/cyclotrojan'
begin
tw_page = Mechanize.new.get(url_tw)
tw_tweets = tw_page.link_with( :href => "/" + url_tw.split("/").last).to_s.split(" ").first
tw_followers = tw_page.link_with( :href => "/#!/" + url_tw.split("/").last + "/followers").to_s.split(" ").first
print "Twitter :" + "\n"
print "\tTweets : " + tw_tweets + "\n"
print "\tFollowers : " + tw_followers + "\n"
rescue
print "Twitter :" + "\n"
print "\tTweets : " + "NA" + "\n"
print "\tFollowers : " + "NA" + "\n"
end
end # end function
get_stackoverflow_data()
get_twitter_data()
ただし、出力がデスクトップに表示されないだけです。別のファイルtest.rbを使用してテストしたので、問題はルビーの検出にあるのではないことを知っています。
ファイルtest.rb
puts "hello"
このコマンドはGeekToolシェルで機能し、helloを正しく表示します。
/Users/cyclotrojan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby /Users/cyclotrojan/Desktop/Snippets/test.rb;
geektoolシェルでの出力:こんにちは
デバッグを行ったところ、require'mechanize'という行を削除すると、スクリプトが正しく実行され、例外のために次の出力が表示されることがわかりました。
StackOverflow :
Reputation is : NA
Total Badges : NA
Twitter :
Tweets : NA
Followers : NA
したがって、問題はスクリプトにmechanizeを含めることです。これを解決するのを手伝ってください。Thnx!
これらの質問は役に立ちませんでした: GeektoolでRubyスクリプトを実行する方法は?、 Ruby、Mac、Geektoolの質問、ファイルアクセス権?