1

これは、答えを見つけるのが驚くほど難しい質問でした。

(いくつかの質問は、少なくとも似たようなことを尋ねているようです:

IRB の Ruby コンソールの代替 (Windows)

Ruby 用の IDLE のような対話型コンソール

推奨される Ruby インタラクティブ コンソール

しかし、私はそれらのどれからも必要なものを得ることができませんでした.)

また、使用すべき正確な用語が少しわからないので、ここでは具体的に説明します。

Python シェルで IDLE を使用しているとします。

IDLE のテキスト エディタ ウィンドウの 1 つが開いていて、その中にスクリプト "example.py" があります。

F5 キーを押すと、Python シェルが起動し、"example.py" のすべての行をシェルに 1 行ずつ入力した場合とまったく同じことを行います。

機能的には、すべての行を自動的に入力し、画面を乱雑に表示することはありません。(また、これを行うたびにシェルを新しい状態にリセットしますが、現時点ではそれは重要なポイントではありません。シェルの状態をリセットしないオプションがあると便利な場合があります。 )

その結果、シェルで遊ぶことができるようになり、実行したばかりのスクリプトに含まれていたすべての関数や変数などがすべてそこにあるということになります。

しかし、irbでは...

同じ効果を得るにはどうすればよいですか?

たとえばirb example.rb、Windows コンソールで (同等の Ruby スクリプトを) 試してみたところ、文字どおり 1 行ずつ irb に入力され、画面に吐き出され、自動的に Windows コマンド プロンプトに戻ります。

(それが私が望んでたように機能したとしても(ここで私が望むことをもっと行うオプションフラグのある引数がありますか?)、テキストエディターからコンソールウィンドウにaltキーを押しながら移動する必要があります、コマンドとファイル名を入力します。これは、単に F5 を押すよりも劣ります。)

私が言いたいことを明確にしていることを確認するために、具体的な例を次に示します。

1) 「example.py」の Python スクリプト 2) シェルで実行し、シェルで何かを実行する例 (実際のシェルからコピーして貼り付けたもの)

3) その Python スクリプトと同等の Ruby スクリプト 4) repl.it にある不器用で遅いオンライン インタープリターで実行し、その irb シェルでまったく同じことを実行する例(再度、コピーして貼り付けます)

1) example.py :

x = "some value you don't want to keep reassigning to this variable"
y = "some other value like that"

def some_function(var):
    return "do something complicated with `"+var+"`"


print("example.py just ran")

2) Python シェル:

Python 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
example.py just ran
>>> x
"some value you don't want to keep reassigning to this variable"
>>> y
'some other value like that'
>>> print(some_function(x))
do something complicated with `some value you don't want to keep reassigning to this variable`
>>> x = "a frog"
>>> print(some_function(x))
do something complicated with `a frog`
>>> print("gonna run example.py again")
gonna run example.py again
>>> ================================ RESTART ================================
>>> 
example.py just ran
>>> print("x is back to: `\""+x+"\"`")
x is back to: `"some value you don't want to keep reassigning to this variable"`

3) example.rb :

x = "some value you don't want to keep reassigning to this variable"
y = "some other value like that"

def some_function var
        "do something complicated with `#{var}`"
end

puts "test.rb just ran"

4) repl.itのオンライン Ruby irb シェルのこと:

Ruby 1.8.7 (2008-05-31 patchlevel 0) [x86-linux]
[GCC 4.2.1 (LLVM, Emscripten 1.5, Emscripted-Ruby)]

test.rb just ran
=> nil
   x
=> "some value you don't want to keep reassigning to this variable"
   y
=> "some other value like that"
   puts some_function x
do something complicated with `some value you don't want to keep reassigning to this variable`
=> nil
   x = "a frog"
=> "a frog"
   puts some_function x
do something complicated with `a frog`
=> nil
   puts "gonna run this script again..."
gonna run this script again...
=> nil

test.rb just ran
=> nil
   puts "x is back to: `\"#{x}\"`"
x is back to: `"some value you don't want to keep reassigning to this variable"`
=> nil
4

2 に答える 2

1

これまでに見つけた最良の答えは、 pryをインストールすること(gem install pryコマンド プロンプトで入力) のようです。

と入力してスクリプトを実行pry scriptname.rbし、例外が発生した場合、自動的にインタラクティブになります。

require 'pry'さらに、先頭のスクリプト内に追加すると、任意binding.pryの時点でスクリプトを挿入できます。

スクリプトを実行すると (単にscriptname.rbコマンド プロンプトで入力するだけで)、実行が停止し、その時点で pry で対話型になります。

^D (つまり、ctrl-d) を押すと、実行が再開されます。

エディター (Notepad++ など) で F5 キー (など) を押したときにコマンド プロンプト ウィンドウでスクリプトを実行するのは、明らかにややこしい作業です。このようなソリューションには、まだ微調整する方法がわからないいくつかの問題があります。

そのため、現在、コマンド プロンプト ウィンドウに Alt キーを押しながら移動し、そこからスクリプトを実行しています (ここでも、正確に何が必要で、スクリプトのどこかに a を配置するかどうかに応じて、pry scriptname.rbまたはを入力します。上向き矢印のリコール、タブ補完、何とか何とか。)scriptname.rbbinding.pry

私はそれを理解することに取り組んでいます。

于 2013-04-25T08:38:53.500 に答える