カテゴリ: donrails の記事 [リスト]
Railsで構築したblog日記ドキュメント管理システム。Diary/Document on Railsの略普段つかっている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なようだが.
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でやる時期がきたのかもしれない.
しかしなかなかうまくいかなかった.まあ結局のところこんなかんじでうまくいった.
ということだった.http://techno.hippy.jp/rorwiki/?HowtoFunctionalTest
質問 2: ある@flashアイテムがセットされていたら、ビューに特定のセクションが表示されることをテストしたかったら、どうやって@flashオブジェクトをセットアップすればいい? request.session['flash']に値を設定してみたんだけど、うまくいかないみたいだった。
答え: リクエストはパラメータを4つ受け取って、最後がflashパラメータだ。 たとえば: get :index, nil, nil, { :what =&gt; "ever" }
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
この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でいれていたんですが。。何がいかんのでしょう。
まあ動いたのでいいや。
本よんだ。http://hbslife.exblog.jp/ にあるのの書籍化なのだが、当然ながら本になるかんじにいろいろ修正されていたり加筆されていたような。本でまとめて読んだので詳細は覚えていない。
まえむきなプロデュース的側面、平気でテーマ毎に違うURLに書く点など、売れる、読ませる、再度来させるblogを見事に本にしたかんじ。
自分はh14mをtakuoから聞く前は手で日記更新してて、h14m聞いて なんですかそら、じゃあ使うか、という時代から書いています。気がつくと10年以上こんな文章をほぼ毎日晒しているのでURLをテーマ毎に変えてしまうなんて自分ではやらないことなのですが。
読む人の事を思うなら、このテーマはhatena,このテーマはbloggerとかいうように分けるのがいいのかもしれない。
donrailsではカテゴリ別に表示されたときは、カテゴリ毎にわけたrdfが一番最初に表示されるようになっている。
- http://donrails.araki.net/rdf/rdf_category/58 が大学関係のrdf
- http://donrails.araki.net/rdf/rdf_category/19 がapache関係のrdf
それでFirefoxとかで登録すると選べるのだがうまい見せ方を考えねばならんな。
やっとちょっと時間がとれたので、インストール周りを大変更した新donrailsにとりあえず自分の環境を以降した。(いままでは開発環境のみ)
Windows live writer 2008からも当然使える。とりあえずMetaweblog APIでは問題なく動いているようだ。windows live writerにもAtomPP機能が加わったようなので、donrailsのAtomPPでも動くのかをそのうち見ることにする。
しばらくいじる暇がなくて、野首先生からの移行ポイントを忘れてしまったので、またおしえてもらったら対応したい。
さっきwindows live writerのblog feedをみてみたらbeta3がでていたので早速インストールしてみる。
インストーラには他のwindows live サービスも統合されていて、messenger,フォトアルバム、windows live mailなどもほっとくと全てインストールするようにデフォルトではなっている。
今回からは画像をpicasawebにuploadする、なんて機能もついているようでMSとは思えなさを感じる。動画の埋め込みも可能になっているようだ。
というわけでr290をdonrails1.7.0として出しました。これで今の構成のdonrailsは終了です。donrails2にむけて作業をします。
knokさんから「俺がつかえるようにしてくださよ」というおねがいをいただいたときからの懸念だったことがdonrailsのインストール時にrailsコマンドを内部で呼びだしていたことです。
これから主にインストールの簡略化のために大幅に構造を変更して、donrails2にむけた作業をします。データの互換性はもちろん維持しますが、directory構成はそれにともなって大幅に変更します。
予定している主な作業- インストール時にrailsを呼ばないようにする。つまり、railsの全パッケージをツリー下で管理します
- /adminコントローラ以下にactive_scaffoldを使っていきます
- hnfやtdiraryからの移行ツールのみなおし
- 自動テスト(crouse controller化?)
もしかしたら、さっきk西さんに聞いたgemsにあるというatom-toolsもつかうかもしれない。
- donrailsをはじめたころにはそんなもんなかった
- migrateは当初sqlite、sqlite3に未対応
- donrailsというか私はそれをつかっていた
という理由だったのだがすべて解決し、今やOracleでもMSSQLでもmigrateできてしまうのでこれを使うことにした。
最初からmigrateをつかっていればはまらなかったのだが、不幸にも私ははまるケースで、
rake db:migrate
をすると、なんと使っていたテーブル(とその内容)が消えてしまう現象が。
いろいろ疑ったり試したりした結果、production -> developmentにcopyしてdevelopmentでmigrateしたあとでdatabase.ymlをかきかえという方法で対応することにした。
$ mysqldump -t donrails_production > donrails-0712a.sql
$ vi database.yml
して、developmentにdonrails_production2を追加
$ mysqladmin create donrails_production2
で、db作成
$ rake db:migrate VERSION=1
テーブルがいろいろできる
$ mysql donrails_production2 < /tmp/donrails-0712a.sql
元のデータをかきもどし。
ここまででokなのだが今回はついでにtableを一部変更してversion2にしないといかんので
$ rake db:migrate VERSION=2
としてChangeHabtmToHmtを適用。
$ vi database.yml
prodcutionにdonrails_production2をみるように書きかえる。
メモ:mysqldumpによるバックアップ
- テーブルを作成させない形式でのバックアップ: mysqldump -t donrails_development
- 通常のバックアップ: mysqldump donrails_development
というわけで終了
donrailsは以前からXML-RPCでの入力にも対応している。それでおとといだかにwindows live writer beta2がでたのでちゃんとつかえるかどうか試してみた。当然ながら今回もうまくいった。
結局問題なくつかえるのだが、実は最近画像をはることがあまりなかったので、r241で修正した。
- ホームページには、http://donrails.example.net/archives
- user / password を入力する。 (これは投稿者管理で設定したものを入力する)
- posting URLは http://donrails.example.net/backend/api などになる。
- プロバイダには metaWeblog API を指定する
- これがおわると確認画面がでる。
- 無事終了すればこんな画面がでる。
ところでwindows live writerには機能編集なるものでいろいろ確認できるようだ。
