我正在用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. 如何暴露無法直接暴露,具有相同名稱的C++函數
- 3. 如何將java對象暴露給LuaJ
- 4. 暴露數據對象的警告
- 5. 程序如何使用以不同語言編寫的文件?
- 6. jquery暴露覆蓋函數
- 7. 暴露C++函數到Python
- 8. 使用閉包編譯器在對象上暴露動態創建的函數
- 9. 暴露一個COM對象的要求
- 10. 暴露嵌套對象的RIA服務
- 11. java屬性 - 暴露還是不暴露?
- 12. 如何暴露語義配置
- 13. 以不同的編程語言重載
- 14. 如何編寫wstring行包含不同語言的文件?
- 15. 以編譯語言編寫的插件
- 16. 將C#對象暴露給Lua腳本
- 17. 暴露或隱藏依賴對象?
- 18. 如何爲該語言的某種語言編寫編譯器?
- 19. 如何在c99庫中使用但不暴露內聯函數?
- 20. 如何IHttpHandler接口暴露的HttpContext對象
- 21. 如何將對象暴露給我的所有Struts2視圖?
- 22. 如何不暴露python中的方法
- 23. 用不同語言編寫的不同應用程序如何交互?
- 24. 鈦合金控制器構造函數不暴露函數
- 25. 不同編程語言的隨機數
- 26. 如何暴露ES6塊內的數據?
- 27. CXF暴露抽象類
- 28. 如何訪問Postgresql c語言函數中的大對象?
- 29. 不同的編程語言如何處理除以0?
- 30. 如何在耶拿獲得不同語言的對象?