人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ruby の pry コマンドでの Ctrl+C の挙動について

■以下が希望する動作
$ cat /etc/redhat-release
CentOS release 5.8 (Final)
$ pry
[1] pry(main)> Interrupt: ← Ctrl+C を押すたびに以下の様に行が増えていく
[2] pry(main)> Interrupt:
[3] pry(main)> Interrupt:
[4] pry(main)>

■なんとかしてほしい
$ cat /etc/redhat-release
CentOS release 6.4 (Final)
$ pry
[1] pry(main)> ^C ← ここで Ctrl+C を何回押しても画面変化なし。その後 Enterすると以下の行が表示される

[2] pry(main)>

※ 一応、linux の stty コマンド等は調べてみましたが原因究明に至らず...

●質問者: 匿名質問者
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 匿名回答1号

vagrant で CentOS 5.8 と CentOS 6.4 の環境を用意して試してみましたが、どちらも

$ pry
[1] pry(main)>
[2] pry(main)>
[3] pry(main)>
[4] pry(main)>
[5] pry(main)>

のようにCtrl+C を押すたびに行が増えていきましたが、「Interrupt:」とは出ませんでした。


試したbox:
https://dl.dropbox.com/u/7196/vagrant/CentOS-56-x64-packages-puppet-2.6.10-chef-0.10.6.box
https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box


質問者から

別の Linux マシンから試すと「Interrupt:」の文字は出ない&押す度に増えて行きました。

Ctrl+C 自体は機能しているのですが、先に書いた通り画面上の見た目に反応してくれません


2 ● 匿名回答1号

機能していて表示の問題だけだとすると、どこかでバッファリングされていて止まっているのだと思います。
pry で STDOUT.sync = true にしてみるなど、pry から端末までの間のバッファリングしてそうな部分を順番に調べていくしかなさそうです。


匿名質問者さんのコメント
STDOUT.sync = true にしてみましたが変化なしです。 なんとなくですが、readline とか関係している!?
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