Uygulamada depolanan bilgilere göre PDF formlarını otomatik olarak doldurmak için PDF Tool Kit ('pdf-form' gem) kullanan bir açık kaynak Rails 4 projesi üzerinde çalışıyorum veri tabanı. PDFtk, ikili dosyaların kurulmasını gerektirir ve örneklendirilmiş PDFtk modeli, ikili dosyalara bir yol gerektirir. Yolun dinamik olması gerekiyor, bu yüzden Heroku, Mac OS X ve Windows üzerinde çalışacak. Bir 'nix makinesindeki yolu' hangi 'komutuyla bulabilirim. Ancak, Windows 'hangi' kullanmaz, 'nerede' kullanır.Platformun CLI komutuna yanıt verip vermediğini anlamak için Ruby'yi kullanın
Platformun bir komuta yanıt verip vermediğini saptamanın bir yolu var mı, eğer öyleyse, komutu çalıştır?
En iyi denemem, platformu RbConfig ile algılamaktır (aşağıya bakın). Bununla birlikte, bazı Windows platformları (ör. Cygwin) * nix komutlarına cevap verir. Bir Mac kullanıcısı olarak, Windows için her platforma aşina değilim.
def pdftk
# Use path stored in Heroku env vars or else get path to local binaries
@pdftk ||= PdfForms.new(ENV['PDFTK_PATH'] || local_path)
end
def local_path
os = RbConfig::CONFIG['arch']
if /mswin/ =~ os
path = `where pdftk` # Get pdftk filepath, Windows equiv of *nix 'which' command
else
path = `which pdftk` # Get pdftk filepath on POSIX systems
end
path
end
Windows ana bilgisayarlarında çalıştırılmak için neden _Rails_ projesine ihtiyacınız olduğunu açıklayabilir misiniz? Tüm projeyi son kullanıcıya gönderecek misin? Kullanıcının raylar projesini kurmakla iyi olup olmadığı, kinda 'config.rb' içinde zorunlu ayarlarla gidip, bu kütüphanenin kutudan çıktığı yere ayarlanmış varsayılan değerle giderdim. OP'de görüntülediğiniz gibi.) – mudasobwa
@mudasobwa Bazıları Cygwin'i veya benzerlerini kullanamayacak/kullanamayacağı Windows makineleri kullanan geliştiricilerle uzaktan işbirliği yapıyorum. Sabit kodlu dosya yollarına sahip 'config.rb 'kullanılması, platform algılama sorununu ortadan kaldırmaz. – femmestem
Yeterince adil. Hardcoded yolları demek istemedim. Bu dosyanın içeriğini değiştirmek veya env değişkenini ayarlamak için ortak çalışanlarınızı zorlayabilirsiniz. Sonuçta, onlar müşteri değil, geliştiricilerdir. Ve IMHO, bu gerçekten cilalanması gereken bir kod parçası değil. Gösterdiğiniz gibi platform algılama zaten hiçbir şeyden daha iyi. – mudasobwa