Vim で実行する ruby のバージョンについて

Vim 上で ruby を単純に実行するには、:!ruby % を実行すればよいのですが、たまたま Nokogiri でエラーがでてしまった。

`require': no such file to load -- nokogiri (LoadError)

ターミナルから、ruby hoge.rb は実行できているのに。Vimruby のバージョンを確認すると

f:id:ramtiga:20130905030632p:plain

ruby 1.8.7 だった。rbenv で設定している バージョンが指定されていないようだ。

ググってもなかなか見つからない情弱orz.. やっと見つけた以下の記事。

VimからrbenvのRubyが呼び出せない問題が発生してハマった

感謝です! .zshrc にあった以下の記述を、.zshenv に書かないといけないみたい。

if [ -d ${HOME}/.rbenv ] ; then
  PATH=${HOME}/.rbenv/bin:${PATH}
  export PATH
  eval "$(rbenv init -)"
fi

source ~/.zshenv して再度バージョンを確認すると

f:id:ramtiga:20130905030716p:plain

rbenv で設定しているバージョンが指定されました。

開発環境
  • Mac OSX 10.8.4
  • ruby バージョン管理:rbenv
  • zsh 4.3.11

RubyでTwitterのapiを使ってみる

rubyTwitterbot作成依頼などがあり、apiなどを使ってみたのでメモ。まあこれまた今さらネタですけど。

環境は、MaxOSX 10.6.7 Ruby 1.9.2


1.Twitterのライブラリをインストール

$ gem install twitter


2.Twitterアプリケーション登録申請


botに使いたいTwitterアカウントでログインしてTwitterアプリケーション登録申請にアクセスして以下の項目を入力します。

アプリケーション名: 任意の名称
アプリケーションの説明: 説明を10文字以上
アプリケーションのウェブサイトURL: 自分のTwitterのURLなど
アプリケーションの種類: クライアントアプリケーションを選択
標準のアクセスタイプ: Read & Writeを選択
Twitterでログインする: チェックをつける

登録完了後に表示される、「Consumer key」と「Consumer secret」をメモしておく。



3.TwitterのOAuth登録


gemでライブラリをインストールして実行

$ gem install oauth get-twitter-oauth-token
$ get-twitter-oauth-token

・Consumer keyとConsumer secretを聞かれるのでメモしておいたのをコピペする。
・ブラウザが起動してアプリケーションを許可するか聞かれるので、許可するとPIN番号が表示される。
・ターミナル側で、PIN入力待ちになっているのでブラウザで表示されたPIN番号をコピペする。
・OAuthのtokenとtoken_secretが表示されるのでメモっておく。



4.rubyTwitterにツイートする


メモった4つのkey情報を以下の該当箇所に入れて実行するとツイートされます。

# -*- coding: utf-8 -*-
require "twitter"

Twitter.configure do |cnf|
  cnf.consumer_key = "Consumer key"
  cnf.consumer_secret = "Consumer secret"
  cnf.oauth_token = "OAuth token"
  cnf.oauth_token_secret = "OAuth token secret"
end

Twitter.update("Hello World!!!")

5.Twitter apiをいろいろ試す


タイムラインや自分のつぶやき、検索など

#タイムライン
Twitter.friends_timeline.each do |res|
  p "#{res.from_user}: #{res.text}"
end


#自分のつぶやき最新10件
options = {"count" => 10}
Twitter.user_timeline("t_ramu", options).each do |res|
  p "#{res.from_user}: #{res.text}"
end

#「rails」をキーワードで検索して日本語のもののみ取得する
search = Twitter::Search.new
search.containing("rails").language("ja").result_type("recent").per_page(5).each do |r|
  p "#{r.from_user}:#{r.text}"
end


参考サイト

30分で誰でも作れるTwitter Bot開発・運用手順 – Ruby Twitter bot | はるかなる熊

File: README — Documentation for twitter (4.8.1)

サービスが開始した時に案内をもらう「Notify Me」を試してみた

MOONGIFTさんで紹介されていた、「Notify Me」を試してみた。

サービスが開始した時に案内をもらう。メールアドレス登録システム「Notify Me」|オープンソース・ソフトウェア、ITニュースを毎日紹介するエンジニア、デザイナー向けブログ


フレームワークsinatraでデータベースはsqlite3を使用しているシンプルなWebアプリケーションです。

Page not found · GitHub


■導入手順(OS: CentOS5.2)

sqlite3をいれてから、sqlite3-rubyをgemでインストールします

$ gem install sqlite3-ruby

sinatraを入れます

$ gem install sinatra sinatra-sequel

次のコマンドを実行すると、notify-me.dbというデータベースファイルが作られてサーバが起動します

$ ruby -rubygems notify_me.rb


sinatraなので、http://localhost:4567 にアクセスします。


メールアドレスを入力して「NotifyMe!」ボタンをクリックすると完了画面が表示されます。


データベースを見てみる

$ sqlite3 notify-me.db
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from subscriptions;
1|test1111@yahoo.co.jp|2011-02-09 11:34:31.491670+0900
sqlite>

ちゃんと入ってますね!