debiancdn

AWS, Content Delivery Network and Debian

カテゴリーアーカイブ: donrails

donrailsいじり

ひさしぶりにdonrailsをいじることにした.理由はいろいろあるのだが,カテゴリ管理をもうちょっといじりたいのと,DBをいじるためのツールとして整備したいと思ったから.

とりあえず2.0->2.1にするための作業をする.とりあえずbranchきったので明日には対応できる予定.

しかしきわいことを多数やっているので大変だ.あまり普通の人に役にたたない(必要ない)微妙なapiの変化への対応を多数やったので,明日整理する.

mac用のblog editorをいくつかためしてみる

普段つかっているScribeFireが3.0になってから,まともに入力すらできなくなってしまった(直るとは思っているけど…追記:firefoxあげなおしたらこんどは行けるな.なんだったんだろ)ので,他のもつかってみることにした.サーバはdonrailsです.

BlogThing v1.0.2はPowerPC用のバイナリしか配布されていないようだ..そしてシンプルなのはいいのだが,urlの処理(HREFとか..)も書けないのでどうもだめだな.

Bleezer v0.9.8.2はけっこういいかんじかな…とおもっていたら入力時のカーソル位置が変で,いやな予感がしたのだが,見事に入力ができなくなった.日本語のせいか?… flickrとの連動もあるようなのでちゃんと動けば期待大なのだが..

調べてみたら,Kaku v1.3.3という日本人が作ったものがあるようでこれを試してみる.URLをペーストできないぞ.おかしいな.

結局ScribeFireのまま行きそうだが,ちょっと3.0になってbugかかっているような.
通常のeditモードがで単純に改行してもHTMLに反映されていない.もちろんHTML編集モードで書けばokなようだが.

rails2.0.2+ruby1.8.7でtestを通らなくなった.

donrailsがうごいてるdonrails.araki.netではruby1.8.5で動いているので問題ないのだが,ノートの上のsidではrubyが1.8.7にあがったようで,rails2.0.2+ruby1.8.7でtestを通らなくなった.

まずひとつ目はtruncate(/var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_view/helpers/text_helper.rb)を見てみる.

      def truncate(text, length = 30, truncate_string = "...")
        if text.nil? then return end
        l = length - truncate_string.chars.length
        (text.chars.length > length ? text.chars[0...l] + truncate_string : text).to_s
      end

どうやらtext.chars.lengthというのを中で使っていて,ruby1.8.7ではtext.chars.lengthがつかえない.これはので,text.chars.to_a.lengthとすれば回避できた.1.8.7で,Enumerable::Enumerator を返すようになったのが問題なのかな.

irb(main):001:0> "hoge".chars.length
NoMethodError: undefined method `length' for #<enumerable::enumerator:0xb7be8c70>
        from (irb):1
irb(main):002:0> "hoge".chars.to_a.length
=> 4
irb(main):003:0> "hoge".length
=> 4

というかんじ.はて.etchではどうかとおもったが,

irb(main):001:0> "hoge".chars.length
NoMethodError: undefined method `chars' for "hoge":String
        from (irb):1
