Rails アプリの作成

予告通り、森高千里さんのデータベースの構築について書いて行きます。現在進行中なので、あとから表記を修正する可能性が多分にあります。まずは環境の設定から。Rails は 3.2、Ruby は 1.9.3、View は HAML、テストに rspec, autotest, spork, watchr を使います。

ローカルの Rails 環境の構築

Ruby の gem をあらかじめインストールしておきます.

gem update --system
gem install bundler

以下では .zshrc に以下のエイリアスが設定されているものとして記述します

alias be='bundle exec'
alias r='be rails'
alias bes='be watchr spec/spork.watchr &'

フォルダを作成し,移動します.

mkdir chisato-moritaka-db
cd chisato-moritaka-db

Gemfile を以下のように記述します

source "http://rubygems.org"
gem "rails"

bundle で vendor/bundle に Rails をインストールします

bundle install --path vendor/bundle

新規 Rails を作成します.

r new .

他に必要な gem を列記します.

gem 'heroku' # 今回は Heroku に deploy するため

gem 'haml' # erb の代わりのページ記述言語。閉じタグがいらないので楽
gem 'haml-rails'

group :development, :test do
  gem 'rake'
  gem 'rspec-rails' # テストは rspec で記述します
  gem 'ZenTest' # autotest を行います
  gem 'autotest-screen'
  gem 'rails-erd' # ER 図を描画します。要 graphviz
  gem 'spork' # autotest のテストサーバです。Ruby 1.9 は起動が遅いので必須。
  gem 'rdoc'
  gem 'watchr' # spork の再起動させるトリガファイルを見張ります
end

再度 gem をインストールします

bundle

config/application.rb に設定を追加します

    # Haml setting
    # デフォルトで escape_html にする ( XSS 対策)
    Haml::Template.options[:escape_html] = true
    # テンプレートを HTML5 にする
    Haml::Template.options[:format] = :html5

    # 出力のデフォルトを UTF_8 にする
    Encoding.default_external = Encoding::UTF_8
    Encoding.default_internal = Encoding::UTF_8

    # autoload lib/*.rb
    config.autoload_paths += Dir["#{config.root}/lib/**/"]

    # タイムゾーンを東京に
    config.time_zone = 'Tokyo'

    # ログをカラーで出力しない
    config.colorize_logging = false

    ### Part of a Spork hack. See http://bit.ly/arY19y
    if Rails.env.test?
      initializer :after => :initialize_dependency_mechanism do
        # Work around initializer in railties/lib/rails/application/bootstrap.rb
        ActiveSupport::Dependencies.mechanism = :load
      end
    end

rspec 関係については,autotest のさらなる自動化に記述しているので省略します。

Heroku 用に config/application.rb に追記します

    # If you are deploying Rails 3.1 on Heroku, you may want to set:
    config.assets.initialize_on_precompile = false

rake db:migrate で「uninitialized constant Rake::DSL」というエラーが出るので,Rakefile に以下を追加 (参考(Rails3.2でのuninitialized constant Rake::DSLの解決方法))

require 'rake/dsl_definition'

Heroku 上では自動的に Postgres になるので、database.yml は特に気にする必要はありません。
とりあえず、別スクリーンで bes として、テストサーバ及び autotest を起動していよいよ記述開始です。