Tôi có ứng dụng đường ray cần chạy tập lệnh. tôi tưởng tượng rằng sử dụng đá quý ExecJS là cách sạch nhất để chạy js từ một ứng dụng đường ray. Tuy nhiên, cho đến nay, ExecJS đã tỏ ra rất bực bội khi sử dụng.Gọi tập lệnh Node.js từ ứng dụng Rails bằng ExecJS
đây là kịch bản tôi cần phải chạy:
// Generated by CoffeeScript 1.7.1
(function() {
var PDFDocument, doc, fs;
fs = require("fs");
PDFDocument = require('pdfkit');
doc = new PDFDocument;
doc.pipe(fs.createWriteStream('output.pdf'));
doc.addPage().fontSize(25).text('Here is some vector graphics...', 100, 100);
doc.save().moveTo(100, 150).lineTo(100, 250).lineTo(200, 250).fill("#FF3300");
doc.scale(0.6).translate(470, -380).path('M 250,75 L 323,301 131,161 369,161 177,301 z').fill('red', 'even-odd').restore();
doc.addPage().fillColor("blue").text('Here is a link!', 100, 100).underline(100, 100, 160, 27, {
color: "#0000FF"
}).link(100, 100, 160, 27, 'http://google.com/');
doc.end();
}).call(this)
Từ đường ray giao diện điều khiển của tôi, tôi cố gắng này:
[2] pry(main)> file = File.open('test.js').read
[3] pry(main)> ExecJS.eval(file)
ExecJS::ProgramError: TypeError: undefined is not a function
from /Users/matt/.rvm/gems/ruby-2.1.0/gems/execjs-2.0.2/lib/execjs/external_runtime.rb:68:in `extract_result'
Lưu ý rằng tôi có thể chạy kịch bản này sử dụng thành công 'test.js nút 'và tôi cũng có thể chạy chạy kịch bản bằng cách sử dụng cú pháp ruby backtick cung cấp:
`node test.js`
Nhưng mà cảm thấy giống như một hac k ...
Bất kỳ người dùng nào?
Âm thanh như một trường hợp sử dụng tuyệt vời cho microservices. Yêu cầu máy chủ Node.js tham dự các yêu cầu được thực hiện từ máy chủ Rails! – vemv
Điều này không liên quan đến câu hỏi, nhưng có liên quan đến mã. Nếu bạn đang cố gắng để tạo một pdf từ một ứng dụng đường ray, tại sao không sử dụng thư viện ruby như 'tôm'? – hamitron