このエントリーをはてなブックマークに追加
スポンサーリンク

2016年2月7日 インクルードパスの追加

Perlでインクルードパスを追加するために、@INCという配列にパスを追加していた。それと同じことをRubyでやりたいのだが、なにせRubyの命令をなに1つ知らないもんだから、都度検索しないといけないという、非常に非効率的な、カタツムリ的な速度で作業が進捗しているわけです。

昨日わかった事は、Perlで@INCに相当するものは、Rubyでは$:であるという事。したがって、この$:という変数にカレントと、カレントの1つ手前の /rubyincというディレクトリをインクルードパスに追加すれば良い。

作ってみた。

-----------------------------------------------------
current=Dir::pwd
current_array = current.split("/")
max=current_array.count-2
inc_path=""
for cnt in 0..max
inc_path+=current_array[cnt]+"/"
end
inc_path+="rubyinc"
$:.unshift(current, inc_path)
-----------------------------------------------------

Rubyで文字列を操作する場合は、

変数.メゾット(引数)

というふうに、VBとかJavaScriptっぽく書くわけだな。PerlをVBっぽくした言語というべきだろうか。しかし、こういうのは自分はちょっと苦手ですな。といいますか、そもそもオブジェクト指向型の言語というのがイマイチ得意じゃなかったりします。

さっそく require "furiwake.inc"としてみると、

./index.rb:21:in `require': no such file to load -- furiwake.inc (LoadError)
from ./index.rb:21

そんなファイルはないとおっしゃる。そんなバカな。ためしに p $:とやってみると、ちゃんと、rubyincが追加されているではないか。これは一体どういう事やねん。

で、他の人のサンプルを見ると、拡張子がみんな.rbになっているわけですよ。

「ま、まさか・・・拡張子が.rbじゃないとダメなのか??」

拡張子を変えてみる。

・・・・できた。なんだそりゃあああ。

じゃあ、requireをやめてincludeにしてみる。すると、

./index.rb:21:in `include': wrong argument type String (expected Module) (TypeError)
from ./index.rb:21

引数が違う??じゃあどうするのさ。

調べたところによると、includeは単なる文字列操作。つまり、PHPのincludeとは全然違うって事で。

じゃあ今度はloadと書いてみる。

・・・できた。つまり、requireはあくまでrubyのライブラリ(.rb)を読むためのものであって、拡張子.incを読むものではないっつー事ですな。なので、PHPのincludeのかわりに使いたいのであれば、loadを使わないといけないって事で。

===============================================
▽ここを参考にしました。ありがとうございました。
http://yiaowang.web.fc2.com/programing/ruby_base/syntax_loop.html


 △先頭へ  コメント(0)  トラックバック(0)  拍手(0)

2016年2月5日 ドルコロンテン

インクルードパスを設定するのにどうすればいいのか。Perlだと@INCという配列に足せばいいんだけど、rubyで@INCに相当するものは何か?

検索したら、
$:.unshift File.dirname(__FILE__)
という文が出てきた。これを足せばいいのか。

・・って、そんな意味もわからずコピペしたんじゃ、いざバグった時にどうしょもなくなるぞ。応用も効かないし。ちゃんと意味がわかって使わないと。

というわけで意味を調べてみる。が、困ったことに、Googleってのは$:みたいな記号を検索するのは苦手。なにせ、$や:がつくページが全部出てしまうのだからな。

しかたがないので、ロードパスで調べて行ったら、$:は、$LOAD_PATHの別名みたいだ。でもって、この$LOAD_PATHってのが、Perlでいうところの@INCに相当するようだ。

それにしても、rubyについて色々調べているが、わからない事だらけでいっこうに作業が捗らんな。進捗度がカタツムリ以下だ。まあ、仕事でやってるわけじゃないのがせめてもの救いか。

ここを参考にしました。ありがとうございました。
http://futurismo.biz/archives/2293
http://abe-log.cocolog-nifty.com/blog/2012/03/rubyload_path-4.html


 △先頭へ  コメント(0)  トラックバック(0)  拍手(0)

スポンサーリンク