`Irb`、` Bundle Exec Irb`、 `Bundle Console`、` Rails Console`の違いは何ですか?
RubyまたはRailsコンソールを起動する方法はたくさんあります:irb
、bundle exec irb
、bundle console
、およびrails console
最も一般的なもののいくつかです。それらは似ているように見えますが、それぞれ動作が少し異なります。
これらの違いがわからない場合は、いくつかの問題が発生します。 ActiveRecordモデルをデータベースに接続できない可能性があります。または、ファイルが必要で、間違ったバージョンを取得します。または、利用可能だと思っていたライブラリは利用できませんでした。
適切なコンソールを適切なタイミングで使用していることをどのように確認しますか?
irb
単なるRubyコンソールです。 Gemfile
は関係ありません 。コアRubyライブラリ以外は何もロードしません。他に必要なものは、require
する必要があります 。
gem install
を使用してgemをインストールする場合 、irb
内で要求できます 。 bundle install
を使用した場合 、あなたはかもしれない Bundlerがどこに置いたかに応じて、それを要求することができます。 (bundle install --path
のようなものを実行すると、BundlerはRubyのgemパスの外にgemを配置することがあります。 またはbundle install --deployment
。
irb
以降 Gemfile
を無視します 、Gemfile.lock
内のバージョン 関係ありません。 irb
見つけた宝石の最新バージョンをロードします:
~/Source/testapps/consoles[master *] jweiss$ gem list rails
*** LOCAL GEMS ***
rails (4.2.0.beta2, 4.2.0.beta1, 4.1.5, 4.1.1)
~/Source/testapps/consoles jweiss$ cat Gemfile | grep rails
gem 'rails', '4.1.5'
~/Source/testapps/consoles jweiss$ irb
irb(main):001:0> require 'rails'
=> true
irb(main):002:0> Rails.version
=> "4.2.0.beta2"
予期しない場合、これによりコードに非常に奇妙な問題が発生する可能性があります。
irb
コアRubyファイルをいじっている場合に最適です。高速で、セットアップは必要ありません。
ただし、Gemfile
を使用する場合 コンソールを実行するときは、bundle exec irb
を実行します 代わりは。 bundle exec
irb
を許可します Bundlerが知っているgemをロードし、のみ Bundlerが知っている宝石:
~/Source/testapps/consoles jweiss$ bundle exec irb
irb(main):001:0> require 'rails'
=> true
irb(main):002:0> Rails.version
=> "4.1.5"
探していたRailsバージョンを正確に入手しました。
bundler / setup vs Bundler.require
bundle console
はいつ実行しますか bundle exec irb
の代わりに ?
bundle exec irb
Gemfile.lock
内のgemのみを要求できるように設定します 。
bundle console
さらに一歩進んでいます。 bundle console
を実行する場合 、Gemfile
にgemを要求する必要はありません 。それらはすでにあなたに必要です:
~/Source/testapps/consoles jweiss$ bundle exec irb
irb(main):001:0> Rails.version
NameError: uninitialized constant Rails
from (irb):1
from /usr/local/bin/irb:11:in `<main>'
~/Source/testapps/consoles jweiss$ bundle console
irb(main):001:0> Rails.version
=> "4.1.5"
Bundler.require
を呼び出した場合にも、この動作が発生する可能性があります bundle exec irb
内 コンソール。 Gemfile
内の任意のgem require: false
とマークされていない 自動的に必要になり、余分な作業なしで使用できるようになります。 Gemfile
を使用してプロジェクトに取り組んでいる場合 、それは信じられないほど便利です。
考慮すべき違いがまだ1つあります。bundle console
およびrails console
。
~/Source/testapps/consoles jweiss$ bundle console
irb(main):001:0> Rails.application
=> nil
~/Source/testapps/consoles jweiss$ rails console
Loading development environment (Rails 4.1.5)
irb(main):001:0> Rails.application
=> #<Consoles::Application:0x007f8db4d5ab30 @_all_autoload_paths=["/Users/jweiss...
bundle console
たくさんの宝石が必要です。 rails console
これらのgemが必要ですが、Rails環境全体をロードし、自動ロードを設定し、アプリケーションを初期化し、完全なRails環境を試してみることができます。
Railsコンソールのようなものはbundle console
から入手できます。 config/environment.rb
が必要な場合 :
~/Source/testapps/consoles jweiss$ bundle console
irb(main):001:0> Rails.application
=> nil
irb(main):002:0> require_relative 'config/environment.rb'
=> true
irb(main):003:0> Rails.application
=> #<Consoles::Application:0x007fd264f0b7c8 @_all_autoload_paths=["/Users/jweiss...
それぞれ、もう少し複雑です
要約すると:
-
irb
基本的なRubyコンソールです。Gemfile
は無視されます 、およびコアRubyクラスのみがrequire
なしでアクセス可能です -それらを。 BundlerがRubyGemsのロードパスの外にインストールするgemを簡単にロードすることはできません。 -
bundle exec irb
irb
のようなものです 、bundler/setup
も必要な場合 。Gemfile.lock
にあるgemのみを簡単に要求できます 、ただし、Bundlerがどこに置いても、これらの宝石をロードできます。 -
bundle console
bundle exec irb
のようなものです 、Bundler.require
も呼び出した場合 。Gemfile
内のすべてのgem 、require: false
とマークされているものを除く 、それらを必要とせずに使用することができます。独自のgemを作成する場合や、Rails以外のコードで作業する場合に非常に便利です。 -
rails console
bundle console
を実行するようなものです Railsアプリ内で、config/environment.rb
も必要な場合 。 Railsアプリ全体で遊ぶことができ、自動ロードとデータベース接続が機能し、すべてが期待どおりに接続されます。 Railsアプリで作業している場合、これは最も便利な種類のコンソールです。
これらのコンソール間にはそれほど多くの違いはありません。そして、これらの違いのほとんどはそれほど大きくはありませんが(ああ、このファイルは必要ありませんか?もっと必要です!)、何が起こっているのかわからない場合、他の人は完全に腹立たしくなります。 (なぜこれが間違ったバージョンのRakeを再度ロードするのですか!?)
ただし、これらの各コンソールの背後にある考え方を知っていれば、適切な種類のコンソールを適切なタイミングで使用できるようになります。そして、必要なすべてのライブラリは、必要なときに近くにあります。
-
OneDrive と OneDrive for Business の違いは?
Microsoft の OneDrive クラウド ストレージ サービスを使用すると、どこにいてもファイルにアクセスできます。同社は、実際には 2 つの異なるが名前が似ている OneDrive のバージョンを維持しています。 OneDrive を使用するか、別の OneDrive for Business を使用するかは、クラウドに保存する内容と、それにアクセスする方法によって異なります。 「OneDrive」は、マイクロソフトのコンシューマ向けクラウドです。個人の Outlook アカウントに表示され、Windows 10 に自動的にリンクされます。OneDrive は、自分自身や友人や家
-
Windows 10 Home と Pro の違いは?
新しいデバイスを検討している場合でも、自分で Windows を購入する場合でも、Windows 10 Home と Pro の違いに注意することをお勧めします。どちらも表示されていない場合は、製品に Windows 10 Home が付属していると想定してください。 「ホーム」エディションは「Windows 10 Standard」というより適切なタイトルにすることができるという点で、ネーミングはおそらく少し役に立たない.これは、価格が 1,000 ポンド未満のほとんどの Windows デバイスに搭載されており、オペレーティング システムのコア機能がすべて含まれています。 Pro ディ