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
コメント一覧
この記事へのコメントはありません。
コメント送信
トラックバック
この記事のトラックバックPing URL
この記事へのトラックバックはありません。
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
最近の記事
2016年3月8日 カウント支援ツールデバッグ2016年2月7日 インクルードパスの追加
2016年2月5日 ドルコロンテン
2016年1月25日 モバイルだけしかアクセスできなくするテスト
2016年1月24日 ruby-gemを使ってみるテスト
2016年1月22日 ruby-postgres-0.7.1のインストール
2016年1月21日 Rubyのインストール
2016年1月8日 ツイッターAPIからトレンドワードを取得
2016年1月5日 PHPからツイッターに送信