4

jupyter ノートブックで iruby を使用していますが、カーネルは期待どおりに動作し、あらゆる種類の ruby​​ 構文を受け入れています。

残念ながら、%%bash コマンドはエラーになります。そのため、私のノートブックではコンソール コマンドを使用できません。基本的な python カーネルに戻すと、%%bash コマンドは期待どおりに機能します。

bash コマンドが iruby カーネルで動作していることをどのように達成できますか? インストールまたは設定を忘れたものはありますか?

Ubuntu 20.04 で次の設定を使用します。

また、rvm を使用して Ruby のバージョンを管理しています。

基本設定

sudo apt install python3-pip python3-dev
sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv
pip install jupyter

irubyのインストール

gem install ffi-rzmq
gem install iruby --pre
iruby register --force

セットアップと開始

rvm use ruby-2.7.2
mkdir ~/ruby_notebook

virtualenv ~/ruby_notebook/ruby_env
source ~/ruby_notebook/ruby_env/bin/activate

jupyter notebook --notebook-dir ~/ruby_notebook

しかし、次のエラーが発生します。 ここに画像の説明を入力

bashコマンドを使用できるように、この問題を解決する方法はありますか?

======== アップデートと解決策 ======

Engineermnky のおかげで解決策が見つかりました。

Pythonノートブックのように、次の出力を達成したい:

python bash コマンド

コマンド%x(ls -la)を使用すると実行されますが、出力は次のように異なります

ここに画像の説明を入力

したがって、正しい出力を得るために、次を追加しました。

%x(ls -la).each_line(chomp: true){|s| p s}

これは出力に近いですが、ノートブックの実行文字列出力が続きます。

ここに画像の説明を入力

したがって、私の最終的な解決策は、実行コマンドの複雑さを軽減するために、現在ノートブックの冒頭でメソッドを使用しています。

def execute_console(input)
  %x(#{input}).each_line(chomp: true){|s| p s}
  return nil
end

このようにして、次のようなレールを使用してノートブックで特別なコマンドを実行できます

rails routes

execute_console('rails routes')

出力は、文字列出力なしで期待どおりです。

ここに画像の説明を入力

構文エラーも期待どおりに出力されます。

4

1 に答える 1