• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
 

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/151

detachしたGNU screenのセッションに、別なサーバから再接続したり、一度ログアウトしてから再接続しようとすると、SSH Agent Forwardingがうまく機能しなくなってしまいます。 この問題は、screen作成時に設定されたSSH関連の環境変数(SSH_XXXX)が、再接続時には無効な値となっていることにscreenが気づかないために起こります。

従って、この問題を解決するためには、再接続の直前に接続元の SSH関連の環境変数をコピーし、接続後にその値を再設定する必要があります。 以下は、これを実施するためのShellスクリプトの例です。

# fix ssh env
if [ "$TERM" = "screen" ]; then
  alias fixsshenv='cat ~/.ssh/fix_ssh_env | sh'
  alias ssh='fixsshenv; ssh'
  alias svn='fixsshenv; svn'
else
  export | grep '^SSH_' > ~/.ssh/fix_ssh_env
fi
これを~/.bashrcや~/.zshrcに記述しておけば、SSH Agent Forwardingが うまく行かなくなったときに
$ fixsshenv
を実行する事で復帰させる事ができます。 便利のためにsshとsvnコマンドはaliasを設定しています。 screenへのre-attach時に、自動的にfixsshenvを実行するようにできたらスマートですね。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/151

posted by Png genki on Sun 31 Dec 2006 at 05:55

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/150

Rails1.1.6で作成したアプリケーションについて、EdgeRailsおよびRails1.2RC1で動作検証したところ、ActiveRecord::Base.lock_mutex/unlock_mutexを使っている場合にエラーが発生するようです。

代わりに次のように書き換えると動作するようです。

#ActiveRecord::Base.lock_mutex
ActiveRecord::Base.send :increment_open_transactions

#ActiveRecord::Base.unlock_mutex 
ActiveRecord::Base.send :decrement_open_transactions 
この辺を参考にしました。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/150

posted by Png genki on Sat 30 Dec 2006 at 23:21

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/146

Ruby on Railsには、IntegrationTestを行う機能がありますが、このIntegrationTestの中でrender_componentを呼び出す処理を行う場合に、

No action responded to XXXXX
というエラーが出てしまうという現象が発生して困っていました。

FunctionalTestや実際の運用環境では問題なく動作するのですが、IntegrationTestの場合は上記のエラーが出てしまうんですよね。 色々調べてみても原因が突き止められなかったのですが、思いがけないところから解決の糸口を発見する事ができました。

ちょうどEdgeRailsとRuby-GetText-Packageの問題の解決策を調べていたのですが、この角谷さんの投稿を見てでピンと来ました。

ENV['REQUEST_URI'] = url_for('controller' => 'foo', 'action' => 'bar')
render_component 'controller' => 'foo', 'action' => 'bar'
これでOKでした。角谷さんありがとうございます。

注: この方法がうまく行くのは、いまのところEdgeRailsだけのようです。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/146

posted by Png genki on Sat 30 Dec 2006 at 15:01

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/149

Rails 1.2のReleace候補が出てからしばらくたちますし、 そろそろ検証してみないとと思って色々やってみたところ、 Ruby-GetText-Packageを使っていると

Rails 1.2RC1にてエラーの報告
という問題が起きる事がわかりました。

この問題は、CVS版のRuby-GetText-Package version 1.9.0を使うと回避できます。 加えて、角谷さんが投稿してくれているpatchも適用した方がいいようです。

それから、下記のDEPRECATION WARNINGに遭遇しました。

model is deprecated

ActionController::DependenciesモジュールのmodelメソッドはRails2.0で使えなくなりますよ、という警告。modelメソッドについてはこの記事が詳しい。

この場合、単純にmodelディレクティブを削除すれば良いかな。 ただし、namespace付きのARを使ってる場合は注意が必要なようです(この辺で報告されている)

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/149

posted by Png genki on Sat 30 Dec 2006 at 13:23

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/148

Rubyのnewメソッドとallocateメソッドの挙動に関するメモ。

$ irb
>> class Foo
>>   def initialize(a)
>>     @foo = a
>>   end
>>   def foo
>>     initialize("test")
>>   end
>> end
=> nil
>> a = Foo.new("bb")
=> #<Foo:0x40203ce0 @foo="bb">
>> b = Foo.allocate
=> #<Foo:0x401f4b50>
>> b.foo
=> "test"
>> b
=> #<Foo:0x401f4b50 @foo="test">
new*1 = allocate + initialize*2 ということですね。ファクトリーパターンを実装するのが楽になりそう。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/148

  1. 1 args

  2. 2 args

posted by Png genki on Fri 29 Dec 2006 at 14:40

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/147

西さん(a.k.a. maiha)のRuby on Rails入門のp112に書かれてる偽STIが面白そうだったので、 instantiateのソースコードをメモ。

