このブログシステムをRails-2.0.2からRails-2.1に移行する作業をしています。 このエントリはその作業ログです。

  • benchmark_for_rails でエラーが出るようになったので、 最新版 をGitHubからもってくる。
       1  % ./script/plugin install git://github.com/cainlevy/benchmarkforrails.git
    
  • ActiveSupportでエラーが発生。

    wrong number of arguments (0 for 1) /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:301:in `desc'

    ソースを見てみると、

       1    def will_unload?(const_desc)
       2      autoloaded?(desc) ||
       3        explicitly_unloadable_constants.include?(to_constant_name(const_desc))
       4    end
    
    これはおかしい。調べてみたらバグっぽい。

    benchmark_for_railsプラグインのlib/benchmark_for_rails/rewatching.rbのL39を以下のように修正。

       1  #rescue NameError
       2  rescue Exception
    
    プラグイン側ですでに対処されていたのだけれど、 発生する例外のタイプが変わった為にうまく動いてなかったようですね。

  • テストの実行中にTypeError: can't convert String into Integerが発生したので調査。 このへん の問題らしい。パッチを発見。 rails:freeze:gemsしてパッチを当ててみたが、解決せず。

    • その後調べてみると、どうやらacts_as_searchableのDirtyチェック用コードがRailsの仕組みとコンフリクトしてるのが原因のようでした。 (See Rails2.1でacts_as_searchable)
  • ActionView::TemplateError: undefined method `stringify_keys\' for ...というエラーが出る。
    • これは自作のHash#sliceが干渉していた模様。Railsで採用されたほうのHash#sliceにインターフェイスをあわせる。 hash.slice.valuesとすればOk.
  • Viewのテストでundefined method `cache_erb_fragment'というエラーが出る。 cacue_fuのなかで@controller.cache_erb_fragmentが呼ばれているところでエラーが発生しているようだ。
    • Cache関係の自前拡張の影響していたようなので除去。

ここまでで全テストがGreenに。 一通り動作検証をしたのち、Deploy完了。とりあえず問題なく動いているように見えます。

posted by Png genki on Sun 20 Jul 2008 at 20:37

texvcコマンドを使ってLaTeXで記述した数式の画像を取得するためのラッパーユーティリティとして Texvc を作りました。GitHubで公開しています。

インストール方法

まず、texvcを使えるようにする必要があります。texvcmediawiki-mathパッケージに付属しているので、 適宜パッケージマネージャなどを利用してインストールしてください。 あとは、GitHubからsudo gem install genki-texvcでOKです。

使い方はこんな感じです。

   1  require 'rubygems'
   2  require 'texvc'
   3  Texvc.parse('f(x)=\int_0^x \sin(t)\,dt') #=> Magick::Image

結果は以下のようなRMagickのImageになります。


f(x)=\int_0^x \sin(t)\,dt

posted by Png genki on Sun 20 Jul 2008 at 08:51

Rubyで一時ファイルを作成する場合は、 Tempfileを使うのが一般的だと思いますが、 今回は一時ディレクトリを作成する方法を紹介します。

TempDir

Jim Freezeさん作のTempDirです。 sudo gem install tempdirでインストールできて、 以下のようにして使います。

   1  require 'rubygems'
   2  require 'temp_dir'
   3  TempDir.create do |dir|
   4    puts dir # => "/tmp/temp_dir_24463_24509_oxvgf"
   5  end

dirは生成された一時ディレクトリのpathを示す文字列です。 createブロックを抜けると一時ディレクトリは削除されます。

posted by Png genki on Sun 20 Jul 2008 at 08:08 with 4 comments
Contents
Rails-2.1移行記(まだ途中⇒完了!)
Texvc: The wrapper utility for texvc command
Rubyで一時的なディレクトリを作成する方法
Comments
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
瀧内元気: おお、チェックしてみます。thx! '11-12
overisland: Reeder for iPhone もこの UI を実装していますね。 '11-12
瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 ... '11-12
tkawa: http://devcenter.heroku.com/articles/rails31_he... '11-12
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