Hatena::Grouprubyist

yuisekiのいまさらruby厨日記

|

2010-03-10

pitを使い始めた

14:47 | はてなブックマーク - pitを使い始めた - yuisekiのいまさらruby厨日記

sudo gem install pit

したはいいものの、

なんかpit set twitter.comとかやってもどういうフォーマットで書いたらいいのかまったく分からなかったし誰も細かい説明を書いていないようなので、

ruby -e 'require "rubygems";require "pit";Pit.set("twitter.com", :data=>{"username"=>"yuiseki", "password"=>"kogaidan"})'

みたいな感じで設定しました

トラックバック - http://rubyist.g.hatena.ne.jp/yuiseki/20100310

2010-02-08

shutgunがlocalhostでしか使えないのでpassengerをアクセスの度に常時リロードさせる

19:24 | はてなブックマーク - shutgunがlocalhostでしか使えないのでpassengerをアクセスの度に常時リロードさせる - yuisekiのいまさらruby厨日記

sinatraの開発サーバーはファイル保存しても自動リロードしてくれないからshutgunとかいうのを使えってよく言われてるけど、これ、localhostでしかうごかないやんけ!!!

sinatraでもrailsでも

APP_ROOT/tmp/always_restart.txt

というファイルを置けばアクセスのある度にpassengerが毎回リロードしてくれるみたいですよ、便利ですね




PS:セッションとかは再起動すると全部消えるらしいですよ、無限ログイン地獄

トラックバック - http://rubyist.g.hatena.ne.jp/yuiseki/20100208

2010-02-06

Rails 2.3.5 から Rack 1.0.1 が必須に

04:08 | はてなブックマーク - Rails 2.3.5 から Rack 1.0.1 が必須に - yuisekiのいまさらruby厨日記

http://weblog.rubyonrails.org/2009/11/30/ruby-on-rails-2-3-5-released


Rack 1.0.1が必須になったので

gem install rack --version '= 1.0.1'

する必要がある


1.0.1より新しいやつがあってもだめ。

エラーの例

/usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:271:in `require_frameworks': RubyGem version error: rack(0.4.0 not ~> 1.0.1) (RuntimeError)
        from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:134:in `process'
        from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `send'
        from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `run'
        from /home/yuiseki/rails/twitter/config/environment.rb:9
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/generate.rb:1
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from ./script/generate:3
トラックバック - http://rubyist.g.hatena.ne.jp/yuiseki/20100206

2010-01-28

SinatraでTokyoTyrantにWeb出力をつける

01:42 | はてなブックマーク - SinatraでTokyoTyrantにWeb出力をつける - yuisekiのいまさらruby厨日記

SinatraTokyoTyrantが入っていればどの環境でもコピペでうごく、可能な限りシンプルな例

require 'rubygems'
require 'sinatra'
require 'tokyotyrant'
include TokyoTyrant

helpers do
  def get_recents()
    rdb = RDBTBL::new
    rdb.open('localhost', 1978)
    qry = RDBQRY::new(rdb)
    qry.setorder('', RDBQRY::QONUMDESC) # 主キーを数値型と想定し降順でソート
    qry.setlimit(10, 0) # 取得上限件数、オフセット数
    qry.searchget
  end
end

get '/' do
  @records = get_recents()
  result = []
  @records.each do |r|
    r.each_pair{|key, value|result.push "<b>#{key.to_s}</b>: #{value.to_s}<br />"}
    result.push "<br />"
  end
  result.join("")
end

これをapp.rbみたいなファイルにコピペしてruby app.rbとすればlocalhost:4567でTTの内容が出力されているはず。

とりあえずの動作環境チェックくらいにしか使えない感じのコード。

トラックバック - http://rubyist.g.hatena.ne.jp/yuiseki/20100128

2010-01-24

はじめてのSinatra、任意のURLをパラメーターとして受け取る

17:36 | はてなブックマーク - はじめてのSinatra、任意のURLをパラメーターとして受け取る - yuisekiのいまさらruby厨日記

クローラで集めたデータをとりあえずTokyoTyrantに入れたとして、それをWebで公開するにはSinatraいいですね。

複雑な関連を持ったモデルを扱ったりする場合は、Railsのほうがよさそうだけど。

ところではてなブックマークの

http://b.hatena.ne.jp/entry/image/任意のurl

というブックマーク数の画像を返すAPI、これみたいなやつをSinatraで作りたい

get '/was/bookmarked/*' do
  url = request.fullpath.scan(/^\/was\/bookmarked\/(https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]*)$/).flatten!.first
  if bookmarked?(url)
    send_file "public/img/bookmarked.jpg"
  else
    send_file "public/img/append.gif"
  end
end

bookmarked?というメソッドはヘルパーに定義して、過去に自分がブックマーク済かどうかをチェックして真偽値を返している。

任意のURL文字列をパラメーターとして受け取ると、たとえば

/was/bookmarked/http://route477.net/d/?date=20080716

というリクエストがくる可能性がある。

URL内に?name=valueみたいなやつとか、#p1みたいなやつがあると、Sinatra(よりも前段階のRack?)が問答無用で勝手にパースして@params変数に入れたり切り捨ててしまうので、request.fullpathを見るしかないっぽい。

?とか#とかを含まない、任意のURL以外の単純な文字列だったら

get '/say/*/to/*' do
  params[:splat] # => ["hello", "world"]
end

これだけで済むんだけど。。

GertieGertie2011/05/05 04:02Very true! Makes a change to see seomnoe spell it out like that. :)

mcahrzbmcahrzb2011/05/05 21:538Pmkjz <a href="http://lqgrkbrtxbmi.com/">lqgrkbrtxbmi</a>

jhxzheqrjhxzheqr2011/05/06 22:49NCl6Kg , [url=http://keyxlxzmsane.com/]keyxlxzmsane[/url], [link=http://ipefpbjpnenc.com/]ipefpbjpnenc[/link], http://ipjealunfaff.com/

zjfekwqvzjfekwqv2011/05/07 13:5440yaZW <a href="http://lpbcaqonirms.com/">lpbcaqonirms</a>

bvblazambvblazam2011/05/08 12:48Fd7WDY , [url=http://ysjzqzglnjfr.com/]ysjzqzglnjfr[/url], [link=http://qpmztgnkxwfe.com/]qpmztgnkxwfe[/link], http://grvsumdtjgom.com/

トラックバック - http://rubyist.g.hatena.ne.jp/yuiseki/20100124
|