2012-07-18 71 views
0

我正在用ruby編寫一個應用程序,並想訪問一些用其他語言編寫的遺留代碼(php)。不幸的是,這個遺留代碼沒有HTTP API,但它生活在同一個文件系統上。我的想法可能不是構建一個API,或者用ruby重寫所有代碼,可能有一些聰明的方法可以公開這些PHP函數,以便ruby可以訪問它們。你有什麼想法或方法可以用來完成這個嗎?如何暴露以不同語言編寫的對象/函數?

回答

2

假設你的意思的代碼是在調用命令行,即使用backticks%x操作者或更復雜的systempopenpopen3命令讓你執行代碼分離塊和收集結果。

例如在IRB:

irb(main):002:0> puts `ls` 
Desktop 
Documents 

裹在一個方法,它變成一種方式來調用外部程序:

def ls(s='') 
`ls #{s}` 
end 

ls() # => "Desktop\nDocuments\nDownloads\nLibrary\nMovies\nMusic\nPictures\nPublic\nSites\nVirtualBox VMs\nbin\ndevelopment\nlibsmi\nperl5\nproduction\nshare\ntest.data\ntmp\n" 
ls('M*') # => "Movies:\n\nMusic:\niTunes\n" 

請參閱 「Ruby, Difference between exec, system and %x() or Backticks」 以獲取更多信息。