2018/02/20(火) [n年前の日記]
#2 [dxruby][ruby] RubyスクリプトがOpal上で動いてるかどうかを判別する方法ってあるのかな
今現在、DXRuby と DXOpal の両方で、最低限の修正で動くようなスクリプトソースを書いているつもりではあるのだけれど。そのRubyスクリプトソースが、Opal(DXOpal)上で動いているのか、ローカル(DXRuby)で動いてるかを判別する方法があれば、一々ソースを修正して動かさなくても済みそうだなと思えてきたわけで。
しかし、そんな方法はあるのだろうか…。
require 'opal' がされてるかどうかを判別できればいいのかな? でも、どうやって判別すればいいのだろう。もしかして、名前が定義されているかどうかを調べればいいのだろうか。
ググってみたものの、検索キーワードがマズいのか、それらしい情報には遭遇せず。Ruby で、「既に require 'hoge' されてるか調べる」ってのは、どうやるんだろうなあ…。
しかし、そんな方法はあるのだろうか…。
require 'opal' がされてるかどうかを判別できればいいのかな? でも、どうやって判別すればいいのだろう。もしかして、名前が定義されているかどうかを調べればいいのだろうか。
ググってみたものの、検索キーワードがマズいのか、それらしい情報には遭遇せず。Ruby で、「既に require 'hoge' されてるか調べる」ってのは、どうやるんだろうなあ…。
◎ 2018/03/01追記。 :
コメント欄でDXOpal作者様から判別方法を教えていただけました。ありがとうございます。助かります。
動作確認してみたけれど、ちゃんと動いてる模様。一々ファイルを修正しなくても動作確認ができるので、かなり楽になりそう。ありがたや…。
_constant Object::RUBY_ENGINE (Ruby 2.5.0)
if RUBY_ENGINE == "opal" # DXOpal else # DXRuby endまたは、
if RUBY_ENGINE == "ruby" # DXRuby else # DXOpal endこんな感じかしら。
動作確認してみたけれど、ちゃんと動いてる模様。一々ファイルを修正しなくても動作確認ができるので、かなり楽になりそう。ありがたや…。
_constant Object::RUBY_ENGINE (Ruby 2.5.0)
RUBY_ENGINE -> Stringこんな定数があったのか…。勉強になった…。
Ruby処理系実装の種類を表す文字列。
この記事へのツッコミ
- Re: RubyスクリプトがOpal上で動いてるかどうかを判別する方法ってあるのかな by yhara 2018/02/22 18:19
- RUBY_ENGINE == "opal" でいけますね (CRubyだと"ruby"になります)。
[ ツッコミを読む(1) | ツッコむ ]
以上です。