<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>dev &gt;&gt; Ruby</title><link>http://blogs.wankuma.com/pinzolo/category/1619.aspx</link><description>dev &gt;&gt; Ruby</description><managingEditor>THREE-ONE</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>THREE-ONE</dc:creator><title>ActionMailer の設定で :domain が必要</title><link>http://blogs.wankuma.com/pinzolo/archive/2009/06/03/174076.aspx</link><pubDate>Wed, 03 Jun 2009 23:06:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2009/06/03/174076.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/174076.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2009/06/03/174076.aspx#Feedback</comments><slash:comments>30</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/174076.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/174076.aspx</trackback:ping><description>&lt;textarea name="code" class="ruby"&gt;
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address        =&gt; 'smtp.mailserver.net',
  :port           =&gt; 587,
  :authentication =&gt; :login,
  :user_name      =&gt; 'user',
  :password       =&gt; 'password'
}
&lt;/textarea&gt;
environment.rb にこんな風に設定してあって、script/runner とかでメール送信テストをやってみてもウンともスンとも言わない。&lt;br /&gt;
例外発生しないって事は、メールサーバとのアクセスに問題があるのかなーと色々やってみるもダメだった。&lt;br /&gt;
ふと、development 環境だからかな～、設定ファイル上書きされてんじゃねーの？とか見てみると、config.action_mailer.raise_delivery_errors = false になってた&lt;br /&gt;
これをコメントアウトし、再度試すとちゃんとエラーが出ましたよ。&lt;br /&gt;
要は、smtp_setting に :domain を設定しろって事らしい。&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address        =&gt; 'smtp.mailserver.net',
  :domain         =&gt; 'mydomain.net'
  :port           =&gt; 587,
  :authentication =&gt; :login,
  :user_name      =&gt; 'user',
  :password       =&gt; 'password'
}
&lt;/textarea&gt;
こんな風にしたらさくっとメールが飛んだ。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/174076.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>date_select などによる name のからくり</title><link>http://blogs.wankuma.com/pinzolo/archive/2009/05/13/172940.aspx</link><pubDate>Wed, 13 May 2009 23:40:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2009/05/13/172940.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/172940.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2009/05/13/172940.aspx#Feedback</comments><slash:comments>759</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/172940.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/172940.aspx</trackback:ping><description>Rails でモデルのインスタンスを作る際、Hash を渡すことでキーに対応する属性に値を設定してくれます。&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
params = { "text" =&amp;gt; "hoge" }
m = Model.new(params)
p m.text
# -&amp;gt; "hoge"
&lt;/textarea&gt;
といった具合。&lt;br /&gt;
しかし、date_select 等を使用した場合、下記のようになる。&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
params = { "date(1i)" =&amp;gt; "2009", "date(2i)" =&amp;gt; "9", "date(3i)" =&amp;gt; "20" }
m = Model.new(params)
p m.date.to_s(:db)
# -&amp;gt; "2009-09-20"
&lt;/textarea&gt;
これは別に 1i が 年、2i が月、3i が日にマッピングされているわけではなく、もっと汎用的なロジックになっている。&lt;br /&gt;
詳しくは、ActiveRecoede::Base のソースを追ってもらえば判るのだが、だいたい下記の流れになっている。&lt;br /&gt;
まずパラメータ名の ( の前までが属性名になる。&lt;br /&gt;
()内は数値＋アルファベット1文字が想定されている。&lt;br /&gt;
数値を基準にソートし、引数の順番とする。（ポジションではない）&lt;br /&gt;
to_[アルファベット1文字] でパラメータ値を型変換する。&lt;br /&gt;
つまり、params = { "date(1i)" =&amp;gt; "2009", "date(2i)" =&amp;gt; "9", "date(3i)" =&amp;gt; "20" } の場合、date が属性名になり、1, 2, 3 の順に引数とされ、to_i で変換された物がコンストラクタに渡される。&lt;br /&gt;
&lt;br /&gt;
汎用的にできているので手動でいじってみる。&lt;br /&gt;
1 からじゃなく 2 からやってみる&lt;br /&gt;
params = {"date(2i)"=&amp;gt;"2001", "date(3i)"=&amp;gt;"9", "date(4i)"=&amp;gt;"21"}&lt;br /&gt;
date: 2001-09-21&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
class String
  def to_x
    2001
  end
  def to_y
    9
  end
  def to_z
    22
  end
end
&lt;/textarea&gt;
こんな風に文字列クラスを拡張して、下記のパラメータを渡してみる&lt;br /&gt;
params = {"date(1x)"=&amp;gt;"red", "date(2y)"=&amp;gt;"blue", "date(3z)"=&amp;gt;"yellow"}&lt;br /&gt;
date: 2001-09-22&lt;br /&gt;
想定通りである。
&lt;br /&gt;
しかし、to_[アルファベット1文字]って形式は to_s, to_i, to_a ぐらい。&lt;br /&gt;
to_s は意味がないし、String#to_a してもまた文字列にされるのでこれまた無意味。&lt;br /&gt;
String に to_r, to_g, to_b なんかを作って、カラーコードを取り扱うって事ぐらいならできるかも知れませんね。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/172940.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>Ruby でサブディレクトリやディレクトリ内のファイル名を取得する場合に気をつけること</title><link>http://blogs.wankuma.com/pinzolo/archive/2009/05/07/172550.aspx</link><pubDate>Thu, 07 May 2009 23:27:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2009/05/07/172550.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/172550.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2009/05/07/172550.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/172550.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/172550.aspx</trackback:ping><description>Ruby でディレクトリ内のアイテム名を取得する方法はいくつかあります。&lt;br /&gt;
Dir.entries(path) で配列で取得できますし、Dir.foreach(path) { |item| ... } で列挙処理もできます。&lt;br /&gt;
open 後のインスタンスメソッドとしては each があります。（Dir.foreach と同じ）&lt;br /&gt;
しかし、どの場合にも自分自身を表す "." と親ディレクトリを表す ".." が含まれてしまいます。（ルートの場合はでないけど）&lt;br /&gt;
正直、どんな時に利用するのかわかりません。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/172550.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>Ruby でホスト名を取得したい場合</title><link>http://blogs.wankuma.com/pinzolo/archive/2009/04/15/171422.aspx</link><pubDate>Wed, 15 Apr 2009 01:50:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2009/04/15/171422.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/171422.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2009/04/15/171422.aspx#Feedback</comments><slash:comments>301</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/171422.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/171422.aspx</trackback:ping><description>ホスト名は環境変数に含まれていないため、ENV からは取得できない。&lt;br /&gt;
`hostname` を使う。&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
hn = `hostname`.chop
puts hn
&lt;/textarea&gt;
chop を使うのは、最後に改行文字(LF)がついてくるため。&lt;br /&gt;
Windows にも hostname コマンドがあるので、OS を気にせず `` ができるというわけ。&lt;br /&gt;
&lt;br /&gt;
ちなみに、ホームディレクトリは Windows では ENV['HOME'] で取得できない。&lt;br /&gt;
ENV['HOMEDRIVE'] + ENV['HOMEPATH'] とする必要がある。&lt;br /&gt;
いちいち書きたくない人は %HOMEDRIVE%%HOMEPATH% を環境変数 HOME として設定しておけばいいんじゃないかな？&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/171422.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>FileUtils が便利</title><link>http://blogs.wankuma.com/pinzolo/archive/2009/03/31/170534.aspx</link><pubDate>Tue, 31 Mar 2009 23:49:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2009/03/31/170534.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/170534.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2009/03/31/170534.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/170534.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/170534.aspx</trackback:ping><description>Ruby の File クラスにはファイルをコピーするメソッドがない。&lt;br/&gt;
Dir クラスの mkdir は再帰的にディレクトリを作ってくれない。&lt;br /&gt;
そんなときは FileUtils&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
require 'fileutils'

FileUtils.mkdir_p('/foo/var/buzz') # 再帰的にディレクトリを作成
FileUtils.cp('/src/file', '/dest/file') # ファイルコピー
&lt;/textarea&gt;
なんてことができちゃう。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/170534.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>RJS における page.call のちょっとしたまとめ</title><link>http://blogs.wankuma.com/pinzolo/archive/2009/01/28/166968.aspx</link><pubDate>Wed, 28 Jan 2009 01:42:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2009/01/28/166968.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/166968.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2009/01/28/166968.aspx#Feedback</comments><slash:comments>24</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/166968.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/166968.aspx</trackback:ping><description>※このエントリは、（多分）間違っていませんが非推奨です。&lt;br /&gt;
生の JavaScript を出力したい場合は page &lt;&lt; 'script' を使用しましょう。&lt;br /&gt;
try &amp;amp; error だけで何とかしようとせず、基本的な事ぐらい調べましょうという自戒を込めて、そのままにしてあります。&lt;br /&gt;
&lt;br /&gt;
Rails には RJS という機能があり、AJAX 通信時に ruby のソースから JavaScript を生成してレスポンスとして返す事ができる。&lt;br /&gt;
そのうちの機能の一つに、page.call がある。&lt;br /&gt;
page とは、画面というかドキュメントを表すオブジェクトで、JavaScript でいう document オブジェクトみたいなもの。&lt;br /&gt;
page.call は引数の関数を実行してくれる。&lt;br /&gt;
たとえば、page.call 'hoge' となっていた場合、実際のブラウザ上では hoge(); が実行される。&lt;br /&gt;
また、関数に引数を渡すこともでき、page.call 'alert', 'foo' とすると、alert("foo"); が実行される。&lt;br /&gt;
複数引数にも対応しており、page.call 'alert', 'foo', 'bar' とすると、alert("foo", "bar"); が実行される（この例だと意味ないけど）&lt;br /&gt;
第一引数に指定された名前の関数を実行するだけの page.call だが、仕組みとしては (); を付け加えてレスポンスに流すだけである。&lt;br /&gt;
なので、page.call '(function() {if(confirm("ok?")){alert("hoge");}})' とすれば、(function() {if(confirm("ok?")){alert("hoge");}})(); という無名関数の実行ができる。&lt;br /&gt;
要するに、どんな JavaScript も実行できるということになる。&lt;br /&gt;
ちなみに、page.call 'eval', 'if(confirm("ok?")){alert("hoge");}' としても同じ事ができる。&lt;br /&gt;
また、第二引数以降は全て文字列として渡される。その際、" で囲まれるのだが、文字列内に " が含まれていても、ちゃんとエスケープしてくれるので安心である。&lt;br /&gt;
&lt;br /&gt;
これを使えばどういう事ができるかというと、私はよく編集パネルのポップアップなんかで使う。&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
### edit.rjs ###
page[:edit_zone].replace_html :partial =&gt; :edit_zone, :locals =&gt; { :item =&gt; @item }
page.call '(function() {$.facebox($("#edit_zone").html());})'
&lt;/textarea&gt;
のような感じ。（これは、jRails で jQuery を利用した例だけど）&lt;br /&gt;
&lt;br /&gt;
あとは、サーバー側で検証を行い、確認のダイアログを出して ok なら再度通信する。という（割とよくある）パターンにも利用できる。&lt;br /&gt;
&lt;a href="http://www.pinzolo-dev.net/test/rjs_page_call"&gt;簡単なサンプルを作ってみた&lt;/a&gt;&lt;br /&gt;
以下、サンプルのソース。&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
### app/controllers/rjs_page_call_controller.rb ###
class RjsPageCallController &lt; ApplicationController
  def index
  end

  def test
    @confirmed = params[:confirmed] == '1'
  end
end
&lt;/textarea&gt;
&lt;textarea name="code" class="ruby"&gt;
### app/views/rjs_page_call/test.rjs ###
if @confirmed
  page.call 'alert', 'finished'
  page.call '(function() {$("confirmed").value="";})'
else
  page.call '(function() {if(confirm("repost?")){$("confirmed").value=1;$("ok").click();}else{$("confirmed").value="";}})'
end
&lt;/textarea&gt;
&lt;pre&gt;
&amp;lt;!-- app/views/rjs_page_call/index.html.erb --&amp;gt;
&amp;lt;% form_remote_tag :url =&amp;gt; { :action =&amp;gt; :test } do %&amp;gt;
  &amp;lt;%= hidden_field_tag :confirmed %&amp;gt;
  &amp;lt;%= submit_tag :ok, :style =&amp;gt; 'width: 60px', :id =&amp;gt; 'ok' %&amp;gt;
&amp;lt;% end -%&amp;gt;
&lt;/pre&gt;

&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/166968.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>passenger でのトラブル</title><link>http://blogs.wankuma.com/pinzolo/archive/2009/01/21/166570.aspx</link><pubDate>Wed, 21 Jan 2009 01:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2009/01/21/166570.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/166570.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2009/01/21/166570.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/166570.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/166570.aspx</trackback:ping><description>自宅のサーバに rails アプリを稼働させようとして、passenger の設定をしていた。&lt;br /&gt;
SSL で使いたかったので、httpd.conf の設定後に、/etc/httpd/conf.d/ssl.conf を編集。&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
  ServerName [server_name]&lt;br /&gt;
  DocumentRoot /var/www/rails/app/public&lt;br /&gt;
  CustomLog /var/log/httpd/rails/app/ssl-access.log combined&lt;br /&gt;
  ErrorLog /var/log/httpd/rails/app/ssl-error.log&lt;br /&gt;
  RailsBaseURI /app&lt;br /&gt;
&lt;br /&gt;
  SSLEngine on&lt;br /&gt;
  SSLCertificateFile /etc/pki/tls/certs/server.crt&lt;br /&gt;
  SSLCertificateKeyFile /etc/pki/tls/certs/server.key&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
こんな設定を追加して https://server/app にアクセスしたのだが、表示されない。&lt;br /&gt;
apache 再起動時に、_default_ VirtualHost overlap on port 443, the first has precedence ってのが表示されていたので、設定がぶつかってるようだ。&lt;br /&gt;
というわけで、ssl.conf から既存の VirtualHost 設定をばっさり削除。&lt;br /&gt;
これでアクセスできるかと思いきや、500エラーがでる。&lt;br /&gt;
ログを見ると passenger が 「/config/environment.rb なんてないよ」ってエラーを吐いている。&lt;br /&gt;
どうやらアプリケーションのルートを見つける事ができていないみたいだ。&lt;br /&gt;
試しに RailsBaseURI を / にしてみると https://server/ で表示される。&lt;br /&gt;
ルートでは別のアプリを今後動かす予定なので、これはまずい。&lt;br /&gt;
RailsBaseURI がきかないとは何か設定が足りないのだろうか？&lt;br /&gt;
今日はここまで、明日また調べる。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/166570.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>rails で Google AJAX Libraries API を使う</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/12/26/165051.aspx</link><pubDate>Fri, 26 Dec 2008 21:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/12/26/165051.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/165051.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/12/26/165051.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/165051.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/165051.aspx</trackback:ping><description>rails の ajax ヘルパは便利で、prototype と Script.aculo.us が利用されており、最初からプロジェクトに含まれています。&lt;br /&gt;
有名ライブラリなので、&lt;a href="http://code.google.com/intl/ja/apis/ajaxlibs/"&gt;Google AJAX Libraries API&lt;/a&gt; にホスティングを任せるのもアリでしょう。&lt;br /&gt;
簡単にやるなら script タグを自分で書くか、javascript_include_tag "http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js" ってやればいいのですが、必要なところ全てにこれを行うのは面倒です。&lt;br /&gt;
ほとんどが javascript_include_tag :defaults を利用しているのだから、これで Google AJAX Libraries API が利用されるようにしたい。&lt;br /&gt;
しかも開発時は常にオンラインとは限らないので、production 環境のときにだけ適用されるようにしたい。&lt;br /&gt;
これは結構簡単にできます。config/environments/production.rb に以下を記述するだけ。&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
ActionView::Helpers::AssetTagHelper::JAVASCRIPT_DEFAULT_SOURCES = [
  'http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js',
  'http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/effects.js',
  'http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/dragdrop.js',
  'http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/controls.js'
]
ActionView::Helpers::AssetTagHelper.reset_javascript_include_default
&lt;/textarea&gt;
ActionView::Helpers::AssetTagHelper::JAVASCRIPT_DEFAULT_SOURCES には、もともと ["prototype"' "effects", "dragdrop", "controls"] が定義されているので、それを対応する url で上書きしリセットしているわけです。&lt;br /&gt;
javascript_include_tag にスキーマから始まる文字列が渡された場合は、そのまま src 属性にレンダリングされるのでやることはこれだけです。&lt;br /&gt;
&lt;br /&gt;
さてさて、世の中には私も含めて Protorype と Script.aculo.us より、jQuery が好きだ！という人もいるでしょう。&lt;br /&gt;
そんな人は &lt;a href="http://ennerchi.com/projects/jrails"&gt;jRails&lt;/a&gt; を使用している人も多いでしょう。&lt;br /&gt;
で、jquery.js を Google AJAX Libraries API のものに差し替えようと思ったら、少し方法が異なります。&lt;br /&gt;
というのも、config/environments/*.rb を読み込んだ後に各種プラグインが読み込まれるので、せっかく config/environments/production.rb で設定を行っても、jRails のロードでローカルの設定に書き換えられてしまうからです。&lt;br /&gt;
これを回避するために私は environments.rb の最後で設定するという手段をとりました。&lt;br /&gt;
要は Rails::Initializer.run の後に設定し直せばよいわけです。&lt;br /&gt;
ここに記述すると、当然全ての環境で読み込まれてしまうわけで、環境の判別が必要になります。&lt;br /&gt;
&lt;textarea name="code" class="ruby"&gt;
if ENV['RAILS_ENV'] == 'production'
  ActionView::Helpers::AssetTagHelper::JAVASCRIPT_DEFAULT_SOURCES = [
    'http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js',
    'jquery-ui.js',
    'jrails.js'
  ]
  ActionView::Helpers::AssetTagHelper.reset_javascript_include_default
end
&lt;/textarea&gt;
こんな感じです。&lt;br /&gt;
まあ、jRails の場合に置き換えられるのは一つのファイルだけなので、どこまで効果があるかは少し疑問ではありますが。&lt;br /&gt;
&lt;br /&gt;
このテクニックは別に Google AJAX Libraries API を使用する際以外にも、javascript_include_tag :defaults を制御するのは色々と便利です。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/165051.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>MySQL と Rails でトランザクションがきかない</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/12/13/163607.aspx</link><pubDate>Sat, 13 Dec 2008 17:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/12/13/163607.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/163607.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/12/13/163607.aspx#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/163607.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/163607.aspx</trackback:ping><description>こんな感じのテーブルがあります。
&lt;pre&gt;
show create table categories;
| categories | CREATE TABLE `categories` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `created_at` datetime default NULL,
  `updated_at` datetime default NULL,
  PRIMARY KEY  (`id`),
  KEY `index_categories_on_order` (`order`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 |
&lt;/pre&gt;
InnoDBなのでトランザクションがきくはずです。&lt;br /&gt;
ところが、script/console にて以下のようなコードを実行してみてもトランザクションがききません。
&lt;textarea name="code" class="ruby"&gt;
c1 = Category.new(:name =&amp;gt; "hoge")
c2 = Category.new
ActiveRecord::Base.transaction do
  c1.save!
  c2.save!
end
&lt;/textarea&gt;
Category モデルには validates_presence_of :name が設定されているので、c2.save! で例外が発生します。&lt;br /&gt;
ところが、c1 はきっちりテーブルに保存されています。&lt;br /&gt;
Category.transaction でやっても当然結果は同じ。&lt;br /&gt;
環境なのか、rails のバージョンなのか、設定ミスなのかなどの切り分けがちょっとまだできてませんが、ともかく原因不明。&lt;br /&gt;
・別のマシン（inspiron mini 以外）で試す&lt;br /&gt;
・別のバージョンの rails(2.1.2以外)で試す&lt;br /&gt;
あたりを試してみないと。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/163607.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>gem update --system で失敗する場合には</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/12/04/162786.aspx</link><pubDate>Thu, 04 Dec 2008 23:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/12/04/162786.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/162786.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/12/04/162786.aspx#Feedback</comments><slash:comments>111</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/162786.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/162786.aspx</trackback:ping><description>&lt;a href="http://blogs.wankuma.com/pinzolo/archive/2008/12/04/162612.aspx"&gt;empty? が未定義 [ぽざうねっと]&lt;/a&gt;の件ですが、google 先生にお尋ねすると rubygems を update するといいよーと教えていただきました。&lt;br /&gt;
早速やってみましょう。&lt;br /&gt;
&lt;pre&gt;
C:\ruby\bin&amp;gt;gem update --system&lt;br /&gt;
Updating RubyGems&lt;br /&gt;
Bulk updating Gem source index for: http://gems.rubyforge.org/&lt;br /&gt;
Nothing to update
&lt;/pre&gt;
そんなばかな・・・・・&lt;br /&gt;
現在の rubygems のバージョンは 1.1.1 で、最新バージョンは 1.3.1 のはずです。&lt;br /&gt;
そんな場合は、以下のようにすればよいようです。&lt;br /&gt;
&lt;pre&gt;
C:\ruby\bin&amp;gt;gem install rubygems-update&lt;br /&gt;
Bulk updating Gem source index for: http://gems.rubyforge.org/&lt;br /&gt;
Succeccfully installed rubygems-update-1.3.1&lt;br /&gt;
1 gem installed&lt;br /&gt;
C:\ruby\bin&amp;gt;update_rubygems&lt;br /&gt;
# some install log...
&lt;/pre&gt;
gem 名とコマンドで update と rubygems が逆になったり、ハイフンとアンダースコアだったりとややこしいですが、これで 1.3.1 に update できました。&lt;br /&gt;
モデルやコントローラの generate もばっちり動いております。めでたしめでたし。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/162786.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>