課題で出されたツールを自分で書いてみたんですが、エラーが起こる理由が分からないので教えて頂きたいです。
↓リンク先に書いてみたスクリプトとエラー内容が書いてあります。
http://ideone.com/pjxA5
課題の内容は、コマンドプロンプトの引数でディレクトリ名を与えて、そのディレクトリにあるファイルやサブディレクトリにあるファイルから拡張子が「.c」「.cpp」のものを再帰的に全て探します。
探した拡張子のファイルの中身に「//」で始まる行(コメント行)があればすべて置換して消すようにする、といった感じの内容になっています。
rubyを始めてそんなに経っておらず分からない事だらけなので、構文が間違ってるなど、エラーが出る理由を教えて頂ければと思います。
No.2ベストアンサー
- 回答日時:
rubyのバージョンが1.9のようですので、magic commentを入れておいてください。
それがないと思わぬエラーがでたりしますので、
http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fm17 …
それとデバッガを使ってみてください。
ruby -rdebug xxxx xxxx
のように-rdebugを入れれば使えるようになります。
またrubygemsからruby-debugをインスールする方法もあります。
`initialize': Permission denied - dir1
の周辺にどの行でエラーがあるのか情報があるはずです。dir1フォルダが書き込み(読み込み)禁止になっているような感じですが。
デバッガを使うのが解決の近道だと思います。
回答ありがとうございます。
返信が遅くなってしまいすみません。
rubyを始めたばかりなのでデバッガあるとは知りませんでした。
試してみたところ、エラーの内容はよくわからなかったのですが、フォルダが書き込み禁止になっていただけというものすごく単純な事だったみたいです。
プログラムの間違ってる箇所ばかり探していたので、初歩的なことに気づけませんでした(-_-;)
無事動くようになったのでご回答本当に助かりました。
No.4
- 回答日時:
No.2です
MacRuby 0.12 (ruby 1.9.2)
ですが、
No.3にkmeeさんが書かれているのと同じ結果です。
Errno::EISDIR: Is a directory - read() failed
となります。
dir1が読み込みが禁止されている場合にはopenで
Errno::EACCES: Permission denied - open() failed
となりますので、実際にはeachの前の17行めのopenでエラーになっているのではないかと思います。
質問者さんはWindowsのようですので、エラーメッセージが微妙に違う可能性はありますが
課題のようですので、ヒントだけ
Dir.glob("#{dir}/*")でファイル名を取得しするのがよいように思います。current directoryよりの相対パスでファイル名が得られます。
他にも気がついた範囲で
(動作確認はしていないので正しいかは分かりません)
24行目directory?(fullpath)はクラスメソッドに
37行目temp = Tempfile::new(file)は
temp = Tempfile.new(file)に
40行目f.read.each{|line|は
f.each{|line|に
返信おそくなってしまい申し訳ございません。
一応フォルダの書き込み禁止が原因だったみたいですが、こちらに書かれているようにスクリプトを修正してみました。
こちらでも問題なく動きましたし、記述的にもスッキリしますね。
再びご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビーリアルのユーザー名を変え...
-
Ruby on railsをrails sで立ち...
-
VBScriptでExcel(2019)上のデー...
-
100万件越えCSVから条件を満た...
-
C言語の入力した文字を反転させ...
-
英数字を含む文字列(0-9,A-Z)...
-
秀丸エディタで、同じ記号で囲...
-
(再質問)エクセルのマクロボ...
-
pandasでsqlite3にテーブル作成...
-
pythonエラー
-
電子書籍作成、epubファイルの...
-
A4 持ち込み
-
前回の質問の続き
-
あせんうぶり言語
-
これらは書誌情報だと思うので...
-
情報の表現。()内がどうしても...
-
pythonのerrorコード
-
三項でたとえば交換って
-
WinSCPで画像のように puttyを...
-
パソコンのスクリーンセーバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gem install railsで「NameErr...
-
REXMLの使い方を教えてください
-
Railsでのpaginateの方法
-
ruby.exeとrubyw.exeに違いがあ..
-
railsで、データベースのfindの...
-
ruby ldapライブラリが利用でき...
-
ruby inject
-
MacRubyにおけるコメントアウト...
-
Aptana Studioの複数ファイルの...
-
ruby 全角ハイフンを半角ハイフ...
-
rubyのサンプルコードの起動に...
-
エラーが起こる理由を教えてい...
-
小文字wと大文字Wの区別
-
COBOLのIFの入れ子について
-
VB.NETで階乗を求めるプログラ...
-
RubyでNo such file or directo...
-
Ruby / passenger のインストー...
-
web上のhtmlファイルから文字デ...
-
プログラミング言語で大文字と...
-
「大文字・小文字・スペース」...
おすすめ情報