アーカイブ

‘Rails’ カテゴリーのアーカイブ

Apacheは知らないhttpステータスは返さない。 このエントリーを含むはてなブックマーク はてなブックマーク - Apacheは知らないhttpステータスは返さない。

2010 年 2 月 11 日 yoshuki コメントはありません

正しくは、500を返す。

render :nothing => true, :status => 450

なんてことをしていて、Mongrelの開発環境だとちゃんと450が返ってくるのにApache+Passengerの検証環境だと500が返ってきていた。
そこで原因を調べたところ、返す可能性のあるステータスコードはすべて定義されていて、それ以外は500で返している。(※ソースは後述)

で、なんでこんなことをしようとしているのか。Flashのアップローダを作ってFileReference#upload()でアップロードしているのだけれど、こいつが結果をHTTPステータスでしか受け取れない。だから、結果のメッセージをサーバから返してそれを表示する、てこともできない。
アップロード自体が成功したか否かを知るには200かそれ以外か、くらいで十分なんだけれど、アプリ要件(たとえば、アップロードが終わってからファイルを受け付けられない状況になってただとか、ファイルの中身を見て判断しなきゃいけないだとか)での結果を返すには、これでは足りない。
結局、Apacheのソースコメントでunusedとなっていた418~421に意味を持たせ、そこを使って対応しました。層を混同していて気持ちがいいものではないのだけれど、影響範囲は広くなく、なんらかのフラグを立てて別リクエスト、のコスト増を考えるといいだろうとの判断。もしなにかいい方法があったら教えてください。

以下、Apacheソースの該当部分。
続きを読む…

カテゴリー: Apache, Rails タグ:

rake notesが出してくれる範囲。 このエントリーを含むはてなブックマーク はてなブックマーク - rake notesが出してくれる範囲。

2010 年 1 月 19 日 yoshuki コメントはありません

configの下も出したかったので調べた。

rails-2.3.5/lib/source_annotation_extractor.rb

 48   # Returns a hash that maps filenames under +dirs+ (recursively) to arrays
 49   # with their annotations. Only files with annotations are included, and only
 50   # those with extension +.builder+, +.rb+, +.rxml+, +.rjs+, +.rhtml+, and +.erb+
 51   # are taken into account.
 52   def find(dirs=%w(app lib test))
 53     dirs.inject({}) { |h, dir| h.update(find_in(dir)) }
 54   end

ここね。

カテゴリー: Rails, Ruby タグ:

rake db:seedっての。 このエントリーを含むはてなブックマーク はてなブックマーク - rake db:seedっての。

2009 年 10 月 16 日 yoshuki コメントはありません

rake db:seed – p0t

Rails 2.3.4から入ったrake db:seed。所謂マスターデータを入れる処理はmigrationじゃなくてこっちにしようという話。

もう悩まない!

カテゴリー: Rails, Ruby タグ:

autotest_screenをリリースしました。 このエントリーを含むはてなブックマーク はてなブックマーク - autotest_screenをリリースしました。

2009 年 3 月 19 日 yoshuki コメント 4 件

autotest/screenの切り出しを引き受けてから早2週間、やっとのことでリリースしました。

RubyForge: autotest_screen: Project Info

Autotest::Screen shows autotest/autospec progress on GNU Screen’s status line.

これからは

gem install autotest_screen

でどうぞ。

RubyForgeにプロジェクト作ってファイル上げてって流れ、komagataさんの動画がリアルでおすすめ。

カテゴリー: Rails タグ:

ZenTest 4.0.0でautotest/screenを。 このエントリーを含むはてなブックマーク はてなブックマーク - ZenTest 4.0.0でautotest/screenを。

RubyForge: zentest-4.0.0-released

ZenTest version 4.0.0 has been released!

