質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

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

Q&A

解決済

1回答

2597閲覧

'bin/'もしくは'bundle exec 'の有無について質問です。

vitabrevisarsl1

総合スコア57

Ruby on Rails

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

0グッド

0クリップ

投稿2017/04/11 05:36

編集2017/04/11 05:40

・ products テーブルに director, detail, open_data という三つのカラムを追加するケース。

$ rails g migration add_director director:string detail:text ...編集して... $ bin/rake db:migrate

・まず二つ追加。Rails4.0 から rails や rake 等のコマンドを呼び出すためのスクリプトが bin ディレクトリに置かれたことから、Rails3.x 時代のようにbundle execをつけて呼び出す必要はないため、bin/としました。 次に下記を施行。

$ rails g migration add_open_date open_date:string ...編集して... $ rake db:migrate

bin/もしくはbundle execの有無について、gem インストールに関しては記事が見つかりましたが、上記の様なカラム追加等 gem インストール以外の操作における効力の違いに関する説明は見つかりませんでしたが、それはどの様なものでしょうか。
・カラムの追加においても何かのバージョンの相違がエラーを誘発するなどといったことがあるのでしょうか。もしそんなことはないのならば、少なくともカラムの追加についてはbin/もしくはbundle execはあってもなくても同じことになるのでしょうか。 上のサンプルでは三つともカラム追加にエラーなく成功しました。

_なにがしかご教授いただけますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

特にLinuxやmacOS環境では、bin/rakeと書くのがおすすめです。

  • bin/rakeと書いた場合、Springというプレローダー経由でRailsが読み込まれるので素早く起動しますが、bundle exec rakeや単なるrakeだと、Springを経由しないので毎回ロード時間がかかってしまいます。
  • 何も無しでrakeを起動すると、システムワイドに入ったgemが読まれますので、「システムにはRails 5があるけど、プロジェクトはRails 4」とか「railsはローカルにしか入れていない」というような場合に、うまく動かなくなります。

Rails 4.1以降のコンソールコマンドは必ず bin/ を付けなきゃいけないの? - Qiita

投稿2017/04/11 05:43

maisumakun

総合スコア145183

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

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

vitabrevisarsl1

2017/04/12 00:13

・ご回答ありがとうございます。リンクも勉強になりました。 ・/binの有無は、gem読み込みにおいてSpringを経由するか否かの違いですね。確認ですが、カラム追加はSpringやシステムのgemからは影響を受けないということでよろしいでしょうか。
maisumakun

2017/04/12 00:43 編集

「rake」だけで実行した場合、システムgemもプロジェクトのgemも同じ環境なら特に何も起きませんが、バージョン違いだとどうなるかわかりません(特に、Rails 5以上では、マイグレーションの動作がバージョンごとに変わるので、システムが5.0だと[5.1]指定のマイグレーションはそもそも動かない可能性すらあります)。 「bundle exec rake」であれば、Gemfileの設定を読み取ってくれるので、動作としては問題ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問