Ruby on Rails

with_indifferent_accessはなぜ文字列キーを使うのか?

前回からの続き。 ところで、最近のRubyは{abc:123}({:abc => 123}と同等)のようなハッシュ定義も可能になり、間違いなくシンボルキーが多用される時代なのに... with_indifferent_accessは、なぜ文字列キーを使うのか? シンボルは無駄にオブジェクトを生…

Rubyのハッシュにメソッドでアクセスするには?やらない方がいい?

JavaScriptな脳状態でRubyを触り始めると、ハッシュにアクセスする時にエラーで怒られる。 h={abc:123} => {:abc=>123} h.abc NoMethodError: undefined method `abc' for {:abc=>123}:Hash from (irb):15 from /usr/bin/irb:12:in `<main>' いかん、いかん、Ruby</main>…

bundlerでgemバージョンを束ねる

Rails1.1.6の環境でどうにかscaffoldはできるようになった。その時の実行環境は以下の状態だった。 $ rbenv version 1.8.7-p375 (set by /Users/zari/.rbenv/version) $ gem list *** LOCAL GEMS *** actionmailer (1.2.5) actionpack (1.12.5) actionwebser…

古いRails環境を再起動するまで

古いRails環境というのは、具体的にはRails1.1.6である。実はこのブログの始まりは、Railsの学習の記録であった。むかしむかし、このブログ創世の頃、Railsはバージョン1.1.6がメジャーであった。そのため、自分のMacBookの中には、Rails1.1.6の実験プロジェ…

GitHubからのSSH脆弱性メールにどのように対応すればいいのか?

2012/3/8 3:28に、GitHubから一通のメールが届いた。 タイトルは「Action Required - SSH Key Vulnerability」 自分なりに適当に訳すと「行動を求めます - SSHキーの脆弱性」 何だか結構重要なことが書いてあるようなことは分かる。 しかし、内容が全部英語…

Rubyのハッシュテーブルの仕組みを徹底的に理解する

ハッシュとは 一般的に理解すると抽象的で分かり難くなってしまうが、ハッシュとは、あるデータから、一定の計算をして求めた、目的に沿った数値、と思っている。それでは、どのような目的に利用されるのか?自分の知識で考えてみた。 暗号化 webアプリケー…

どのようにして一番右の1のビット位置を求めているのか?

一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録 「ものすごい」コードなのだけど、凄過ぎて自分には全くチンプンカンプン...。それでも、どの辺が凄いのか、ちゃんと理解したい。シンプルなコードから順を追って確かめて…

マルコフ連鎖で日本語をもっともらしく要約する

そもそも、マルコフ連鎖とは何なのか?全く聞いたこともなかった。そして、文章を要約するのはとっても高度なことだと思っていて、自分のレベルではその方法を、今まで思い付きもしなかった。 しかし、以下のようなシンプルなRubyコードでそれが出来てしまう…

sortableでin_placeなツリー操作まとめ

最近悩んでいたツリー操作のサンプル。自分用のメモ。ツリー構造の展開には、render(:partial)を利用するように変更してみた。(以前はヘルパメソッドを定義して展開していた。erbの方がツリー全体のイメージが理解し易いかも。) 環境 MacBook OSX 10.5.6 R…

自分好みなin_place_editor(on super_inplace_control)を目指して

ツリー操作のサンプルの中で、in_place_editorを弄っていると、だんだん些細なことが気になってきた。 ハイライト中にマウスオーバーしてさらにハイライト処理が実行されると、背景色が変化途中の黄色で終わってしまう...。 テキスト編集する時に、フォーム…

ScriptaculousHelper等を利用する時の「"」「'」の悩み

問題 例えば、マウスオーバーした時にピカッと光るように、visual_effect :highlightで以下のようにやりたくなる。 <a href="#" id="test" onmouseover="<%= visual_effect(:highlight, 'test') %>"> test </a> 一見、うまく動いてくれそうなんだけど、実はちゃんと動作しない。 生成されたHTMLソースを見てみると、以下のようになっていた。 <a href="#" id="test" onmouseover="new Effect.Highlight("test",{});"> t</a>…

ツリー構造を自在に操作する(追加・修正・削除・並べ替え)

以前の日記 - ツリー構造をマウスで並べ替える - では、並べ替えは出来るようになったが、追加・修正・削除についてはちゃんと実装できていなかった...。今更なのだが、一通りの操作が出来るように機能を追加してみた。Railsのバージョンも違うことだし、過…

created_at、updated_atの実装コードを追ってalias_method_chainを理解する

RailsにはDBのカラム名に「created_at」「updated_at」を設定しておくだけで、作成日時と更新日時を自動記録してくれるという、お決まりの便利な機能がある。 最初に感動して、その後当り前のように使っていたのだが、その機能がどのように実装されているか…

タイムゾーンはどのように設定しておこうか...

