ruby

rubyでファイルに文字列を挿入したい

open(path, "r+") do |f| file_content = f.read new_file_content = file_contentになんか挿入 f.rewind f.puts(new_file_content) f.truncate(f.tell) end

vi(vim)の練習その2

練習したコマンドを書き連ねる。 前に練習したコマンドで忘れていたものは再掲。 コマンド 効果 C-r 取り消した操作の再実行 C-o 前回ジャンプした位置にジャンプ C-i C-oの逆 % 対応するカッコにジャンプ :!command 外部コマンドの実行 :r filename ファイ…

pikでrubyのバージョンが切り替えできない

下記コマンドを打ってもrubyのバージョンが1.8.7にならない。 環境はWindows7 SP1、pik0.3.0、ruby1.9.2-p290。 pik use 1.8.7 原因は環境変数HOMEが設定されていないため。 ユーザ環境変数にHOME=%USERPROFILE%と設定してやったらうまくいった。 なんでHOME…

ziprubyをWindowsにインストールするも「checking for zlib.h... no」といわれる

こちらを見て解決。 http://atsu23.jugem.jp/?eid=701 ここからgemファイルをダウンロードする。 http://rubyforge.org/frs/?group_id=6124&release_id=42436 置く場所はどこでもよい。 次のコマンドを打つ。 gem install path_to_gem これだけ。 gemファイ…

RedmineのプラグインでRubyのコアを拡張する

単に再オープンしてメソッドを定義するだけなのだけれど。 これがベストアンサーなのかどうかはわからないのだけれど。 どうしてもuniq_by*1が欲しくて。 /plugin_root/init.rb require 'plugin_name/core_extensions' /plugin_root/lib/plugin_name/core_ex…

Redmineにプラグインで列挙項目を追加する

たったこれだけのコードで列挙項目が使用可能になってしまう。 すばらしい。 Redmineのバージョンは1.1.2。 /plugin_root/app/model/new_enum.rb class NewEnum < Enumeration #アンロード可能にする #これがないとdevelopmentモードで2回目のロード時に"sup…

script/consoleでちょっとつまづく

script/consoleしたら下のようなメッセージが出てこけた。 script/console Loading production environment (Rails 2.3.5) Readline was unable to be required, if you need completion or history install readline then reinstall the ruby. You may foll…

Redmineプラグインはじめます

Redmineプラグインをつくってみます。 チュートリアルを見ながらえっちらおっちらやっています。

redmineをインストール

servermanにredmineをインストール。 いちどやったことのある作業なのでさほど問題はなかったが、ちょっとつまづいたところがあったのでメモ。 passengerをインストールし、httpd.confも設定してapacheを再起動してredmineのURLにアクセスしたところ下記のよ…

RoR入門第14回

引き続きリレーションシップ編。 検索条件の指定の仕方が増えてきてこんがらがってきたので整理する。 findメソッドの引数で指定する Hoge.find(:all, ["column = ?", param]) Hoge.find(:first, ["column = :param", {:param => value}]) Hoge.find(:all, {…

RoR入門第13回

ActiveRecord基礎編は今日で終了。 リレーションシップ編に突入。 感想など。 予約語 type, xxx_type, xxx_count, positionなんかは間違って使っちゃいそうだ。 リレーションシップの宣言 1対1 belongs_to has_one 1対多 belongs_to has_many 多対多 has_and…

RoR入門第12回

今日はActiveRecord基礎編。 感想を書く。 …といってもActiveRecord感想というよりは、主にJPA(EclipseLink)の悪口なのだが。 RecordNotFoundException Rubyはスクリプト言語だし、コンパイルエラーとか出ないってわかって使う大人の言語?だからいいんだ…

RoR入門第11回

教本のチュートリアルっぽいところをようやくすべて読了した。 感想を書いておこう。 画面からの入力値を格納するオブジェクトとActiveRecordのクラスが同じでいいの? たとえば、日付を入力するときに年月日が別々の入力欄である場合。 たとえば、入力値に…

RoR入門第10回

統合テストから。 統合テストというのは複数のリクエストからなるひとつのセッションを単位としたテストだ。 RoRはそんなところまでシミュレートしてテストをサポートしてくれる。 (まあ…今ならJavaでもそこまでしてくれるFWもあるのかもしれないが) 動的…

RoR入門第9回

コントローラのテストの続き。 色々なアサーションメソッドがある。 中でも多いのはレスポンスのDOMを解析するアサーションメソッドだが… どのくらい役に立つのだろう、これは? 厳密に検証しだすと面倒だろうし、あんまりザルなテストをしても仕方がない。

RoR入門第8回

ActionController::TestCaseはコントローラ用のテストクラスの親クラスになる。 これを使うと色々便利。 test テスト名 do get :Action名, {リクエストパラメータ}, {セッションデータ}, {flashデータ} # リクエスト @request # レスポンス @response # テス…

RoR入門第7回

フィクスチャのもうひとつの使い方。 フィクスチャと同じ名前のメソッドが動的に定義され、.ymlで定義した名前を与えるとモデルが取得できる。 fixtures :フィクスチャ名 model = フィクスチャ名(:.ymlで定義した名前) …ってこれだけか。 しかしフィクスチャ…

RoR入門第6回

6回目。なかなか進まない。 呼び出すレイアウトを名自邸に指定するときはこうするらしい。 layout レイアウト名 script/consoleコマンドを使用すればコンソールから直接RoRで作成したクラス、設定等を利用できる。 ruby script/console ActiveRecordにはフッ…

RoR入門第5回

ちょっと間が空いてしまったが第5回。 ランダム数値発生メソッド。 rand インスタンス中からプロパティにアクセスするときに強制的にアクセサメソッドを使用させる方法。 self.プロパティ名 動的ファインダメソッド ActiveRecordで下記のようにすると列名で…

RoR入門第4回

部分テンプレートが使用できる。 部分テンプレートはファイル名を「"_" + 部分テンプレート名」とする。 部分テンプレートに渡した引数は部分テンプレート名と同じ名前の変数でアクセスできる。 <%# 単項目用 %> <%= render(:partial => 部分テンプレート名,…

SVNのコメントに記述したRedmineのチケットNoにチケットのタイトルを追加する

RoR入門はお休みしてsubversionのフックスクリプトを試す。 SVNのコミットコメントに記述したチケットNoをキーにしてRedmineを検索し、「#チケットNo チケットタイトル」という形で表示してみる。 Unixでやりたいけれど、会社の環境がWindowsなのでWindows向…

RoR入門第3回

RoRではセッション情報をデータベースに保管することが簡単にできる。 すごいな。 セッションをデータベースに格納することのメリットはスケールしやすいこと。 ModelだからといってActiveRecordのサブクラスにする必要はない。 普通のオブジェクトのModelで…

RoR入門第2回

ValidationはModelで行う。 画面入力値に何らかの処理を加えてDBに保存したい場合はどうなるのか? class Product ActiveRecord::Base validates_presence_of :プロパティ名 end 独自のバリデータを定義する際はvalidateメソッドにバリデーションメソッドの…

RoR入門1

今日からはRuby on Rails入門。 redmineをカスタマイズしたり、プラグインを作ったりできるようになりたいのだ。 使用する教科書はこちら。RailsによるアジャイルWebアプリケーション開発作者: 前田修吾出版社/メーカー: オーム社発売日: 2006/02/25メディア…