rails
FileEntryはbodyを持ち、DirectoryEntryはentriesを持つ。sizeはFileEntryの場合は、body#sizeを返し、DirectoryEntryはentriesのsizeの和を返す。
モデルオブジェクトとは独立にコントローラー、ビューを作ってurlルーティングを設定してあげて、最後はフォームを通して渡っているparamsの中身を表示するまでをやりました。railsのチュートリアルは大抵モデルが絡んで、ヘルパー関数などの挙動を調べるの…
Rack::FileのラッパーStaticが静的ページを扱うミドルウェアになっています。railsもpublicディレクトリの表示は同様の方法をとっています。なので、静的なページをpublicに置くとそちらが優先されます。 動作デモ
railsアプリのconfig.ruを見ると"run XXX::Application"となっていて、でもRails::Applicationにはcall(env)がなくてってので、どうして動くのか理解できませんでしたが、ソースコードを見ると class Railtie autoload :Configurable, "rails/railtie/config…
Rack.version == 1.1で、 require 'rack' Rack::Handler::WEBrick.run HelloRack.new, :Port => 9292 とするとctrl+cでサーバーがシャットダウンできないので、次のように書き換えてシャットダウンできるようにしています。 rackアプリは設定ファイル(hello.…
tsort(トポロジカルソート)は主に依存関係の解決に利用されるようです。この処理の前には、あの処理をやっておくというように指示すると、tsortはその条件に合うようにソートします。次のコードはRailsの初期化処理とほぼ同じ実装で、:afterまたは:beforeで…
本物は色々なモジュールに分かれてたり、継承してたりするわけですが、究極に単純化するとコントローラーがview_contextというオブジェクトを持っていて、renderを呼ぶタイミングでTemplateクラスを通してerbファイルがコンパイルされて、ソースはview_conte…
1つ前までのConcernではうまくいかないので修正。これでほぼrailsのConcernと同じです。 解説 まずMとM2はConcernをextendしたときに@dependenciesが定義されます。"include M"で、M.append_feachers(M2)が呼ばれます。M2は@dependenciesをinstance variable…
いやぁ、Ruby on Rails Guilds:Get Startedをやってみて、validationまわりがどうなっているのか気になったので読んでみました。validatesはActive SupportのCallbacksモジュールのset_callbackでValidatorオブジェクトがvalidateをコールするのをvalid?を実…
active supportを使うと、次のようになります。 require 'active_support/concern' module M extend ActiveSupport::Concern def method2 puts "method2" end module ClassMethods def method1 puts "method1" end end end class C include M end C.method1 …