🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

775閲覧

ruby on railsのgem、ライブラリ管理について

rm11_j

総合スコア4

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/02/19 06:21

わからないこと

Ruby on railsにおけるジェム・ライブラリの管理方法全般について。以下わからないことの詳細を記述します。

①gemのインストール回数・管理場所

例えばbundlerというgemがありますが、このgemは一度インストールしたら以降そのマシンでは自由にbundle installコマンドは使用できるのでしょうか?
実際rails newでアプリケーションを作成すると既にgemfile,gemfile.lockが存在しますが、これは使用しているマシンにgem install bundlerでbundlerがインストールされているためでしょうか?
もしそうならばgemはアプリケーションごとではなく、マシンに対してインストールされているということで、アプリケーションAで使用できるライブラリは当然アプリケーションBでも使用できるということですか?

インストール不要のgem

例えばbimdecimalというライブラリを以前使用しましたが、これはrequire "bigdecimal"と記述するだけで使用できました。
これはrubyのリファレンスマニュアルに記述されていたので、このgemはRubyに組み込まれているものであり(組み込みライブラリではないのでrequireの記述は必要だが)、それらはgem installでインストールしなくても、rubyをインストールした時点で同時にインストールされているのでrequireと記述するだけで使用可能ということなんでしょうか?
その場合、もしrubyの標準ライブラリ(言い方が違ってたらすみません)ではなく、一般の方が作成したライプラリを使用する場合、インストールは必要ということになると思いますが、その時はコマンドでインストールできるのですか?

初学者ゆえ雑な質問になってしまいましたが、もし分かる方がいらっしゃったら回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

例えばbundlerというgemがありますが、このgemは一度インストールしたら以降そのマシンでは自由にbundle installコマンドは使用できるのでしょうか?

実際rails newでアプリケーションを作成すると既にgemfile,gemfile.lockが存在しますが、これは使用しているマシンにgem install bundlerでbundlerがインストールされているためでしょうか?

いつからか忘れましたが、Ruby自体にBundlerが標準でセットされるようになっています。そうでない古いバージョンのRubyでも、gem install bundlerとすればbundleコマンドを使えるようになります。

もしそうならばgemはアプリケーションごとではなく、マシンに対してインストールされているということで、アプリケーションAで使用できるライブラリは当然アプリケーションBでも使用できるということですか?

いえ、これは考え方が正反対で、Gemfileを使うアプリケーションでは、Gemfileに書かれたGemしか使えません(余計なものを読み込んで干渉する、という事態を避けるために、そのような動作をします)。

これはrubyのリファレンスマニュアルに記述されていたので、このgemはRubyに組み込まれているものであり(組み込みライブラリではないのでrequireの記述は必要だが)、それらはgem installでインストールしなくても、rubyをインストールした時点で同時にインストールされているのでrequireと記述するだけで使用可能ということなんでしょうか?

はい、default gemといいます。

その場合、もしrubyの標準ライブラリ(言い方が違ってたらすみません)ではなく、一般の方が作成したライプラリを使用する場合、インストールは必要ということになると思いますが、その時はコマンドでインストールできるのですか?

一般に、Ruby標準添付以外のgemをdefault gemにはすべきでありません。アプリケーションごとにGemfileから入れるのが適切です。

投稿2021/02/19 06:26

maisumakun

総合スコア145967

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/02/19 06:28

なお、上の回答は、RailsなどBundlerとGemfileを使った管理をするアプリケーションを前提としています。 書き捨てのプログラムなど、Bundlerなしで直接Rubyを実行する場合は話が違ってきます。
rm11_j

2021/02/20 23:54 編集

回答ありがとうございました!私は初めてここで質問しましたがこんなにわかりやすい回答が得られたことに驚いています。 追加で3つお聞きしたいのですが、①default gemにするとは、「ターミナルからgem installでgemをインストールした場合にデフォルトのgemになる」ということでしょうか?その場合gemfileを使用しないアプリケーションでは初期のdefault gem + ターミナルからインストールしたgemが使用可能ということでしょうか? ②gemfileに記述されたgemのみ使用可能というのは、default gemも記述されない場合は使用不可ということになりますか?私はrails newで作成した時に入っているgemfileしかみたことがないのですが、そのgemfileは元々たくさん記述がしてありますが、あれがdefault gemを使用可能にするために記述されていたということなのでしょうか? ③bundle installとはrailsアプリのディレクトリで実行しgemfileに記述されたgemをインストールするもので、この方法でインストールされたgemは他のアプリでは使用不可(default gemにはならない)ということでしょうか?つまりホームディレクトリ等のgemfileと無関係のディレクトリで実行するコマンドではないという認識で会っていますか?
maisumakun

2021/02/21 00:00

> ①default gemにするとは、「ターミナルからgem installでgemをインストールした場合にデフォルトのgemになる」ということでしょうか? 違います。特殊な操作が必要です。 > ②gemfileに記述されたgemのみ使用可能というのは、default gemも記述されない場合は使用不可ということになりますか? default gemは書かなくても有効です(ただし、Gemfileで同じgemの別バージョンが指定された場合はそちらが使われます) > ③bundle installとはrailsアプリのディレクトリで実行しgemfileに記述されたgemをインストールするもので、この方法でインストールされたgemは他のアプリでは使用不可(default gemにはならない)ということでしょうか? インストール方法によってはシステム全体のgemと同じところにインストールされることはありますが、default gemとはなりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問