Ruby

CRUDのRouting 設定とHelperメソッド

いろいろとひっかかてしまうので、 Rails3 のCRUDのRouting 設定と、その設定によって生成されるHelperメソッドの関連について整理してみました。 sites という コントローラーを例にしています。 Routingの定義 routes.rb で (ActionDispatch::Routing::Map…

attachment_fuプラグインの保存先を変更

前回、attchment_fuでとりあえず画像アップロードをしてみたが、今回、保存先と画像を参照するurlを変更する実装を行っていみる。 アプリケーションとは別のディレクトリで画像を管理したいということと、 railsではなくapacheで画像のリクエストを処理させ…

attachment_fuプラグインで画像アップロード

前提 RMMagicをインストールしておく。 インストール railsアプリケーションのトップでscript/pluginを実行してインストール>ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/attachment_fu 今回の例 既存の商品モデル(product)…

RMagickインストールメモ

環境はMacBook Pro / MaxOSX 10.5.7 参考させていただいたのは、篳篥日記,Installing RMagick on OS X using MacPorts,Goodpic ブログなど。 とりあえず,jpeg,png,gif,tiffあたりのファイルタイプを使えるようにインストール。 png,jpeg, freetype /usr/loca…

i18nの整理

Rails2.2のi18nの使い方を整理しておきましょうっと。 初期化 「/config/initializers/locale.rb」で基本の設定を行う。 主な設定属性は以下のとおり。 I18n.load_path 翻訳テキストファイルのパス I18n.default_locale デフォルトの言語 I18n.locale 現在の…

cookieを保持、参照するplugin

クッキーの値をDBに格納しておき(Visitorというモデル名にする)、 次回同じユーザがアクセスしたときに格納しておいた情報を参照できるようにするというもののPluginを作ってみました。 マイグレーション まず,cookieを保存しておくテーブルを生成。Pluginの…

cookieで前回アクセス時の情報を復元

クッキーの値をDBに格納しておき、 次回同じユーザがアクセスしたときに格納しておいた情報を参照できるようにするするためのベースの仕組みの試作を行ってみました。 テーブル定義 まず,cookieを保存しておくテーブルは以下のように定義します。 class Crea…

will_paginateでのDISTINCT指定など

railsでwill_paginate使う場合で結果をdistictしようとしてすこしはまったのでメモです。 selectオプションにDISTINCTを指定 まず、単純にpaginateメソッドのselectオプションに「DISTINCT」を指定してみました。 self.paginate(:all, :joins => joins, :con…

MeCabのラッパーを実装

Mecabのインストール、Mecabのrubyバインディングのインストールを行ったので、Mecabのrubyバインディングのラッパークラスを作ってみました。 目的 商品名や説明分を形態素に分解してキーワードのインデックスを作り、そのキーワードインデックスからの検索…

Macabのモジュールの導入メモ

MAC OSX10.5へのMacabのためのrubyモジュールの導入メモです。 取得 http://sourceforge.net/project/showfiles.php?group_id=177856&package_id=205294:sourceForgeより取得。 今回はmecab-ruby-0.97.tar.gzを取得 インストール $tar xvzf mecab-ruby-0.97.…

簡単な検索フォーム

簡単な検索フォームを作ってみたので、メモしておきます。 作成したviewのフォームの記述を以下のようのform_forヘルパーを使用して作ってみました。 <table id="search"> <% form_for (:conditions, @conditions, :url=>{:controller => '/customer/search', :action => 'resul</table>…

has_many(through)アソシエーションでの検索(続き)

きのうの続きです。 will_pagination 以下のようにしてwill_paginationを使った場合も使えそうです。 products = Product.find(:all, :include => [:keywords], :conditions => ["keywords.word = ?", "beatles"] , :order => "price", :page=> 1, :per_page…

has_many(through)アソシエーションでの検索

Activerecordでリレーションテーブルを介してテーブルを関連づけ、関連元のテーブルを検索するさいに関連付けられた先のテーブル(=has_manyで指定するテーブル)を検索条件に加える仕方を調べたのでメモリます。今回の例は商品(products)とその商品を検索する…

ActiverecordのためのCriteriaをつくる

Rubyクックブックのレシピを参照にして(半分真似して)、Activerecordのfindメソッド用のまいCriteriaをつくってみました。 クラスの実装 以下のような実装にしました。 ANDやORがネストしたものも対応できるよう、クライテリアがネストした構造をとれるよう…

ページの部分を定期的に更新

rails上のAjax用ヘルパーを使って周期的にページを部分的の更新するのを試してみる。 アクション これは、基本は通常のページと同じようにアクションメソッドを実装。 周期的に更新される部分の内容を表示するためのVIEWを作る これも、通常のViewと同じよう…

ActveRecordでGroupByでのカウント値を得る

ActveRecordでGroupByでのカウント値を得る場合,カウントメソッドを :groupオプションを含めて行う。 たとえば、 counts = Hoge.count(:group => "group_id") のようにする。このようにすると SELECT count(*) AS count_all, group_id AS group_id FROM `hog…

Webページの取得

Webページを取得する方法をいくつか調べてみる。net-httpを使った一番簡単(?)な方法 require "net/http" puts Net::HTTP.get('www.yahoo.co.jp', '/index.html', 80) または、uriパッケージで、URIをパースして、各要素(ホスト,パス,ポート)を渡す。 require…

rsyncもどき

rubyで超簡易rsyncもどきを作ってみました。スクリプトはこちらです。動機は rsyncでマウントしたsambaのフォルダに差分同期しようとしたらうまくいかなかった(??)(常に全ファイルコピーになってしまう)。 rubyでの練習用。 です。 ruby <script名> [OPTION] ... SRC [</script名>…

リスナー

rubyでリスナーによるコールバックを行うにはどのようにすればいいのだろう? こんなのでいいのかな? # 登録したリスナーを実行する機能を提供するモジュール # addメソッドでコードブロックをリスナーとして登録。fireメソッドで登録されたリスナーを実行。 …

メソッドに対して前処理と後処理を設定する

クラスに含まれる各パブリックなメソッドに対して前処理と後処理のメソッドを追加するためのモジュールを書いてみました。 メソッドが定義されたときに 1.前処理メソッド、2.元のメソッド、3.後処理メソッドと順番に実行されるようメソッドが再定義されるよ…

インターバルを指定してブロックを繰り返す

インターバルを指定してブロックを繰り返すのは、どうすればよいのかと思い試しにタイマークラスを書きました。 require 'monitor' # 指定した間隔でブロックを実行 # SimpleTimer(interval, first_interval) {}のように実行する。 # intervalは秒単位。 cla…

日時の加算、日時の差の計算

rubyの日時(Time)クラスに対して日時の加算を行うメソッドと、指定した単位での日時の差を求めるメソッドを書いてみました。 日時の加算は time.add(加算する値、加算する単位)という形で呼び出します。またtime.add_by_year(加算する単位)というような形で…