最近、MacBookやOSX 10.5 Leopardの使い方ばかり気になって調べていたが、久々にRails関連のこと。既に、最新バージョンは2.2だそうだが、自分の頭はまだ2.1なのであった。(すっかりObjectiveC&AppleScript脳になってしまった頭を、 Ruby&Rails脳に戻すの…

WEBサービスから情報を取得して地図に表示する

ガソリン価格がとても気になる。現在は下落傾向だが、スタンドに実勢価格として反映するタイミングや地域によっては、スタンドごとに価格差が発生している。ガソリンというのはつくづく価格勝負の商品で、一消費者としては1円でも安く給油したいと考えてしま…

地図のバージョンの問題

数日前から自分のサンプルプロジェクトtest_mapの地図が正常に動作しないことに気付いた...。ブログにアップする時は、確実に確認したはずなのに...。なぜだろう? どうやら、Google Maps APIのバージョンが更新されたようで、最新バージョンでは自分の環境…

地図で最初に表示する場所はどこにすべきか?

前回からの続き。地図を表示する時、最初のアクセスで表示する地域をどこにするかという悩みがある。Google Maps APIのサンプルコードでは、アメリカのスタンフォード大学とかパロアルト周辺になっていた。おそらくGoogleの始まりがスタンフォード大学の学生…

地図を表示したい!ym4r_gmをちゃんと使いたい

前回の続き。目的地を中心に置いてマーカと吹き出しウィンドウを表示する最も基本的な地図は表示できるようになったが、未だGoogle Maps APIやym4r_gmの使い方はちゃんと理解できていない...。そんな状態で作業しながら考えたこと。 ym4r_gmのgmaps_api_key…

地図を表示したい!とりあえず地図を表示するまで

test_mapプロジェクトの開始 いつもの手順でサンプルプロジェクトを生成。 DBは必要ないけど、レイアウトファイル等の雛形が欲しいので、scaffoldを実行してしまった。(timestampsだけのマイグレーションファイルが生成された) # ---------- ターミナルで…

ページ内を移動するリンクやボタンを設定する時のメモ

ページ内リンクにはいろいろな方法があって、毎回迷ってしまうので、自分の環境で一番手間のかからない方法のメモ。 環境 MacBook OSX 10.5.5 rails 2.1 safari 3.1.2、firefox 3.0.3、iPhone・iPodTouch OS 2.1 aタグのname属性、またはdivタグ等のid属性に…

sessionに有効期限を設定する時の試練

Railsを使っていて自分で直接cookieを設定するという状況はほとんどなく、大抵はsessionをハッシュ感覚で、便利に利用してきた。Rails2.0以降はsessionの保存先はデフォルトでcookieになり、そのまま利用する限りcookieの有効期限は空欄のままなので、ブラウ…

アリスがチャレンジなコードを書く時、git branchをちゃんと理解したい!

アリスとボブのGitシリーズが本になりました! アリスとボブのGit入門レッスン アリスは迷っていた。現状のshowメソッドは固定されたメッセージしか出力しないが、理想的にはユーザーの条件によって変化させたいと。 しかし、その機能を実装するためには結構…

アリスとボブのサーバー、git pushをちゃんと理解したい!

アリスとボブのGitシリーズが本になりました! アリスとボブのGit入門レッスン アリスとボブになりきってgitをちゃんと理解したい! アリスとボブのコラボレーション、gitをちゃんと理解したい! 上記の日記から続く、アリスとボブの記録。 前提条件 アリス…

partial_counterは1から始まるのが好き

Railsにはいろいろな規約があって、その一つにpartial_counterという変数がある。(詳しくは以前の日記render :partialカウンター、オブジェクトもどうぞ) Rails 2.0.2までは0からカウントされ、 Rails 2.1で1からカウントされるようになり、 そして最近リ…

アリスとボブのコラボレーション、gitをちゃんと理解したい!

アリスとボブのGitシリーズが本になりました! アリスとボブのGit入門レッスン 前回からの続き。ひたすらアリスとボブの操作の記録。 ボブがアリスのプロジェクトを手伝う アリスは自分のプロジェクトが全く進んでいないことに気付いて、愕然とした...。そこ…

アリスとボブになりきってgitをちゃんと理解したい!

ここから始まるアリスとボブのGitシリーズが本になりました! アリスとボブのGit入門レッスン gitの解説には素晴らしいページがある。 git チュートリアル (バージョン 1.5.1 以降用) Git ユーザマニュアル (バージョン 1.5.3 以降用) こんなに親切に説明さ…

aasmとは何か?acts_as_state_machineとの違いは?

restful_authenticationを--statefulオプションで利用すると、2つのstate_machineが用意されていることに気付く。一つは、以前から利用しているRailsのプラグインacts_as_state_machine。で、もう一つがgemでインストールするaasm。aasmってacts_as_state_ma…

state_machineは同じ状態が継続するeventの場合、どのように処理すべきだろう?

前回から引き続き、state_machineを利用して試行錯誤中。(パスワード忘れの処理を追加したい!) 現状は「パスワードを忘れ?」のリンクをクリックしたら、状態を:activeから:resetに遷移させて、パスワード再設定のリンクをメールで送信する仕様になってい…

acts_as_state_machineのイベント・保存・コールバック等のタイミングに悩む

restful_authenticationを--statefulオプションで使っていて、パスワード忘れの処理を追加したくなった。そこで:resetという状態を追加して、最初は以下のようにしてみた。一見、うまく動きそうな気がするが、実際に動かしてみるとreset_passwordが思ってい…

state_machineは何をしてくれるのだろう?

restful_authenticationには--statefulオプションというのがある。ところが、--statefulを指定しても、利用者から見れば--include-activationの時と同じサービスが提供されるだけ、何も変わらない。READMEにはacts_as_state_machineをサポートすると書いてあ…