PythonからRubyのメソッドを呼べるようにするライブラリを作った。メソッドチェーンやイテレータなどもある程度自然に使えるので紹介する。 作った経緯 科学技術計算のジョブ管理をするRailsアプリを開発しており、RubyのAPIで挙動を制御できる様になっている。しかし、科学技術計算の分野の人はPythonユーザーが多いのでRubyではなくPythonのAPIがほしいというリクエストが多かった。 何ができるか? 例えば、以下のようなRubyのコードがあるとする。 class MyClass def m1 "m1" end def m2(a,b) "m2 #{a} #{b}" end def m3(a, b:) "m3 #{a} #{b}" end def m4(a) Proc.new { "m4 #{a}" } end def m5 enum = Enumerator.new{|y| (
![200行でできるPythonからRubyのメソッドを呼ぶ仕組み - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/398412bbd56d13b962d67fb6933697a99824c684/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9MjAwJUU4JUExJThDJUUzJTgxJUE3JUUzJTgxJUE3JUUzJTgxJThEJUUzJTgyJThCUHl0aG9uJUUzJTgxJThCJUUzJTgyJTg5UnVieSVFMyU4MSVBRSVFMyU4MyVBMSVFMyU4MiVCRCVFMyU4MyU4MyVFMyU4MyU4OSVFMyU4MiU5MiVFNSU5MSVCQyVFMyU4MSVCNiVFNCVCQiU5NSVFNyVCNSU4NCVFMyU4MSVCRiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9NTgzY2E2ODRhZTEyMzE3NTc5NGMyNmYyMTJkNGNhYmY%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB5b2htJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0wMjkwODNkOGRlOTg2YzIzYTJkYjNmYWE1MWRmMTYwOA%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Dcac5fb6ca57c3e4045ecdbf5d690edd4)