質問: ・ 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`はあってもなくても同じことになるのでしょうか。 上のサンプルでは三つともカラム追加にエラーなく成功しました。 _なにがしかご教授いただけますと幸いです。
回答: 特に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