13

私は現在MichaelHartlのRoRチュートリアルを行っていますが、Spork and Guardを実行しようとすると、第3章で立ち往生しています。テストを実行しようとすると、次のようになります。

/bin/sh: rspec: command not found

はい、答えを探しましたが、RubyTest.sublime.settingsファイルがどこにあるかわからないため、編集方法がわかりません。誰かが私のエラーを修正する方法について私を助けることができますか?

これは私のユーザーfodlerのRubytest.sublime.settingsファイルです

{
  "erb_verify_command": "bundle exec erb -xT - {file_name} | ruby -c",
  "ruby_verify_command": "bundle exec ruby -c {file_name}",

  "run_ruby_unit_command": "bundle exec ruby -Itest {relative_path}",
  "run_single_ruby_unit_command": "bundle exec ruby -Itest {relative_path} -n     '{test_name}'",

  "run_cucumber_command": "bundle exec cucumber {relative_path}",
  "run_single_cucumber_command": "bundle exec cucumber {relative_path} -l{line_number}",

  "run_rspec_command": "bundle exec rspec {relative_path}",
  "run_single_rspec_command": "bundle exec rspec {relative_path} -l{line_number}",

  "ruby_unit_folder": "test",
  "ruby_cucumber_folder": "features",
  "ruby_rspec_folder": "spec",

  "ruby_use_scratch" : false,
  "save_on_run": false,
  "ignored_directories": [".git", "vendor", "tmp"],

  "hide_panel": false,

  "before_callback": "",
  "after_callback": ""
}
4

8 に答える 8

18

現在、RubyTest パッケージには、デフォルトで無効になっている「check_for_rvm」という構成オプションがあります。

~/.config/sublime-text-2/Packages/RubyTest/RubyTest.sublime-settingsファイルを編集してに設定できますtrue。これは、他に何もしなくてもうまくいきました。

更新: PackageControl を使用している場合は、単に更新するのではなく、RubyTest パッケージを再インストールする必要がある場合があります。

于 2013-01-16T12:28:52.477 に答える
12

崇高なプラグインは、rspecshell を使用してコマンドを実行しようとしています/bin/sh。ただし、シェルの環境に RVM がロードされていないため、コマンドが見つかりません。

そのため、rspec実行可能ファイルが配置されているフォルダーは、シェルの検索パス (PATH環境変数) にはありません。RVM は、gem に付属する実行可能コマンドを次のような場所にインストールします: " /home/your-user/.rvm/gems/ruby-1.9.3-p194@myproject/bin/" (実際のパスは、gemset、ruby のバージョン、および OS がユーザーのホーム ディレクトリを保存する場所によって異なります)

シンプルなソリューション

ここで述べたように... RVM を含むシェル環境 (つまり、プロジェクト ディレクトリ) から sublime を実行するだけで問題が解決する場合がありPATHます。ただし、これには毎回コマンド ラインからテキスト エディタを実行し、シェルの環境を保持する必要があります。

cd ~/src/my-ruby-project
subl .

多くの実験の後、RubyTest プラグインをrspec正しい RVM 制御環境 (バンドラー サポートあり) で強制的に実行する方法を見つけました。

バンドラーのサポートあり

私の~/.config/sublime-text-2/Packages/RubyTest/RubyTest.sublime-settingsファイルの内容は次のとおりです。

{
  "erb_verify_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec erb -xT - {file_name} | ~/.rvm/bin/rvm-auto-ruby -c",
  "ruby_verify_command": "~/.rvm/bin/rvm-auto-ruby -c {file_name}",

  "run_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path}",
  "run_single_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path} -n '{test_name}'",

  "run_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec cucumber {relative_path}",
  "run_single_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec cucumber {relative_path} -l{line_number}",

  "run_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec rspec {relative_path}",
  "run_single_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec rspec {relative_path} -l{line_number}",

  "ruby_unit_folder": "test",
  "ruby_cucumber_folder": "features",
  "ruby_rspec_folder": "spec",

  "ruby_use_scratch" : false,
  "save_on_run": false,
  "ignored_directories": [".git", "vendor", "tmp"],

  "hide_panel": false,

  "before_callback": "",
  "after_callback": ""
}

これは、グローバル gemset にバンドラーがあり、RVM がホーム ディレクトリにインストールされている限り機能します (が正しく評価されない場合、またはまたはが別の場所にある場合は、必要に応じてパスを調整~/.rvmbundlerrvm-auto-rubyします)。

