RSpecのViewのスペックに関するメモ
RSpecを使ってViewのスペックを書く時のメモ。
- RSS Builder等を使っている場合も、
render
でOk1 render 'articles/i
ndex.rss.b uilder' - renderはデフォルトではlayoutを伴わないので、必要に応じて明示的に指定する。
1 render 'articles/i
ndex', :layout => 'applicatio n'
RSpecを使ってViewのスペックを書く時のメモ。
render
でOk
1 render 'articles/index.rss.b uilder'
1 render 'articles/index', :layout => 'applicatio n'
Formulaは、 数式をブログにはりつけて共有するコミュニティサービスです。
このたび、FormulaでXyMTeX記法による化学構造式が利用できるようになりました。 以下のような化学構造式を簡単にブログに埋め込むことができるようになります。
XyMTeXの記法については、以下のサイトを参照ください。
See Also
本サービスに関する各種お問い合わせは までお気軽にお寄せください。
Formulaは、 数式をブログにはりつけて共有するコミュニティサービスです。
このたび、Formulaで利用できるLaTeX記法が増えました。
具体的には、eqnarray*
環境で利用可能なLaTeX記法をほとんど全て利用することができます(セキュリティ上の観点から、一部のコマンドは無効化されています)
以下のように、複数行の数式を記述することもできるようになりました。
連立方程式も変数を揃えて記述できます。
Rubyに複数の脆弱性が発見されました。最新バージョンへのアップグレードを推奨します。
ということで、EC2で使ってるRubyをruby 1.8.7 (2008-08-08
よろしくお願いします。
Redmineで2203年の予定を立てようとしたところ、エラーが出たので原因を調べていました。
どうやら、Railsのdistance_o
でエラーが出ているようです。
1 def distance_of_time_in_ words( 2 from_time, to_time = 0, include_se conds = false) 3 from_time = from_time. to_time if 4 from_time. respond_to ?(:to_time) 5 to_time = to_time.to_time if 6 to_time.respond_to ?(:to_time) 7 distance_i n_minutes = 8 (((to_time - from_time).abs)/60).round 9 distance_i n_seconds = 10 ((to_time - from_time).abs).round
8行目あたりの減算でエラーが出ているようです。 実際、以下のような減算をしようとするとエラーが出ます。
1 Time.now - Date.parse("Mon, 01 Aug 2203").to_time 2 #=> RangeError: time - 7371010800 .000000 out of Time range
ということで、あまりにも長い時間である場合には、 以下のような例外処理で対処するようにしました。
1 module ActionView2 module Helpers 3 module DateHelper 4 def distance_o f_time_in_ words_with _limit( 5 from_time, to_time = 0, include_se conds = false 6 ) 7 distance_o f_time_in_ words_with out_limit( 8 from_time, to_time, include_se conds) 9 rescue 10 'a long time' 11 end 12 alias_meth od_chain :distance_o f_time_in_ words, :limit 13 end 14 end 15 end
これで23世紀の予定も思いのままです。
セキュリティ強化のために、管理画面のURLを若干変更いたしました。 管理画面での各種操作については、 特にこれまでと変わりなく利用できます。
ブラウザ上で管理画面を開いた状態にしている場合は、 お手数ですが一度開きなおしていただけますようお願いいたします。
secondlife
代案を探してみたところ、 とりあえず以下のようにすることで目的を果たせるようです。
tmp/
)の中に.gitignore
ファイルを置くtmp/
をROOTの.gitignore
ファイルの中でignoreする
1 tmp
git add tmp/.gitig nore
をする。.gitignore
ファイル自体は含まれてしまいますが、
実用上は問題なさそうですね。
しかし、完全な方法は無いものか・・・。
See Also
log/
やtmp/
ディレクトリの中身はignoreしたいけれど、ディレクトリそのものの存在はリポジトリに含めたい場合は、以下のように.gitignore
.gitignore
1 log/**/* 2 tmp/**/*
Zshで特定のディレクトリ以下のrbファイルを全部開きたい時などに、
1 vim **/*.rb
などとやりますが、そんな感じですね。
このところ、named_scop
上記サイトでも紹介されているように、
今まではLEFT OUTER JOIN
を使って、
一回のクエリで全て読み込むようなSQLを生成していたのですが、
Rails2.1からは、複数回のクエリに分割するようになりました。
ということで、Eager Loadingを実際にやっているコードを調べてみたのですが、自分で好きなタイミングでEager Loadingを行う方法を見つけたので紹介します。
ActiveRecoActiveReco
を利用します。
1 articles = Article.all(:limit => 5) 2 Article.send :preload_associations , articles, [:user => :face]
1行目は普通にEager LoadingせずにArticleリストを取得していますが、 二行目を実行することで、各ArticleのアソシエイションがEager Load されます。あとは、
1 articles.first.user.face
などを実行してもSQLクエリは発行されません。
実質的に発行されるSQLは通常の:include
を指定した場合と同じになるので、好きなタイミングでEager Load
を実行できるようになったといえます。
SQLのログを見ていて気がついたのですが、
最近のActiveReco
1 ?> Article.find(:all, :include => [:user => :face]);1 2 => 1 3 >> Article Load (0.005234) SELECT * FROM `articles` 4 User Load (0.000645) SELECT * FROM `users` WHERE (`users`.id IN ('13','9','37','17','1','3')) 5 Face Load (0.002931) SELECT `faces`.* FROM `faces` WHERE (`faces`.user_id IN (1,3,9,13,17,37))
以前のようにJOINを使わずに、3回に分けるようになっているのですね。
しかしながら、条件が複雑になってくると、 :limitオプションとの相性が悪いケースがあるようで、 まだ若干バグがあるようです。 そんな時は手で:joinsを書いています。
いくつか要望をいただいていた、 コピー&ペーストする時に行番号は邪魔になるという問題を解決するために、 コピー&ペーストモードを実装いたしました。 ソース部分をクリックすると、行番号が隠れるようになります。 ソース部分の外をクリックすると元に戻ります。
以下テスト用。
1 class User < ActiveRecord::Base 2 has_many :comments 3 end
1 def foo 2 puts "foo" 3 end
一行テスト。
1 Hash.new({})