acts_as_taggable_on_steroids はacts_as_taggableを強化したRailsプラグインで、非常に便利なので愛用しています。

しかし、find_tagged_withメソッドで OR を含む :conditions を指定すると、SQLの演算順序の問題で挙動がおかしくなります。 この問題を修正するには、以下のようにpluginコードを書き換えればOKです。

acts_as_taggable_on_steroids/lib/acts_as_taggable.rb

    def find_options_for_find_tagged_with(tags, options = {})
      tags = tags.is_a?(Array) ? TagList.new(tags.map(&:to_s)) : TagList.from(tags)
      options = options.dup

      return {} if tags.empty?

      conditions = []
      #conditions << sanitize_sql(options.delete(:conditions)) if options[:conditions]
      if options[:conditions]
        conditions << "(#{sanitize_sql(options.delete(:conditions))})"
      end

要は、オリジナルの :conditions を括弧で括って演算順序の問題が起きないようにしているわけですね。

posted by Png genki on Mon 5 Nov 2007 at 17:02

Railsの設定は、config/environment.rbのなかで、

Rails::Initializer.run do |config|
  # Settings in config/environments/* take precedence over those specified here
  config.log_level = :debug

というような感じに記述します。

アプリケーション側からここで設定した値を参照したいという場合に、その方法が提供されている気がしたので、Rails::Initializerのソースを探してみたのですが、そのような手段は用意されていないようでした。

Railsのコアを書き換えるプラグインを書こうかと思ったのですが、ふと以下のように書けば問題が解決することに気がつきました。

Rails::Initializer.run do |config| $rails_config = config

あとはどこからでも、グローバル変数の$rails_configを介して、Railsの設定情報にアクセスすることが出来ます。

posted by Png genki on Mon 5 Nov 2007 at 16:27

まだ開発中の機能が多いですが、ひとまずよろしくお願いします。

画面遷移の仕様

  • ログインするとhome画面(LifeLogを表示・管理)に移動する
  • homeでは、左上のパンくずリストが s21g :: home となる
    • s21g は root (記事一覧画面)に移動する
  • root では、左上のパンくずリストが something new and exciting となる
    • これをクリックすると、ログイン状態では home に移動する
    • 非ログイン状態では、root のまま移動しない
  • /:author は、そのauthorの記事一覧画面に移動する
posted by Png genki on Sat 3 Nov 2007 at 04:48

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

HyperEstraier は、全文検索エンジンです。Ruby on Railsから利用する場合は、acts_as_searchableを利用すると、非常に簡単にWebサービスに検索機能を追加することができます。

今回は、HyperEstraierのP2P連携機能を使ってクラスタリングを行う手順を紹介します。

まず、クラスタリングを行う全てのPCに、 通常の手順でHyperEstraierをインストール します。パッケージマネージャを使う事もできますが、今回はソースからインストールする事にします。

インストールが済んだら、HyperEstraierを初期化して起動します。以下では、/usr/local/hyperestraier以下に環境を構築しています。

   1  # estmaster init /usr/local/hyperestraier
   2  # estmaster start -bg /usr/local/hyperestraier

起動したら、ポート1978にアクセスし、動いていることを確認します。 続いてWebインターフェイスからノード間のリンクを作成します(もちろん、あらかじめノードを作成しておく必要があります。)

リンクの作成は、ノード編集画面から行います。

例)
http://search-1.com:1978/master_ui?action=10&name=nodename

ノード編集画面の一番下のlist of linksに以下のように、「{{!}}」で区切って別なサーバのノードを登録します。

http://search-2.com:1978/node/nodename{{!}}label{{!}}1000

上記は、search-2.com上のnodenameというノードに対して、labelというラベルでリンクを作成しています。1000というのは信頼度で、検索結果の順位に影響します。1台目から2台目へのlinkの設定が済んだら、2台目から1台目に逆方向にリンクを張ります。

以上でクラスタリングは完了です。 実際に検索を行うときは、メタ検索のdepthを1以上に指定する必要があります。

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

posted by Png genki on Wed 11 Apr 2007 at 02:25
Contents
acts_as_taggable_on_steroidsでORを含むconditionsを指定すると・・・
RailsのConfigurationにアクセスする簡単な方法
blogを設置しました
HyperEstraierをクラスタリングする方法
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
KingofSmack: Here also good reads for this mobile applicatio... '14-5
Spencer: You don't have to re-compile it, this version w... '14-4
staiano: Any chance we can get a recompile for 10.9? '14-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