irb(main):002:0> "hoge".chars.to_a.length
NoMethodError: undefined method `chars' for "hoge":String
        from (irb):2
        from :0
irb(main):003:0> "hoge".length
=> 4
irb(main):004:0> RUBY_VERSION
=> "1.8.5"

あれれ.しかしどっちにしろ"hoge".lengthですむのになんでString.charsなってんだろ.国際化対応のせいなのかなあ..よーわからん.世にはこんなパッチを出している人もいるようで. http://www.ruby-mine.de/assets/2007/12/31/ruby-19-on-rails-fixes.diff

手元ではrails2.1.0 + ruby1.8.7でやる時期がきたのかもしれない.

railsのtest時にflash[:what]を設定する

g15のためにadminとしてloginしなくても記事が書けるように新たにauthorコントローラをつくってみた.
作ったからにはtestも書いておかねばならんが,controllerの動作中でflash[:author_name]の値を使っているので,これをtestのrequestにも追加しなければならない.

しかしなかなかうまくいかなかった.まあ結局のところこんなかんじでうまくいった.

http://techno.hippy.jp/rorwiki/?HowtoFunctionalTest

質問 2: ある@flashアイテムがセットされていたら、ビューに特定のセクションが表示されることをテストしたかったら、どうやって@flashオブジェクトをセットアップすればいい? request.session[‘flash’]に値を設定してみたんだけど、うまくいかないみたいだった。

答え: リクエストはパラメータを4つ受け取って、最後がflashパラメータだ。 たとえば: get :index, nil, nil, { :what =&amp;gt; “ever” }

ということだった.

donrailsのBackgrounDRbをつかったpinngerが動かなくなっていたので修復

donrailsではBackgrounDRbをつかってgoogle等にpingをとばしている.
BackgrounDRbが1.0.3になったら,そのためのpinngerが動かなくなっていたので修復した.
ようはBackgounDRbで呼びだすPinggerWokerが内部でActiveRecordをつかってとあるmodelを呼びだしているのだが,呼びだせなくなっていた.
ようするに,lazy_load: true としてやればいいというだけのことだった.
わかってしまえば何てことはないのだがな.

BackgrounDRb – Introduction BackgrounDRb

lazy_load option should be false if you want to pass ActiveRecord model objects around, However, this option is generally not encouraged to use, because if your model makes use of some other ActiveRecord plugin and plugin is not available during load, loading of model will fail. In new version of BackgrounDRb its generally discouraged to pass model objects around, since they are harder to serialize and deserialize.

BackgrounDRb – Introduction BackgrounDRb

:lazy_load: true # load models eagerly

lighttpd+fcgiではconfig/environment.rbに書いたrequire ‘will_paginate’を読まない..

このblogのdonrailsをrails2.0対応したtrunkにいれかえる.やり方

が,will_paginateが動作していない.もっともwill_paginateがなくても動作するようにコードはかいていたので問題がないと強がることもできなくはないのだが,pageで移動することができない.

./script/consoleでもwebrickでも動作するので,lighgttpd+fcgiの環境のせいなのか.

lighttpd+fcgiではconfig/environment.rbに書いたrequire ‘will_paginate’を読まない..

このblogのdonrailsをrails2.0対応したtrunkにいれかえる.やり方

が,will_paginateが動作していない.もっともwill_paginateがなくても動作するようにコードはかいていたので問題がないと強がることもできなくはないのだが,pageで移動することができない.

./script/consoleでもwebrickでも動作するので,lighgttpd+fcgiの環境のせいなのか.

以下追記。(Apr.2)

どうもgem install fcgi をしたらちゃんと読むようになったっぽい。

 libfcgi-ruby1.8           0.8.7-3 

をdebian etchでいれていたんですが。。何がいかんのでしょう。

まあ動いたのでいいや。

donrails の rails2.0対応

たいへんたくさんやることがあった.まったく,次からは簡単だが.

  • auto_complete
  • acts_as_nested_set
  • classic_paginator
  • will_paginate (by gems)

このへんを追加して対応.

このへんの成果が某所に出せたらそこで書いていく予定.

ハーバードMBA留学記 という本とテーマ毎にblogをのりかえてしまう件に対するdonrailsでのやりかた

本よんだ。http://hbslife.exblog.jp/ にあるのの書籍化なのだが、当然ながら本になるかんじにいろいろ修正されていたり加筆されていたような。本でまとめて読んだので詳細は覚えていない。

まえむきなプロデュース的側面、平気でテーマ毎に違うURLに書く点など、売れる、読ませる、再度来させるblogを見事に本にしたかんじ。

自分はh14mをtakuoから聞く前は手で日記更新してて、h14m聞いて なんですかそら、じゃあ使うか、という時代から書いています。気がつくと10年以上こんな文章をほぼ毎日晒しているのでURLをテーマ毎に変えてしまうなんて自分ではやらないことなのですが。

読む人の事を思うなら、このテーマはhatena,このテーマはbloggerとかいうように分けるのがいいのかもしれない。

donrailsではカテゴリ別に表示されたときは、カテゴリ毎にわけたrdfが一番最初に表示されるようになっている。

それでFirefoxとかで登録すると選べるのだがうまい見せ方を考えねばならんな。

http://pingoo.jp/ping/

pingおくるのがエラーになってたのではずした。何かかわったのかな。