SSブログ

Rails3.0のソースを読んでみる。1 [プログラミング]

と言っても、Railsそのものじゃなくて、生成されて使う方のソースなので、これから書かれる事はあんまり汎用性はないですね、たぶん。とはいえ、毎回ここを参照する時に、特定のコードを引っ張ってくるのは面倒なので、Rails3.0のソースを基本にした事を書いておきます。3.1のソースだとディレクトリ構成とかちょっと違うので注意。

 app/views/layouts/application.html.erb

  <%= stylesheet_link_tag :all %>
  <%= javascript_include_tag :defaults %>
  <%= csrf_meta_tag %>


 
stylesheet_link_tag :allってのは書いてある通りに、スタイルシートの事なんでしょうが、出力されるソースは次のようになっている。

 <link href="/stylesheets/application.css?1303091758" media="screen" rel="stylesheet" type="text/css" />

結局、public/stylesheets/application.cssのスタイルシートを使うようになっているようです。本にも決め打ちでそうしろって書いてあった。allってのは、そのフォルダの中に入っているスタイルシートをすべて利用するってことなんでしょうが、とにかく:allではなくてファイル名を書くやり方もあるみたいです。

あんまりHTMLは分からないので、調べるのもおっくうなんですが、mediaってのが、"screen"ではコンピュータのスクリーン表示で、"print"だと印刷用の表示方法らしいです。デフォルトだとscreenになっちゃうのだけれど、printとか別のにしたい場合は、HTMLをベタに書くしかないみたい。

表示方法は、別途ページごとに設定することが出来るって訳ですね。CSSはよく分からないので、全部一緒のファイルに書き込んじゃう気がしますね。見た目は質実剛健な物が好きだし、特にカスタマイズかけられるようにしたいとは思わないし。そんな事すると、基本的な昨日以上にデバッグする用件が増えてしまうので、なるべくそういう事はしたくない。それくらい余裕ができればいいだろうとは思うけど。

ちなみにrelはページ同士の関係を示す、そうです。Stylesheetは別ファイルのスタイルシートで、Start, Next, Prev, Contentsとか、Chapter, Section, Subsectionとか、割ときっちりと書いてもしょうがないものが指定できるみたい。

typeはファイルの内容の仕訳ですね。いわゆるMIMEタイプってヤツらしい。



app/views/layouts/application.html.erb に戻って

<%= javascript_include_tag :defaults %>

は実際に出力されると、

  <script src="/javascripts/jquery.js" type="text/javascript">
  <script src="/javascripts/jquery_ujs.js" type="text/javascript">
  <script src="/javascripts/application.js?1303695046" type="text/javascript">

って感じになってる。Rails 3.0だとjqueryは必須になってないので、Rails3.1とはちょっと違う感じになっているのかもしれない。

これもCSSのファイルと同様に、public/javascriptsに入ってそうだけど、jqueryの類いのファイルがフォルダに入ってないんだけどなぁ。どういう事だろう。Rails3.0でJQueryの使い方とか調べる気にもならないんだけど、使う気になって設定してファイルがなくても大丈夫なんでしょうね。

:defaults で元々入ってるものを使うっぽくて、:all にするとフォルダの中に入ってるものをすべてインクルードするってことになっているらしい。実際にやってないので何とも言えないけど、これから使うかどうか分からないRails3.0だしなぁ。



ちなみにRails3ではかなりディレクトリが変わったらしく、
 app/assets/javascripts/application.js
あたりにあるみたい。使う時はコメントアウト外さないとダメっぽいので、標準になったとはいえ、意図的にやらないと使えないのかな。そこいらは、Rails3.1を本格的にやる時に詰めてやる事になると思う。そのうちそのうち。というか、gemで正式に3.1に移行しちゃったので、やらざるを得ないってことで。

そぉいや、MacのRails3.0のままだった。gemでアップグレードしておこう。



<%= csrf_meta_tag %>

では、

<meta content="authenticity_token" name="csrf-param" />
<meta content="+fGyrmVrqjJMUmHs1Cgbq5MY7y03rkYjT39czZL6tC0=" name="csrf-token" />

って展開されている。csrfってのは、Cross Site Request Forgeriesってヤツで、不正行為を防止する仕組みが入れられているみたいだ。二行目のごちゃごちゃした文字列が、その場限りのトークンであると思われ。とりあえず、Railsではデフォルトでcsrf対策が施されていると考えましょう。何か不都合があったら誰かが直してくれるだろうし、そのためのライブラリというかフレームなわけだし。他力本願と言われても仕方ないケド、実際他力じゃないOSSなんて存在しないわけだしね。と、自己正当化してみる。



<%= yield %>

ってところは、テンプレートを埋め込むはずのところらしい。yieldってそもそもなんだったっけ。ググったら「yieldは自分でイテレータを定義するときに使う文」ってのが分かりやすい説明だったかな。でも使い方は、それだけじゃないし。ここできっちり使い方を覚えておいた方がいいな。次の機会にお勉強しようかね。


ええと、app/views/layouts/application.html.erbに関してはこれでいいや。


タグ:Rails
nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。