先日パッチを投げてみて、そのあとこんなやりとり(超訳:Ryan「おれscreen使ってなくて、これからも使う予定ないから、メンテやってくれないかな。」オレ「わかった、やるよ。」)があって、autotest/screenを担当することになったのですが、その直後にリリースされた4.0.0ではもうautotest/screenが削除されております。(こんなタイミングだったとはっ! 8O
そのためZenTest 4.0.0にアップデートされた方はautotest/screenが無い状態になっていると思いますので、お困りの方のために暫定処置としてソースを張っておきます。

こいつを ZenTest-4.0.0/lib/autotest/screen.rb として置くか、$HOME/.autotest にまるっと貼り付けてやればOKです。
正式対応はへっぽこ英語でやりとりしつつ鋭意作業中ですので、いましばらくお待ちください。

カテゴリー: Rails, Ruby, ZenTest タグ:

autotestにhookを。 このエントリーを含むはてなブックマーク はてなブックマーク - autotestにhookを。

2009 年 2 月 27 日 yoshuki コメントはありません
  1. シンタックスエラーやらが原因で、気がついたらscreenの裏で静かにautotestが落ちてた。
  2. なんてことを繰り返してた。
  3. そのためのhookを追加したらいいんじゃないかと思いつきやってみた。
  4. 去年いじったautotest/screenがそのままになっていたのに気がついた。
  5. この際一緒に投げようとした。
  6. 他の人が先に投げたパッチに被っていることに気がついた。
  7. どうしようか考えた。
  8. けれどとりあえず気にしないで投げた。←いまココ

[ref.] Autotest::Screenのhookを整理してみた。
[ref.] RubyForge: ZenTest – Ruby Unit Testing Utility:

カテゴリー: Rails, Ruby タグ:

MerbがMerbが。 このエントリーを含むはてなブックマーク はてなブックマーク - MerbがMerbが。

2008 年 12 月 25 日 yoshuki コメントはありません

Riding Rails: Merb gets merged into Rails 3!

It’s christmas, baby, and do we have a present for you. We’re ending the bickering between Merb and Rails with a this bombshell: Merb is being merged into Rails 3!

インストールするといっぱい依存gemが入るというくらいの知識しかなく(えぇー!)、触ってみなきゃと思いつついますぐには必要ないしという後ろ向きな理由でそのままにしていたMerbがRails3にマージされるそうです。

ふつうにアプリを作るならきっと現時点でもう十分で、フレームワークは道具でまた学習コストがかかるのは云々て意見も正しいと思うけど、ここをこう変えたんだとかこういう機能がついたんだというのをみるたびに、そんな方法があるんだ!とかそうやってるのか!とか感じるのが単純におもしろい。

包丁を研いでうわー切れるーだとか、ドリルに油さして穴開け軽々ーだとか、そういう感覚と同じなんじゃないかな。
いい道具を使うことはそれ自体が楽しみで、それをメンテナンスするのも楽しいことだと思う。

カテゴリー: Rails タグ:

Rails一本で。 このエントリーを含むはてなブックマーク はてなブックマーク - Rails一本で。

2008 年 12 月 18 日 yoshuki コメントはありません

ヽ( ・∀・)ノくまくまー(2008-12-16)

Rails edge に Metal という新しい機能が追加された。これは Rack を用いた高速な Controller であり、Rails の色んな機能は捨ててでも、兎に角、単純で速いレスポンスがどうしても必要だ!という局面ではもの凄い助けになるだろう。

いままでのRailsの遅さがネックになるようなシチュエーションに対するアンサー的な機能が追加されたみたいです。(すばらしー、詳細は↑を。)

ここで、こちらのコメントで思ったことがあったのでひとつ。

ヽ( ・∀・)ノくまくまー(2008-12-16)

paco (2008-12-17 15:19)
rails一本で何も考えずにスタートしても後で何とかなるって安心感は増えますねー

自分は「Railsしか触ってない」って思っているところがあったのだけれど、使い始めた頃の1.2といまの2.2ではけっこう違う。機能の追加や変更があるたびに基づいている考えも変わっているわけで、ちゃんとそれに追従していけばそれでも悪くないのかなーと。もちろん視野を狭めるつもりはないのだけれど、なんとなく感じていた「Railsだけしか」的な負い目みたいなのは余計なことなんだろうな。

そもそもそこまで深くRails知ってるのかって言うとNoなんですがね、同じ物を見続けていても対象が動いていれば結果的に自分も動いていけるんだよな、と。そういうことを感じたのです。

・・・と、ここまできてぴったりな言葉を思い出した。

「牛に引かれて善光寺参り」

そう、これだ。Railsは牛。

カテゴリー: Rails タグ:

Railsを動かす環境。 このエントリーを含むはてなブックマーク はてなブックマーク - Railsを動かす環境。

2008 年 12 月 16 日 yoshuki コメントはありません

Riding Rails: Hosting Ruby on Rails with Passenger

The change is that if you do not already have an investment in an alternative solution, or if you’re feeling pain with that solution, you should definitely consider Passenger to be the default choice for Rails.

すでにTa-da ListとBackpackがPassengerで動いていて、残りのサービスも近いうちに移行するとのこと。

日本のレンタルサーバでも広がってくるかな。

カテゴリー: Rails タグ:

jpmobileを使って携帯絵文字をPCで表示したり編集したり。 このエントリーを含むはてなブックマーク はてなブックマーク - jpmobileを使って携帯絵文字をPCで表示したり編集したり。

2008 年 10 月 28 日 yoshuki コメント 2 件

Jpmobile

JpmobileではControllerにmobile_filterを指定することで DoCoMo、Au、SoftBankの絵文字を透過的に扱うことができる。

jpmobileでは携帯間の絵文字変換は対応されているのですが、PCについては含まれていません。
そこでどうしようかとうろついていたら、PCで絵文字を表示するフィルタを書かれている方がいました。

携帯絵文字をPCで表示するためのフィルタをつくってみた – みじんこ日記

しかしながら、現在のところPCでのアクセスのためのフィルタは用意されてなく、PCで閲覧した場合何も表示されないか、ブラウザによっては文字化けします。
そこで、このプラグインの出番です。(いいすぎだったらごめんなさい)

さっそく使わせていただきPCでも絵文字を見られるようになったのですが、編集には対応されていなかったようなので、inputかtextareaの中の絵文字は専用タグに変換するように書き換えてみました。(ソースは下方参照のこと)
text_fieldやtext_areaを使ったときには絵文字(たとえば「晴れ」)は[emo:58942]のように表示されます。
思いっきり数字な件についてはこれ用の入力パネルを作ったらいいかなーと。そう、mixiみたいに。
ただ、mizincogrammerさんも重いとおっしゃっているところに重ねているので、きっとさらに重いです。
ベストはtext_fieldやtext_areaの中だと思うのですが、ソースを読んだらうまくねじ込めそうなところがなかったので、こうしました。(rails:freeze:gemsして書き換えてしまえばいいんですがっっ。)

actionpack-2.1.2/lib/action_view/helpers/form_helper.rb

527       def to_input_field_tag(field_type, options = {})
528         options = options.stringify_keys
529         options["size"] = options["maxlength"] || DEFAULT_FIELD_OPTIONS["size"] unless options.key?("size")
530         options = DEFAULT_FIELD_OPTIONS.merge(options)
531         if field_type == "hidden"
532           options.delete("size")
533         end
534         options["type"] = field_type
535         options["value"] ||= value_before_type_cast(object) unless field_type == "file"
536         options["value"] &&= html_escape(options["value"])
537         add_default_name_and_id(options)
※ここでやりたかった
538         tag("input", options)
539       end

続きを読む…

カテゴリー: Rails タグ: