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
練習したコマンドを書き連ねる。 前に練習したコマンドで忘れていたものは再掲。 コマンド 効果 C-r 取り消した操作の再実行 C-o 前回ジャンプした位置にジャンプ C-i C-oの逆 % 対応するカッコにジャンプ :!command 外部コマンドの実行 :r filename ファイ…
下記コマンドを打ってもrubyのバージョンが1.8.7にならない。 環境はWindows7 SP1、pik0.3.0、ruby1.9.2-p290。 pik use 1.8.7 原因は環境変数HOMEが設定されていないため。 ユーザ環境変数にHOME=%USERPROFILE%と設定してやったらうまくいった。 なんでHOME…
こちらを見て解決。 http://atsu23.jugem.jp/?eid=701 ここからgemファイルをダウンロードする。 http://rubyforge.org/frs/?group_id=6124&release_id=42436 置く場所はどこでもよい。 次のコマンドを打つ。 gem install path_to_gem これだけ。 gemファイ…
単に再オープンしてメソッドを定義するだけなのだけれど。 これがベストアンサーなのかどうかはわからないのだけれど。 どうしてもuniq_by*1が欲しくて。 /plugin_root/init.rb require 'plugin_name/core_extensions' /plugin_root/lib/plugin_name/core_ex…
たったこれだけのコードで列挙項目が使用可能になってしまう。 すばらしい。 Redmineのバージョンは1.1.2。 /plugin_root/app/model/new_enum.rb class NewEnum < Enumeration #アンロード可能にする #これがないとdevelopmentモードで2回目のロード時に"sup…
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プラグインをつくってみます。 チュートリアルを見ながらえっちらおっちらやっています。
servermanにredmineをインストール。 いちどやったことのある作業なのでさほど問題はなかったが、ちょっとつまづいたところがあったのでメモ。 passengerをインストールし、httpd.confも設定してapacheを再起動してredmineのURLにアクセスしたところ下記のよ…
引き続きリレーションシップ編。 検索条件の指定の仕方が増えてきてこんがらがってきたので整理する。 findメソッドの引数で指定する Hoge.find(:all, ["column = ?", param]) Hoge.find(:first, ["column = :param", {:param => value}]) Hoge.find(:all, {…
ActiveRecord基礎編は今日で終了。 リレーションシップ編に突入。 感想など。 予約語 type, xxx_type, xxx_count, positionなんかは間違って使っちゃいそうだ。 リレーションシップの宣言 1対1 belongs_to has_one 1対多 belongs_to has_many 多対多 has_and…
今日はActiveRecord基礎編。 感想を書く。 …といってもActiveRecord感想というよりは、主にJPA(EclipseLink)の悪口なのだが。 RecordNotFoundException Rubyはスクリプト言語だし、コンパイルエラーとか出ないってわかって使う大人の言語?だからいいんだ…
教本のチュートリアルっぽいところをようやくすべて読了した。 感想を書いておこう。 画面からの入力値を格納するオブジェクトとActiveRecordのクラスが同じでいいの? たとえば、日付を入力するときに年月日が別々の入力欄である場合。 たとえば、入力値に…
統合テストから。 統合テストというのは複数のリクエストからなるひとつのセッションを単位としたテストだ。 RoRはそんなところまでシミュレートしてテストをサポートしてくれる。 (まあ…今ならJavaでもそこまでしてくれるFWもあるのかもしれないが) 動的…
コントローラのテストの続き。 色々なアサーションメソッドがある。 中でも多いのはレスポンスのDOMを解析するアサーションメソッドだが… どのくらい役に立つのだろう、これは? 厳密に検証しだすと面倒だろうし、あんまりザルなテストをしても仕方がない。
ActionController::TestCaseはコントローラ用のテストクラスの親クラスになる。 これを使うと色々便利。 test テスト名 do get :Action名, {リクエストパラメータ}, {セッションデータ}, {flashデータ} # リクエスト @request # レスポンス @response # テス…
フィクスチャのもうひとつの使い方。 フィクスチャと同じ名前のメソッドが動的に定義され、.ymlで定義した名前を与えるとモデルが取得できる。 fixtures :フィクスチャ名 model = フィクスチャ名(:.ymlで定義した名前) …ってこれだけか。 しかしフィクスチャ…
6回目。なかなか進まない。 呼び出すレイアウトを名自邸に指定するときはこうするらしい。 layout レイアウト名 script/consoleコマンドを使用すればコンソールから直接RoRで作成したクラス、設定等を利用できる。 ruby script/console ActiveRecordにはフッ…
ちょっと間が空いてしまったが第5回。 ランダム数値発生メソッド。 rand インスタンス中からプロパティにアクセスするときに強制的にアクセサメソッドを使用させる方法。 self.プロパティ名 動的ファインダメソッド ActiveRecordで下記のようにすると列名で…
部分テンプレートが使用できる。 部分テンプレートはファイル名を「"_" + 部分テンプレート名」とする。 部分テンプレートに渡した引数は部分テンプレート名と同じ名前の変数でアクセスできる。 <%# 単項目用 %> <%= render(:partial => 部分テンプレート名,…
RoR入門はお休みしてsubversionのフックスクリプトを試す。 SVNのコミットコメントに記述したチケットNoをキーにしてRedmineを検索し、「#チケットNo チケットタイトル」という形で表示してみる。 Unixでやりたいけれど、会社の環境がWindowsなのでWindows向…
RoRではセッション情報をデータベースに保管することが簡単にできる。 すごいな。 セッションをデータベースに格納することのメリットはスケールしやすいこと。 ModelだからといってActiveRecordのサブクラスにする必要はない。 普通のオブジェクトのModelで…
ValidationはModelで行う。 画面入力値に何らかの処理を加えてDBに保存したい場合はどうなるのか? class Product ActiveRecord::Base validates_presence_of :プロパティ名 end 独自のバリデータを定義する際はvalidateメソッドにバリデーションメソッドの…
今日からはRuby on Rails入門。 redmineをカスタマイズしたり、プラグインを作ったりできるようになりたいのだ。 使用する教科書はこちら。RailsによるアジャイルWebアプリケーション開発作者: 前田修吾出版社/メーカー: オーム社発売日: 2006/02/25メディア…