それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。
") }) jQuery.noConflict()(document).ready(function(){ /**ページャーが気に入らないので修正**/ //やるべきこと // pre・next のいれかえ jQuery('span.pager-next').insertAfter('span.pager-prev') // pre/next に矢印を入れる jQuery('a[rel=next]').text(jQuery('a[rel=next]').text()+"> ") jQuery('a[rel=prev]').text("< "+jQuery('a[rel=prev]').text()) // pre/next をヘッダにもってくる //jQuery(".date.first").css("display","inline-block") jQuery('div.permalink.pager').clone().insertAfter(".date.first") jQuery("header .pager a").css("padding","0px 15px"); //pre/next をAjaxで取得してタイトルを取る。 //取得したタイトルをpre/next のタイトルに jQuery('span.pager-next,span.pager-prev').css("display","inline-block") jQuery('span.pager-next,span.pager-prev').css("width","250px"); jQuery('span.pager-next,span.pager-prev').css("overflow", "hidden"); jQuery('span.pager-next,span.pager-prev').css("white-space", "nowrap"); jQuery('span.pager-next,span.pager-prev').css("text-overflow", "ellipsis"); jQuery("a[rel=next],a[rel=prev]").each(function(idx,e){ var anchor = e jQuery.get(anchor.href,null,function(html){ jQuery(anchor).text() var title = jQuery("
").html(html).find(".entry-title").text().trim() jQuery(anchor).attr("title", title); text = jQuery(anchor).text() text = text.slice(0,10); text = text.replace(/の記事/, "の記事 ["+title+"] "); jQuery(anchor).text(text) }) }); }); })

Rubyの__FILE__で取得できるパスについて

FILE は、そのままだとアテにならない。

ruby の ruby-doc にはこのように書いてある。

FILE

現在のソースファイル名

フルパスとは限らないため、フルパスが必要な場合は File.expand_path( FILE) とする必要があります。

フルパスとは限らないというか、シンボリックリンクでも元ファイルにはならない。ソースファイル名というより、「実行中のファイル名」ですね。

たとえば、リンクを作ってみる。

ln -s sample.rb ~/linked.rb

sample.rb を linked.rb にして、リンクした場合の FILE がどうなるか調べてみることにしたら・・・

~/Desktop/sample.rb

__FILE__: sample.rb
 $0     : sample.rb
File.expand_path($0): /Users/takuya/Desktop/sample.rb
File.realpath($0)   : /Users/takuya/Desktop/sample.rb
File.expand_path(__FILE__): /Users/takuya/Desktop/sample.rb
File.realpath(__FILE__)   : /Users/takuya/Desktop/sample.rb

~/linked.rb

__FILE__: /Users/takuya/linked.rb
 $0     : /Users/takuya/linked.rb
File.expand_path($0):/Users/takuya/linked.rb # これは・・・
File.realpath($0)   : /Users/takuya/Desktop/sample.rb
File.expand_path(__FILE__): /Users/takuya/linked.rb # あっ
File.realpath(__FILE__)   :/Users/takuya/Desktop/sample.rb

FILE は実行中のファイル

リンクしたりアレコレ、 FILE はいまのPathなんだろうけど、require したらどうなるんだろう

Pathが必要ならrealpath した方がいいね

$: / $LOAD_PATH や、なにかファイルを読み込むときに、実行中のファイル名から相対的にたどるのであれば、expand_pathするまえに、realpathしないとバグが起きそう。。。

参考資料

変数と定数 (Ruby 2.0.0)

Ruby - __FILE__と$0の違い - Qiita