JavaScript 用のビルド自動化スクリプトを作成しています。これまで使用File.read
したことはありませんが、コード行を節約できるので、試してみることにしました。
だからここに私のコードがあります:
require "uglifier"
require "debugger"
@buffer = ""
# read contents of javscripts
%w{crypto/sjcl.js miner.js}.each do |filename|
debugger
File.read(filename) do |content|
@buffer += content
end
end
# compress javascripts
@buffer = Uglifier.compile(@buffer)
# TODO insert js in html
# build the html file
File.open("../server/index.html", "w") do |file|
file.write @buffer
end
しかし、うまくいきません。@buffer
は常に空です。
デバッグ プロセスは次のとおりです。
(rdb:1) pp filename
"crypto/sjcl.js"
(rdb:1) l
[4, 13] in build_script.rb
4 @buffer = ""
5
6 # read contents of javscripts
7 %w{crypto/sjcl.js miner.js}.each do |filename|
8 debugger
=> 9 File.read(filename) do |content|
10 @buffer += content
11 end
12 end
13
(rdb:1) irb
2.0.0-p0 :001 > File.read(filename){ |c| p c }
=> "...very long javascript file content here..."
ご覧のとおり、では正常irb
にFile.read
動作します。ただし、ブロック内にdebugger
ブレークポイントを配置すると、デバッガーにブレークすることはありません。File.read
ブロック自体は決して実行されないということですか?
また、ドキュメントを確認しましたが、 File.read はどこにも言及されていません。 http://ruby-doc.org/core-2.0/File.html
私はそれを捨てるべきですか、それとも何か間違ったことをしていますか?
%w{crypto/sjcl.js miner.js}.each do |filename|
File.open(filename, 'r') do |file|
@buffer << file.read
end
end
これはうまくいきます。しかし、私はまだ何が起こっているのか興味がありますFile.read