我正在用ruby編寫一個應用程序,並想訪問一些用其他語言編寫的遺留代碼(php)。不幸的是,這個遺留代碼沒有HTTP API,但它生活在同一個文件系統上。我的想法可能不是構建一個API,或者用ruby重寫所有代碼,可能有一些聰明的方法可以公開這些PHP函數,以便ruby可以訪問它們。你有什麼想法或方法可以用來完成這個嗎?如何暴露以不同語言編寫的對象/函數?
0
A
回答
2
假設你的意思的代碼是在調用命令行,即使用backticks或%x
操作者或更復雜的system
,popen
和popen3
命令讓你執行代碼分離塊和收集結果。
例如在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」 以獲取更多信息。
0
我能想到的唯一合理的解決方案是重寫php的塊或寫一個http api。
如果你想在一個更冒險的路線走上你可以看看編譯PHP到前男友(Convert a PHP script into a stand-alone windows executable),然後通過反引號,系統,或等執行它們...
它可能是最好的改寫它雖然。
相關問題
- 1. 如何編寫和不同的語言
- 2. 如何將對象傳遞給暴露的luaj函數?
- 3. 如何暴露無法直接暴露,具有相同名稱的C++函數
- 4. 以不同語言編寫notepad ++插件
- 5. 如何將java對象暴露給LuaJ
- 6. 暴露數據對象的警告
- 7. 程序如何使用以不同語言編寫的文件?
- 8. 通過服務暴露數據對象?
- 9. 在包中暴露函數
- 10. jquery暴露覆蓋函數
- 11. 暴露C++函數到Python
- 12. 使用閉包編譯器在對象上暴露動態創建的函數
- 13. 暴露嵌套對象的RIA服務
- 14. 暴露窗口對象的文檔
- 15. Spotify的API 1.0 - 暴露選手對象
- 16. 暴露一個COM對象的要求
- 17. Angular中暴露的Class對象
- 18. java屬性 - 暴露還是不暴露?
- 19. 應與不同語言編寫
- 20. 如何暴露語義配置
- 21. 以不同的編程語言重載
- 22. 以編譯語言編寫的插件
- 23. 如何編寫wstring行包含不同語言的文件?
- 24. 如何爲該語言的某種語言編寫編譯器?
- 25. 通過「視圖」界面暴露對象
- 26. 暴露或隱藏依賴對象?
- 27. 將C#對象暴露給Lua腳本
- 28. 如何在c99庫中使用但不暴露內聯函數?
- 29. 如何將對象暴露給我的所有Struts2視圖?
- 30. 如何IHttpHandler接口暴露的HttpContext對象