私は、ユーザの投稿に基づいて、ユーザ入力に基づいて何らかの.texファイルを生成し、pdfにコンパイルしてpdfを配布するRailsアプリケーションを用意しました。排除のプロセスを通じて、私は1つの行を除いてすべてが機能していることをかなり肯定しています。 pdflatexが呼び出される場所。私のRailsコントローラ内でシステムコマンド(pdflatex)を実行する
ここに重要なコードスニペットがあります: (問題があれば、フォームの後に呼び出されるgenerateアクションの質問コントローラ内にありますが、これは最良の方法ではありませんが、 )そのないエラーの原因はかなり特定のmは
texHeader = 'app\assets\tex\QuestionsFront.txt'
texOut = 'app\assets\tex\Questions.tex'
#copy latex header to new file
FileUtils.cp(texHeader, texOut)
File.open(texOut, 'a+') do |fout|
fout.write("\n")
# a loop writes some more code to fout (its quite lengthy)
fout.write("\\end{enumerate}\n")
fout.write("\\end{document}")
#The problem line:
puts `pdflatex app/assets/tex/Questions.tex --output-directory=app/assets/tex`
end
filename = 'Questions.pdf'
filelocation = "app\\assets\\tex\\" + filename
File.open(filelocation, 'r') do |file|
send_file file, :filename => filename, :type => "application/pdf", :disposition => "attachment"
end
end
は、ここに私の推論です:それは正しく.texファイルを生成し、事前に作成したQuestions.pdf与えられ、それを提出、それがうまく送信されます。 putsのコマンドがターミナルにコピーされると、ヒットせずに実行されます(ファイルは\ nonstopmodeで始まり、小さなエラーの心配はありません)。しかし、何らかの理由で上記のスクリプトを実行すると、エラーが発生してもログファイルが作成されません。
私は何を見落としていますか?何か案は? puts行がどのような出力を生成しているかを見る方法はありますか?
ありがとうございます!
フィードバックいただきありがとうございます。私はいつもスラッシュを混ぜる。私はコードの行を変更しましたが、私はまだ何も得ていません。ログファイルはなく、出力もありません。私はそれに応じて私の質問を更新した。 –
@ngmiceli: 'pdflatex'は標準出力に有用なものを出力しますか、それを' --output-directory'にすべて書きますか? –
これは大量のものを標準出力に出力しますが、通常は同じ_exact_コンテンツが通常はログファイルにも出力されます。私は、ログアウトファイルを作成せずに標準出力に印刷する予定の状況があるかどうかをよく知るスクリプトを知らない。コマンドをターミナルにコピーして夢のように動作させると、そのような状況がどうして起こるのか分かりません。 –