これから始める Ruby on Rails シリーズ$ bundle exec を省略する
はじめに
$ bundle exec
を毎回入力してきたわけですが、そろそろ面倒に感じる頃合い。ということで$ bundle exec
を省略する方法を調べてみました。
参考サイト
調べてみると、いくつかの方法がある。
- bundle execの省略が微妙
- rails4でbundle execしないでコマンドを実行する(rbenv+rails4+binstubs)
- bundle execを使わずに済む方法(rbenv編)
悩んだ結果rbenv-binstubs(rbenvのプラグイン)を使ってプロジェクトルートからだけ$ bundle exec
を省略(追記:下層でも省略できた)でき、下層ではaliasを使うことにした。gemをグローバルな環境にインストールしたくないので(path=vendor/bundle)この方法をとっている。
binstubsプラグインのインストール
.rbenv
フォルダはrootにある。プラグインディレクトリを作りgitからcloneしてくる。
$ mkdir ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone git://github.com/ianheggie/rbenv-binstubs.git
PATHの設定
シェルにPATHの設定をする。
$ vi ~/.zshrc
.zshrc
プロジェクトルートに余計なファイルを作りたくないので、--path=vendor/bundle
と同じようにvendor/bin
を指すよう指定。自分はzshなので、.zshrc
に追記した。また、aliasも合わせて追記する。
# rbenv binstubs setting
export PATH=./vendor/bin:$PATH
alias be='bundle exec'
変更を反映させる
シェルの再起動かsource
を使う、自分はうまくいかなかったのとでとりあえず再起動。
source ~/.zshrc
サンプルプロジェクトを作る
まずはbundlerをアップデート。
$ bundle update
ディレクトリを作る
適当にディレクトリを作りrubyのバージョンを指定する。
$ mkdir bundle.alias.rails
$ cd bundle.alias.rails
$ rbenv local 2.1.0
gemのインストール
Railsをbundlerを使ってインストールする。
$ bundle init
Writing new Gemfile to /Users/nukos/Projects/Labs/Gemfile
Gemfile
rails
のコメントを外す。
source "https://rubygems.org"
gem "rails"
Railsのインストール
pathを指定してvendor/bundle
下にgemをインストール。また、binstubsをvendor/bin
とする。
$ bundle install --path=vendor/bundle --binstubs=vendor/bin
新規Railsアプリを作る
すでにbundleからインストールしているので--skip-bundle
を加えて実行します。
$ bundle exec rails new . --skip-bundle
bundle exec rails new . --skip-bundle
exist
create README.rdoc
create Rakefile
create config.ru
create .gitignore
conflict Gemfile
Overwrite /Users/nukos/Projects/Labs/step2.scaffold.rails/Gemfile? (enter "h" for help) [Ynaqdh]
force Gemfile
create app
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/assets/images/.keep
create app/mailers/.keep
create app/models/.keep
create app/controllers/concerns/.keep
create app/models/concerns/.keep
create bin
create bin/bundle
create bin/rails
create bin/rake
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/secrets.yml
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/assets.rb
create config/initializers/backtrace_silencers.rb
create config/initializers/cookies_serializer.rb
create config/initializers/filter_parameter_logging.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create lib
create lib/tasks
create lib/tasks/.keep
create lib/assets
create lib/assets/.keep
create log
create log/.keep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/robots.txt
create test/fixtures
create test/fixtures/.keep
create test/controllers
create test/controllers/.keep
create test/mailers
create test/mailers/.keep
create test/models
create test/models/.keep
create test/helpers
create test/helpers/.keep
create test/integration
create test/integration/.keep
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.keep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.keep
試す(サーバーの起動)
インストールが完了したらプロジェクトルートで$ rails s
を打ってサーバーを起動してみる。
$ rails s
=> Booting WEBrick
=> Rails 4.1.6 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
[2014-10-06 16:07:50] INFO WEBrick 1.3.1
[2014-10-06 16:07:50] INFO ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0]
[2014-10-06 16:07:50] INFO WEBrick::HTTPServer#start: pid=5004 port=3000
うまく起動できたら成功。aliasも問題なく使えるけど誤算だったのが下層でも$ rails s
を試したらこれもうまくいった。想定と違うけどこういうもんなんだろうか。何かわかれば追記する予定。情報提供、ご指摘も受け付けてます。
ではでは。