gems フォルダーは固有ですか?
概要
私には趣味として取り組んでいる古い Ruby on Rails プロジェクトがありますが、Rspec テストを実装したことはありません。
今、そうしたいと思って、「Effective Testing with Rspec 3」という良書を読んでいます。 Rspec ブックと rspec gem で使用されているテクニックは rspec-rails gem にも適用できると思います。なぜなら、私は rspec.info から rspec ブックを入手したからです。rspec.info では、rspec-rails とその依存関係に関するドキュメントのみが提供されています。 rspec-rails は RoR プロジェクトなどにサブフォルダーとファイルを自動作成すると思います。テストの実装にどれを使用するかは、現時点ではわかりません。
とにかく、私はどうやら古い趣味のプロジェクトディレクトリにrspecをインストールしているようです(プロジェクトディレクトリからのrspec -v)
3.5.4
そして、rspec-railsはプロジェクトGemfile内のGemでもあり(古いバージョンですが、本を書いている時点では最新です)、Gem list –localによると、これもrspecと一緒にインストールされますが、「command」も取得します古いプロジェクト ディレクトリ内から rspec-rails -v を使用して、見つかりませんでした。
そこで、rspectest という新しいフォルダーを作成しました。このフォルダーを使用して、本書の例と手順を実装します。ただし、第 1 章の指示に従ってください。
$ gem install rspec -v 3.6.0
Successfully installed rspec-support-3.6.0
Successfully installed rspec-core-3.6.0
Successfully installed diff-lcs-1.3
Successfully installed rspec-expectations-3.6.0
Successfully installed rspec-mocks-3.6.0
Successfully installed rspec-3.6.0
6 gems installed
同様に、新しい rspectest フォルダーに rspec をインストールしようとしましたが、次のエラーが発生します。
ERROR: Could not find a valid gem 'rspec' (= 3.5.4) in any repository
ERROR: Possible alternatives: r_spec
私が尋ねる理由は、7 ページで、例の結果を確認するためにプロジェクト ディレクトリからコマンド rspec を実行するように求められており、次の結果が得られるからです。
Command 'rspec' not found, but can be installed with:
sudo apt install ruby-rspec-core
したがって、このコマンドは、ディレクトリ (?) 内から入力された場合にのみ、この特定の新しい rspec テスト フォルダーから gem へのアクセスを許可すると想定する必要があります。
sudo apt install ruby-rspec-core
また、異なるバージョンの gem がローカルにインストールされている場合に備えて、異なるプロジェクト フォルダーの gem を台無しにすることはありません。これが gemfile などのポイントであると思います。
…それについては大体わかったと思います、申し訳ありません。上記のコマンドが機能しない場合を除き、これを削除します。編集: これらの質問に対する回答は保留中です:
私もそうではないと思いますが、本の例がすぐに機能しない理由を明確にしておくとよいでしょう。実験を始めるときに、リポジトリを再インストールしたり、ドライブを消去したりする必要があるのが嫌いです (特に、それが 4 ページ目だけの場合)
解決策
したがって、あなたの質問は少し混乱していますが、マシン上で gem がどのように管理されるかについての一般的な概要を説明します。
通常、Rails プロジェクトには、Ruby のバージョンとプロジェクトに必要な gem を定義する Gemfile があります。場合によっては、「gem ‘aws-ses-v4’, ’~> 0.8.1」のように特定のバージョンも指定されることがあります。
また、Ruby 管理を処理するには、rvm または rbenv (私の好み) のようなものを使用することをお勧めします。これは、コンピュータ上に複数のバージョンの Ruby がある場合に便利です。 rbenv の場合、Ruby のバージョンを設定するために使用する .ruby-version ファイルがあり、そのプロジェクト ディレクトリ内でコマンドを実行すると、rbenv はそのファイルをチェックして、使用している Ruby のバージョンと、どこで検索するかを決定します。宝石など
これを使用していない場合は、ターミナルで使用している Ruby のバージョンを手動で設定する必要があります。おそらく、複数の Ruby バージョンがあり、そのうちの 1 つに rspec がインストールされているのではないかと思われます。他はそうではありません。
バンドラー以外には gem install を手動で実行し、その他すべてには Gemfile とバンドル インストールを使用する必要はまったくありません。
gem install コマンドを手動で実行している場合は、現在使用している Ruby バージョンのローカル ディレクトリ内に gem がドロップされます。これは、使用しているコンピュータの種類によって異なります。私が rbenv を使用している場合、~/.rbenv/versions/2.3.8/lib/ruby/gems/2.3.0/gems ですが、デフォルトでどこにあるのかあまりわかりません。