心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。3章。

      2014/01/26


巷にRails4本がなく、Rails3本をRails4でやってみようとしたところ、その本自体がいまいちだったので、RailsTutorial4.0を復習することにします。最初に取り組んだ時は途中からとりあえずコピペ写経し理解は後で、と思っていました。なので今度は理解しながらブログに書いて行くこととします。

スタートは3章からです。

RailsTutorial4.0ではsample_appという名前でアプリを作る事になっていますが、私は既に一度作っているので名前を変えて、Twiliという名前にします。最終的にできるものがTwitterのようなプログラムだからです。

cd 「Railsアプリを作りたいdirectory」
rails new Twili --skip-test-unit

rails newが成功すると、Twili directoryの下に色々railsのフォルダができています。

cd Twili

アプリのrootに移動しておきます。

Test directoryを作成しない

rails newのときに-skip-test-unit指定するとtest directoryが作成されません。

他に使えるオプションはRailsドキュメントにありました。

オプション 説明
-r, -ruby=PATH rubyバイナリのパス
-b, –builder-BUILDER builderのパスを指定
-m, -template=TAMPLATE テンプレートのパス
–skip-gemfile Grmfileを作成しない
–skip-bundle bundle installを行わない
-G, –skip-git .gitignore, .gitkeepを組み込まない
-O, –skip-active-recode active recordを組み込まない
-S, –skip-sprockets sprocketsファイルをスキップ
-d, –database=DATABASE データベースの種類
-j, –javascript=JAVASCRIPT 組み込むJavascriptライブラリーを指定。デフォルトは、jquery
-J, –skip-javascript javascriptを組み込まない
–dev github リポジトリ上の自分のコードから作成
–edge github リポジトリ上の最新のコードから作成
-T, –skip-test-unit test::unitを組み込まない
–old-style-hash 古いハッシュ形式(:foo => ‘bar’)を有効にする(Ruby1.9以上)
-f, –force ファイルが存在する場合に上書きする
-p, –pretend ドライラン
-q, –quiet 進捗情報を表示しない
-s, –skip 既に存在するファイルについてはスキップ
-h, –help ヘルプ
-v, –version バージョンを表示

Gemfileつけたし

GemはRailsTutorialの中で徐々に付け足していくのですが、最終の形にいきなりしてもいいと書いてあるので、その通りコピペします。

source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.2'
gem 'bootstrap-sass', '2.3.2.0'
gem 'bcrypt-ruby', '3.1.2'
gem 'faker', '1.1.2'
gem 'will_paginate', '3.0.4'
gem 'bootstrap-will_paginate', '0.0.9'

group :development, :test do
  gem 'sqlite3', '1.3.8'
  gem 'rspec-rails', '2.13.1'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
  gem 'factory_girl_rails', '4.2.0'
  gem 'cucumber-rails', '1.4.0', :require => false
  gem 'database_cleaner', github: 'bmabey/database_cleaner'
end

gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end

バージョンアップ必要なものがあったら都度書き直します。

Gemインストールする

アプリで最初のgemインストールです。

–without productionオプションを追加することで、本番環境のgemのみをインストールしないようにすることができます。

Railsには、開発環境、テスト環境、本番環境の3つがデフォで用意してあって、このうち本番環境は特に使うDBが違ったり環境が違うので、そのためのgemは開発環境ではインストールしないオプションをしていしておくってことですね。

注: このオプションは “remembered option” と呼ばれるもので、このオプションを一度実行するとコマンドに保存され、今後Bundlerを実行するときにオプションを追加する必要がなくなります。

なので、次からはオプションなしでおK。

bundle install --without production

成功したので、つぎもやっておきます。

bundle update
bundle install

秘密トークンを動的に生成する。

アプリの公開を前提に、セキュリティのこの段階で盛り込んでいるのがRailsTutorialのいいところの一つです。
セッション変数の暗号化に使用する秘密トークン (secret token) を動的に生成するためのコードを書きます。
config/initializers/secret_token.rb はファイルがあるので、中身を書き換えます。

require 'securerandom'

def secure_token
  token_file = Rails.root.join('.secret')
  if File.exist?(token_file)
    # Use the existing token.
    File.read(token_file).chomp
  else
    # Generate a new token and store it in token_file.
    token = SecureRandom.hex(64)
    File.write(token_file, token)
    token
  end
end

Twili::Application.config.secret_key_base = secure_token

RailsTutorlalではSample_AppになっているのでTwiliに変更しました。

RSpecを使うように、Railsの設定を変更

テストのことをまず考えているのもRailsTutorialのいいところです。ここでRSpecの設定をしていたのかー。設定します。

rails generate rspec:install

specフォルダができています。

Gitリポジトリを初期化、.gitignore設定、MD設定

Gitを最初から使っているのもRailsTutorialのいいところです。

git init

隠しファイル.gitignoreと隠しフォルダ.gitができています。
ここで1.3.1に戻って、gitで公開しないファイル情報を.gitignoreに書きます。
「リスト1.7 より多くのパターンを除外する.gitignoreファイル。 」にあります。

# Ignore bundler config.
/.bundle

# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal

# Ignore all logfiles and tempfiles.
/log/*.log
/tmp

# Ignore other unneeded files.
doc/
*.swp
*~
.project
.DS_Store
.idea
.secret

次にREADME.rdocをREADME.mdにリネームし、git上でマークダウン形式で読めるようにします。
(RailsTutorialとは順番を入れ替えています)

Git最初のコミット

ここまでやったら最初のコミットだと思います。

git status
git add .
git status
git commit -m "Initial commit"

github公開、heroku deployはしませんが、やってもいいと思います。

続きます。次は「3.1静的ページ」からです。

 - テクニカル ,

Comment

  1. […] rails newした後にgemfileを面倒なので最終形をコピペしています。開発とテストではsqlite、実行ではpostgresにしてあるので、とりあえず十分です。 […]

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
iPhoneのKindleアプリでChip Conley氏の本を読んでみました。その2

iPadの発売がようやく発表されました。私個人としては読書端末としての利用を期待 …

no image
RailsTutorial4.0を高速で復習する。3.1章。

3.1章は静的ページの追加。これをトップページとして後で色々追加していきます。 …

詳解 Objective-C 2.0 第3版 CHAPTER2 Objective-Cのプログラム

Objective-Cの解説はメッセージから始まる。このメッセージという概念、も …

初めてのRuby8章 8.4特異メソッドと特異クラス

特異メソッドと特異クラス プログラムなんて、クラスの継承だけで書けてしまうのが良 …

no image
RailsTutorial4.0を高速で復習する。11.2.3章。

11.2.3「フォローしているユーザー」ページと「フォロワー」ページ、です。 仕 …

no image
RailsTutorial4.0を高速で復習する。7.6章。演習。

7.6演習 1問目です。 リスト7.30のコードを使用して、7.1.4で定義され …

no image
ToDoの管理方法

東大生はノートがきれいだとか、、 きれいに書いている暇があったら、頭に書いて覚え …

Lionさんがお出まし?AppStoreでのアップデート

MacBookAirのDockにあるAppStoreアイコンになにやらアップデー …

RailsTutorial4.0を高速で復習する。またまた5.1.2章の途中から。

RailsTutorial4.0を高速で復習する。5.1.2章の途中から。です。 …

no image
Rubyの<< には3つの用法あり。

先週の#yokohamarbペアプロ画面をみていて