# File src/rails-1.1.6/activerecord/lib/active_record/base.rb, line 975
def instantiate(record)
  object = 
    if subclass_name = record[inheritance_column]
      if subclass_name.empty?
        allocate
      else
        require_association_class(subclass_name)
        begin
          compute_type(subclass_name).allocate
        rescue NameError
          raise SubclassNotFound,
            "The single-table inheritance mechanism failed to locate the subclass: '#{ record[inheritance_column] }'. " +
            "This error is raised because the column '#{ inheritance_column }' is reserved for storing the class in case of inheritance. " +
            "Please rename this column if you didn't intend it to be used for storing the inheritance class " +
            "or overwrite #{ self.to_s }.inheritance_column to use another column for that information."
        end
      end
    else
      allocate
    end

  object.instance_variable_set("@attributes", record)
  object
end
ソースコードはここから持ってきました。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/147

posted by Png genki on Fri 29 Dec 2006 at 13:02

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/145

WirbleというRubyGemsの話です。

from RubyInside:

Wirble: Tab-Completion and Syntax Coloring for irb
これを使うとirbの出力をカラフルにして視認性をよくすることができます。

使い方は、まずWirbleをインストールします。

$ sudo gem install wirble --include-dependencies
続いて、~/.irbrcに以下の記述を追記します。
require 'rubygems'
require 'wirble'
Wirble.init
Wirble.colorize
以上で完了です。irbコマンドだけでなく、script/consoleやscript/breakpointerでも色づけされた結果が表示されます。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/145

posted by Png genki on Mon 18 Dec 2006 at 17:55

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/144

今年最後のRails勉強会に参加してきました。 今回は、勉強会終了後に日本Rubyの忘年会が行われ、普段はなかなか会うことがない方々とお会いできて楽しかったです。

参加したセッションは、前半が「ワークフロー ステートの話」、後半が「Rubyist SNSを動かそう」でした。

■前半「ワークフロー ステートの話」

ABD飲み会でもお世話になった高井さんがセッションオーナーとなり、 jBPMのソースを読んだり、高井さんがそれをRubyに移植したものを眺めたりしながら Railsにあるべきワークフローエンジンの姿を思い思いに語り合いました。

jBPMのようなWorkflowエンジンをRailsにそのまま移植するには相性があまり よくないという感じでしたが、Rubyの動的言語的性格を生かして、Railsテイストな Workflowエンジンというものを1から作り上げていくのであれば、そもそもの目的である Workflowを管理するという機能は、むしろRailsと相性が良いのではないかなあと思います。 RailsにはWorkflowエンジンと衝突するような機能がまったく実装されていないですからね。 思うままに自由に線を引けるというのは楽しそう。

一説によると、来年1月初頭には、もろはしさん作のRails用のワークフローエンジンが世に出るみたいです。jBPMの枠にとどまらない凄いものが出てくる事を期待したいです。

■後半「Rubyist SNSを動かそう」

高橋さんがオーナー。このセッションは、新しいRubyist SNSのソースを持ってきて 動かしてみようというものだったのですが、いつのまにかBlueTrainをマージしようという運びになりました。

かなり強引な外科的手術の結果、あっさりとSNSとBlueTrainの混合物は新たな生を受け、 特に問題なく動いているようでした。二つのRailsアプリをマージするという作業は初めてでしたが、 お互いに初期段階であれば意外とすんなりできるようですね。

■日本Rubyの忘年会

冒頭でも述べましたが、今回はRails勉強会のメンバー以外にも普段なかなかお会いできない Rubyistの方々と再会できて楽しい時間がすごせました。

話した事:

  • artonさんや高井さんとCometの話をしました。Drecom Chatを作っていてCometについてはいろいろ思うところがあったので、情報交換ができて大変有意義でした。どの方法も一長一短なんですよね。何か決め手になる方法は無いものか。gifファイルの話とかは興味深かった。
  • Yuguiさんとギートステイトの話ができた。YuguiさんはGeet肯定派らしい。僕はそうなれば楽しいなあと思いつつ、実現は難しい派かな。でも脳を計算機として使うという方法なら確かにうまく行くかもですね。量子コンピュータとかが実用化されてしまったらあまり価値はなくなるかも。というような話をしてました。Second Lifeにはまっているという話をしたらYuguiさんもアカウントを持っているということで、Second Lifeネームの交換をしました。Second Life用の名刺があったら良いな。
最後に、暗いところだとぶれてしまってあまり鮮明じゃないですが、適度に顔がわからなくなって良いかもしれない忘年会の様子の写真です。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/144

posted by Png genki on Mon 18 Dec 2006 at 10:47

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/143

DrecomWantedに招待状況をネットワーク表示する機能がついたみたいです。

インフルエンサーがわかって面白いですよ。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/143

posted by Png genki on Wed 13 Dec 2006 at 22:53

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/142

生産的なゲームを作りたいの記事で書いた問題:

「生産的なゲームが無いのはなぜか」
について、記事にしてみたらその理由といえそうな仮説を思いついたので書いておきます。
仮説:ゲーム的な作業の成果物はチープである
ゲーム的な作業は、その楽しさ・中毒性ゆえに放っておいても繰り返されるので、その行為の成果物は自然とあふれかえる事になります。 したがって、希少性に根ざした類の価値は、ゲーム的作業による成果物に対しては宿らないという事が推測できます。

こうなると、ゲーム的作業によって生産性を獲得するためには、 希少性とは無関係な価値体系を見出さないといけないかな。 なかなか難しいですね。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/142

posted by Png genki on Tue 12 Dec 2006 at 10:27