ruby でアプリケーションを作成しており、別の言語 (php) で作成されたレガシー コードにアクセスしたいと考えています。残念ながら、このレガシー コードには HTTP API がありませんが、同じファイル システム上に存在します。私は、API を作成したり、すべてのコードを Ruby で書き直したりする代わりに、これらの PHP 関数を公開して Ruby がアクセスできるようにする賢い方法があるのではないかと考えました。これを達成するために使用できるアイデアやアプローチはありますか?
2 に答える
2
バックティックまたは%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、exec、system と %x() またはバックティックの違い」を参照してください。
于 2012-07-18T18:44:33.383 に答える
0
私が考えることができる唯一の合理的な解決策は、php のチャンクを書き直すか、http API を作成することです。
より冒険的なルートに着手したい場合は、php を exe にコンパイルする方法 ( PHP スクリプトをスタンドアロンの Windows 実行可能ファイルに変換する) を見てから、バッククォート、システムなどを介してそれらを実行することができます...
書き直したほうがいいかもしれませんが。
于 2015-02-07T04:49:31.510 に答える