コードは、Microsoft Windows で実行するように設計されています。このスクリプトは、他の OS では何も役に立ちません。特に、MAC アドレスを使用して、システム上のネットワーク アダプタごとに 1 つの空のファイルを作成しようとします。
line
Windows がファイル名に許可しない文字が含まれている可能性が非常に高いです。(Windows は Linux や Mac OS X よりも制限が厳しいです。) 表示されるエラーは何ですか?
また、line
呼び出しの直前に変数を出力File.new
して、その内容を確認してください。
おそらくline
、無効な文字を削除してサニタイズする必要があります。許可されていないものについては、この回答を参照してください。簡単な方法は、シンプルなホワイトリストを使用することです:
# remove non-alphanumeric and non-underscore
line.gsub!(/\W/, '')
エラーの原因は改行だと思います。
アップデート:
Windows でテストを行ったところ、問題の原因は実際にキャリッジ リターン ( \r
) とライン フィード ( ) でした。\n
私は得るErrno::EINVAL: Invalid argument
。
すべての空白を削除することで、これを修正する必要があります。
line.gsub!(/[\s]/, '')