Bundlerを使ってRailsをいれてみた
前回のエントリーでrubyをインストールしたので、
次はBundlerを使ってRailsを入れてみたいと思います。
やることは大きく3つ
• ruby本体にgemでBundlerを入れる
• 一時的なgemでRailsを入れる
• Railsアプリケーションを作成したら一時的なgemを消す
(その他のgemはRailsの中で管理する)
これでBundler意外のgemはアプリケーション単位でしか依存しなくなります。
※注 Ruby超初心者なので大きな誤解をしている場合がございます。
まずはgemをアップデート
$ gem update --system
そしてbundlerのインストール
$ gem install bundler Fetching: bundler-1.3.5.gem (100%) Successfully installed bundler-1.3.5 Parsing documentation for bundler-1.3.5 Installing ri documentation for bundler-1.3.5 1 gem installed $ rbenv rehash
rehashするのを忘れずに
僕はrbenvでRuby2.0.0を選択していたので、ちゃんと意図したとこに入ってるか確認
$ gem which bundler /Users/sasakure/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb
うん大丈夫
それではRailsを入れます。
Gemfileというファイルを「Railsをインストールするためだけに」作る必要があります。
このGemfileというのはBundlerがインストールするためのgemファイルを指定するもので、
これからRailsをインストールしたい場所に作成する必要があります。
$ cd $ mkdir RailsApps $ cd RailsApps $ vi Gemfile
Gemfileの中身はこんな感じ
source 'http://rubygems.org' gem 'rails', '3.2.13'
んで、この例でいうとRailsAppsディレクトリにいる状態で
bundle install コマンドでインストールするんですが、
オプションで--path vendor/bundleを指定するのを忘れずに!
$ bundle install --path vendor/bundle Fetching gem metadata from http://rubygems.org/........... Fetching gem metadata from http://rubygems.org/.. Resolving dependencies... Installing rake (10.0.4) Installing i18n (0.6.1) Installing multi_json (1.7.2) Installing activesupport (3.2.13) Installing builder (3.0.4) Installing activemodel (3.2.13) Installing erubis (2.7.0) Installing journey (1.0.4) Installing rack (1.4.5) Installing rack-cache (1.2) Installing rack-test (0.6.2) Installing hike (1.2.2) Installing tilt (1.3.7) Installing sprockets (2.2.2) Installing actionpack (3.2.13) Installing mime-types (1.23) Installing polyglot (0.3.3) Installing treetop (1.4.12) Installing mail (2.5.3) Installing actionmailer (3.2.13) Installing arel (3.0.2) Installing tzinfo (0.3.37) Installing activerecord (3.2.13) Installing activeresource (3.2.13) Using bundler (1.3.5) Using json (1.7.7) Installing rack-ssl (1.3.3) Installing rdoc (3.12.2) Installing thor (0.18.1) Installing railties (3.2.13) Installing rails (3.2.13) Your bundle is complete! It was installed into ./vendor/bundle Post-install message from rdoc: Depending on your version of ruby, you may need to install ruby rdoc/ri data: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay!
ここまで良い感じ。
最後に出て来たメッセージは何だろう。
「Rubyのバージョンによってはrdocをインストールする必要があるけど、1.9.2以上なら関係ないよヒャッホー!」 ってとこかな。
あとはRailsでアプリケーションを作成したらGemfileを消せばいいんですって。
「demo」という名のアプリを作る場合は下記のようなコマンドを叩く。
※ --skip-bundleオプションでbundel installが走らないようにしておくことが重要
$ bundle exec rails new demo --skip-bundle create create README.rdoc create Rakefile create config.ru create .gitignore create Gemfile create app create app/assets/images/rails.png 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/mailers/.gitkeep create app/models/.gitkeep create config create config/routes.rb create config/application.rb create config/environment.rb create config/environments create config/environments/development.rb create config/environments/production.rb create config/environments/test.rb create config/initializers create config/initializers/backtrace_silencers.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/secret_token.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 doc create doc/README_FOR_APP create lib create lib/tasks create lib/tasks/.gitkeep create lib/assets create lib/assets/.gitkeep create log create log/.gitkeep create public create public/404.html create public/422.html create public/500.html create public/favicon.ico create public/index.html create public/robots.txt create script create script/rails create test/fixtures create test/fixtures/.gitkeep create test/functional create test/functional/.gitkeep create test/integration create test/integration/.gitkeep create test/unit create test/unit/.gitkeep create public create public/404.html create public/422.html create public/500.html create public/favicon.ico create public/index.html create public/robots.txt create script create script/rails create test/fixtures create test/fixtures/.gitkeep create test/functional create test/functional/.gitkeep create test/integration create test/integration/.gitkeep create test/unit create test/unit/.gitkeep create test/performance/browsing_test.rb create test/test_helper.rb create tmp/cache create tmp/cache/assets create vendor/assets/javascripts create vendor/assets/javascripts/.gitkeep create vendor/assets/stylesheets create vendor/assets/stylesheets/.gitkeep create vendor/plugins create vendor/plugins/.gitkeep
できたー!!
んでGemfile関連を削除(あくまでRailsを入れるためだけで、あとはRailsの中でgemファイルを管理するから洋梨)
この例だとRailsAppsディレクトリにはdemoディレクトリだけ残せばオーケーですね。
##### 追記
この後、demoディレクトリに移動して、bundle installを再び実行する事で、
bundle exec rails serverなど raisコマンドなどが実行出来るようになります。
$ cd demo $ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/........... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies... Installing rake (10.0.4) Installing i18n (0.6.1) << 省略 >> $ bundle exec rails server => Booting WEBrick => Rails 3.2.13 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2013-04-23 01:02:23] INFO WEBrick 1.3.1 [2013-04-23 01:02:23] INFO ruby 2.0.0 (2013-02-24) [x86_64-darwin10.8.0] [2013-04-23 01:02:23] INFO WEBrick::HTTPServer#start: pid=18508 port=3000