gemsets を使用している場合は、プロジェクトの.rvmrcファイルに次のような行も追加する必要があります。

rvm use ruby-1.9.3-p327@your_project_gemset_name

バンドラーのサポートなし

これは、現在のruby​​ の@global gemset がインストールされていることを前提cucumberとしています。rspec

{
  "erb_verify_command": "~/.rvm/bin/rvm-exec $(~/.rvm/bin/rvm current) 1>/dev/null erb -xT - {file_name} | ~/.rvm/bin/rvm-auto-ruby -c",
  "ruby_verify_command": "~/.rvm/bin/rvm-auto-ruby -c {file_name}",

  "run_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path}",
  "run_single_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path} -n '{test_name}'",

  "run_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/cucumber {relative_path}",
  "run_single_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/cucumber {relative_path} -l{line_number}",

  "run_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/rspec {relative_path}",
  "run_single_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/rspec {relative_path} -l{line_number}",

  "ruby_unit_folder": "test",
  "ruby_cucumber_folder": "features",
  "ruby_rspec_folder": "spec",

  "ruby_use_scratch" : false,
  "save_on_run": false,
  "ignored_directories": [".git", "vendor", "tmp"],

  "hide_panel": false,

  "before_callback": "",
  "after_callback": ""
}
于 2012-11-26T05:29:30.140 に答える
5

私はこの同じ問題に何時間も苦労しました! Michael Hartl の「Ruby on Rails チュートリアル」を使用して、Sublime Text 2 内で rspec を実行することができませんでした。と言い続けていた

/bin/sh: rspec: command not found

最終的に、RubyTest パッケージが RVM の間違った場所を探していることに気付きました!

私の Mac では、RubyTest のパスは次のとおりです。/Library/Application Support/Sublime Text 2/Packages/Ruby Test

まず、RubyTest が RVM をシークするように、パラメーターを次のように変更しましRubyTest.sublime-settingsた。

"check_for_rvm": false,"check_for_rvm": true,

次に、 の Python コードrun_ruby_test.pyを掘り下げました。

BaseRubyTask クラス内の 151 行目に、RVM のパスが間違っていました。

rvm_cmd = os.path.expanduser('~/.rvm/bin/rvm-auto-ruby')

私はそれを完全な正しいパスに変更しました:

rvm_cmd = os.path.expanduser('/usr/local/rvm/bin/rvm-auto-ruby')

これがあなたのパスでない場合は、入力して正しいパスを見つけ、which rvm-auto-ruby代わりにそれを置き換えてください。

を保存run_ruby_test.pyした後、ターミナルにcd移動し、Rails アプリケーション ディレクトリに移動して実行しました。spork

最後に、static_pages_spec.rbSublime Text 2 で開きました。これですべてのテストが機能します。

于 2013-03-15T18:35:22.373 に答える
0

Bundlerの設定を参照してください:https ://github.com/maltize/sublime-text-2-ruby-tests

についてRubyTest.sublime-settingsは、sublime-test2 / Packages/RubyTestフォルダーのホームフォルダーの下にあるはずです。Ubuntuの場合は次のようになります。

~/.config/sublime-text-2/Packages/RubyTest
于 2012-09-07T20:38:05.380 に答える
0

Mac での Ruby のインストール中にrbenvを使用し、「rspec gem」のインストール後に「rspec」の実行に問題がある場合は、「-bash: rspec: command not found」のように、次のコマンドを入力して更新してください。

rbenv rehash
于 2016-04-28T10:37:46.450 に答える
0

ターミナルから「gem list -d rspec」を試してください。これにより、名前に rspec が含まれているすべての gem が出力されます。何もない場合は、「gem install rspec」を試してください。

ターミナルからrspecがインストールされていると仮定すると(「どのrspec」などで確認できます)、その場合、問題はSublimeの設定方法に関係している可能性があります。rspec がインストールされているパスに注意し、エディターのパスにそれがあるかどうかを確認します。

(すみません、特にSublimeには詳しくありません。)

于 2012-09-07T20:33:55.590 に答える
0

作業ディレクトリ内のターミナルから sublime を起動する必要があります: 例 - (ターミナルで作業ディレクトリに移動し、ターミナルから sublime を起動します)

cd rails/my_app_dir
subl .

于 2013-01-25T04:54:06.640 に答える
0

rbenv を使用している場合は、次の設定も使用できrubyTest.sublime-settingsます。

"check_for_rbenv": true
于 2014-09-24T17:12:43.770 に答える