Hash#default_proc をあとでセットする方法
Hash#default_proc= がなかったのであるハッシュにあとで default_proc をセットする方法を考えてみました。
以下のようにするとうまく行きます。
hash = {} # default_proc が無い。
hash.default_proc # => nil
other_hash = Hash.new{|h, k| h[k] = [] }.merge(hash)
other_hash.default_proc # => #
Posted in Programming, Ruby | コメントはありません |
Hiki on Rack 2
続き。
とりあえず、ページを編集できるところまで確認。 作業手順をまとめると以下のような感じ。
- hiki.ru を用意する。
- hiki.rb を用意する。
- Hiki::App クラスを作って call メソッドを定義する
- @cgi を使っている部分を全て @request に変更する
- params[‘hoge’][0] を全て params[‘hoge’] に変更する
- ENV を使用している部分を @request.env に変更する
- クッキーを使用している部分を修正する
- セッションキーだけなので簡単
- print している部分を Rack::Response 的なものを返すように変更
- [ヘッダー,ステータス,ボディ] な配列で OK
- 面倒なのでヘッダーとボディだけ返してステータスは常に 200 にしといた
- Rack::Lint によるとヘッダーに Status を入れてはいけないらしいのでそれを入れてる部分を削除
- その他こまごまとした修正が必要。
- CGI に依存している部分とか、ロードパスとか。
まとめ
頑張ればできる。
いや、でも Hiki のソースも意外とひどいというのがわかった。統一感がないというかカオス一歩手前というか。
Posted in Ruby | コメントはありません |
Hiki on Rack
Hiki - Hiki -Front Page- を Rack: a Ruby Webserver Interface に載せる実験中。
概ねうまく行きそうな感じだけど、セッションまわりに苦戦中。あと、たぶんプラグインを全部修正しないといけないのが辛いかもしれない。
ちゃんと出来たら公開する予定。
Posted in Ruby | コメントはありません |