概要
近々正式公開されるRails 4をデフォルト状態でセットアップしてみます。
要件
Rails 4のインストールを始める前に、以下のものをインストールしておきましょう。これらのインストール手順については割愛します。
- rubyのビルドに必要なパッケージ
- ruby 1.9.3
- bundler
- rubygems
2.0.0-rc2でこの後の作業を実行したところ、bundlerのバージョンを上げろという面倒な指示が出てきたので、現状では1.9.3の一択だと思っています。基本的にはrvmで1.9.3をインストールすれば、全て条件は揃っています。
手順
Gemfileの生成
アプリケーション・フォルダを作成します。この時のフォルダ名は、自動的にアプリケーション名になるので、意味のある名前をつけてください。次にbundlerを使ってGemfileのスケルトンを生成します。とは言え、gemリポジトリがrubygems.orgに指定されているだけです。
$ mkdir myapp && cd myapp
$ bundle init
BundlerによるGemのインストール
Rails 4をアプリケーション・ローカルにインストールしてみます。ほとんどのgemパッケージはこれだけでインストールされますが、いくつかは後でインストールすることになります。
$ echo 'gem "rails", github: "rails/rails"' >> Gemfile
$ bundle install --path vendor/bundle
Railsアプリケーションの作成
bundleからrailsコマンドが使えるようになっています。これによってアプリケーションの雛形を生成することができます。
$ bundle exec rails new .
上記のコマンドを実行すると、RailsデフォルトのGemfileで現状のGemfileを上書きするか?と訊かれるので上書きを選択します。何も入力しないでRETURNキーを押すだけです。
しかし、生成プログラムの最後に実行されるbundle installで失敗します。これはsass-railsとcoffee-railsの対応するバージョンがrubygems.orgのリポジトリに無いためです。Gemfile中の下記Aの記述をBのように修正します。
A
gem 'sass-rails', '~> 4.0.0.beta'
gem 'coffee-rails', '~> 4.0.0.beta'
B
gem 'sass-rails', '~> 4.0.0.beta', github: 'rails/sass-rails'
gem 'coffee-rails', '~> 4.0.0.beta', github: 'rails/coffee-rails'
最後にもう一度gemパッケージのインストールを実行します。
$ bundle install --path vendor/bundle
生成されたアプリケーションの構成
下記のような構成のWebアプリケーションの雛形が生成されます。
$ tree -d -L 3
.
├── app
│ ├── assets
│ │ ├── images
│ │ ├── javascripts
│ │ └── stylesheets
│ ├── controllers
│ │ └── concerns
│ ├── helpers
│ ├── mailers
│ ├── models
│ │ └── concerns
│ └── views
│ └── layouts
├── bin
├── config
│ ├── environments
│ ├── initializers
│ └── locales
├── db
├── lib
│ ├── assets
│ └── tasks
├── log
├── public
├── test
│ ├── controllers
│ ├── fixtures
│ ├── helpers
│ ├── integration
│ ├── mailers
│ └── models
├── tmp
│ ├── cache
│ │ └── assets
│ ├── pids
│ ├── sessions
│ └── sockets
└── vendor
├── assets
│ ├── javascripts
│ └── stylesheets
└── bundle
└── ruby
43 directories
まとめると
そんなこんなで生成されたGemfileをちょこっと編集してgistにアップしてあるので、これを使えば話が早い。railsアプリケーション生成の際にGemfileを上書きしないように気をつけましょう。
mkdir myapp && cd myapp
curl -OL https://gist.github.com/artifactsauce/5019345/raw/9479cf4669d54df4e8982086863a36b2f7deb049/Gemfile
bundle install --path vendor/bundle
bundle exec rails new .