Rails3.1の機能を試せると聞いたので、早速下記サイトを参考にローカル環境に入れてみました。噂のCoffeeScriptやSCSSが使えるようになっています。
インストールその1
rvmにRails3.1専用のgemsetを用意しました。Rubyのバージョンは Ruby 1.9.2-p180 です。
rvm gemset create rails31
rvm gemset use rails31
この状態だとRakeしか入っていません。
$ gem list
*** LOCAL GEMS ***
rake (0.8.7)
Railsアプリ用のディレクトリを作成します。
mkdir rails_app
cd rails_app
vim Gemfile
Gemfileを作ってRailsのGithubリポジトリを指定します。
# Gemfile
source "http://rubygems.org/"
gem 'rails', :git => 'git://github.com/rails/rails.git'
BundlerとRails3.1をインストールします。
gem install bundler
bundle install
インストールされたRailsのバージョンを確認してみましょう。
$ bundle exec rails -v
Rails 3.1.0.beta
無事入ってそうです。
インストールその2
Railsが入ったことを確認出来たら、実際にRailsアプリを生成してみます。先ほど作成したGemfileとコンフリクトしますが、気にせず上書きしてしまいましょう。
$ bundle exec rails new .
exist
create README
create Rakefile
create config.ru
create .gitignore
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/mailers
create app/models
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/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 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 public/images
create public/images/rails.png
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/.gitkeep
create vendor/assets/javascripts/jquery.js
create vendor/assets/javascripts/jquery_ujs.js
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
新しく生成されたGemfileを眺めてみます。
source 'http://rubygems.org'
gem 'rails', '3.1.0.beta'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
# gem 'arel', :git => 'git://github.com/rails/arel.git'
# gem 'rack', :git => 'git://github.com/rack/rack.git'
# gem 'sprockets', :git => "git://github.com/sstephenson/sprockets.git"
gem 'sqlite3'
# Asset template engines
gem 'sass', '~> 3.1.0.alpha'
gem 'coffee-script'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
group :test do
# Pretty printed test output
gem 'turn', :require => false
end
相変わらず標準のDBはSQLite3のようです。またsassとcoffee-scriptのgemが書かれていますね。さて、このままbundle installを実行するとRubygemsにrails 3.1.0.beta’なんて無いと怒られてしまうのでコメントアウトし、コメントアウトされているBundle edge Rails instead以下を有効にします。
# gem 'rails', '3.1.0.beta'
# Bundle edge Rails instead:
gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'arel', :git => 'git://github.com/rails/arel.git'
gem 'rack', :git => 'git://github.com/rack/rack.git'
gem 'sprockets', :git => "git://github.com/sstephenson/sprockets.git"
再度bundle installを実行。
bundle install
Scaffoldで生成されたものを覗く
実際何が変わったかはScaffoldで生成されたファイルを見てみるのが一番早いと思いますので、適当にジェネレートしてみます。
$ bundle exec rails g scaffold article subject:string body:text
invoke active_record
create db/migrate/20110419121620_create_articles.rb
create app/models/article.rb
invoke test_unit
create test/unit/article_test.rb
create test/fixtures/articles.yml
route resources :articles
invoke scaffold_controller
create app/controllers/articles_controller.rb
invoke erb
create app/views/articles
create app/views/articles/index.html.erb
create app/views/articles/edit.html.erb
create app/views/articles/show.html.erb
create app/views/articles/new.html.erb
create app/views/articles/_form.html.erb
invoke test_unit
create test/functional/articles_controller_test.rb
invoke helper
create app/helpers/articles_helper.rb
invoke test_unit
create test/unit/helpers/articles_helper_test.rb
create app/assets/stylesheets/scaffold.css.scss
invoke assets
create app/assets/javascripts/articles.js.coffee
create app/assets/stylesheets/articles.css.scss
現状のRails EdgeだとまだRSpecが標準にはなっていないようです。その代わりapp/assetsというディレクトリが新たに出現していて、その中に.coffeeと.scssなファイルが作られています。
app/assets/stylesheets/scaffold.css.scssを覗いてみましょう。
body { background-color: #fff; color: #333; }
body, p, ol, ul, td {
font-family: verdana, arial, helvetica, sans-serif;
font-size: 13px;
line-height: 18px;
}
pre {
background-color: #eee;
padding: 10px;
font-size: 11px;
}
a {
color: #000;
&:visited { color: #666; }
&:hover { color: #fff; background-color:#000; }
}
div.field, div.actions {
margin-bottom: 10px;
}
#notice {
color: green;
}
.field_with_errors {
padding: 2px;
background-color: red;
display: table;
}
#error_explanation {
width: 450px;
border: 2px solid red;
padding: 7px;
padding-bottom: 0;
margin-bottom: 20px;
background-color: #f0f0f0;
h2 {
text-align: left;
font-weight: bold;
padding: 5px 5px 5px 15px;
font-size: 12px;
margin: -7px;
margin-bottom: 0px;
background-color: #c00;
color: #fff;
}
ul li {
font-size: 12px;
list-style: square;
}
}
まとめ
今回はRails3.1をインストールし、Scaffoldの生成物を眺めただけです。。。実を言うと、私は最近までCoffeeScriptもSCSSも完全にノーマークでして、両方ともさわり程度しか知りませんでした(^^; 油断するとあっという間に置き去りにされそうです。
次回はCoffeeScriptとSCSSがどれくらい便利なのか色々触ってみたいと思います(多分)。