Ruby on Rails Tutorial の学習メモ。

第1章 ゼロからデプロイまで

Railsアプリケーションの作成

rails newコマンドでアプリケーションのスケルトンを作成。

rails serverコマンドでローカルサーバー起動。

Gitによるバージョン管理

作成したアプリケーションをGit(GitHub)でバージョン管理する。

1
2
3
4
5
git init
git add .
git status
git commit -m "Initialize repository"
git log

コミット前の状態に戻す。

1
2
git checkout -f
git status

GitHubのWeb画面からレポジトリ作成後 リモートリポジトリにpush

1
2
git remote add origin https://github.com/<username>/first_app.git
git push -u origin master

トピックブランチを作成してファイル名を変更する。 -bオプションを指定して実行するとブランチの作成とチェックアウトを同時に行う。

-aオプションを指定することで 変更の加わったファイルをすべて対象とする。新規ファイルは対象とならないとので注意。

1
2
3
4
5
git checkout -b modify-README
git branch
git mv README.rdoc README.md
git status
git commit -a -m "Improve the README file"

マスターブランチに切り替えて変更をマージ後、 トピックブランチを削除する。

1
2
3
git checkout master
git merge modify-README
git branch -d modify-README

変更内容をGitHubにプッシュする。 すでに一度プッシュしてるのでorigin masterは省略できる。

1
git push

Herokuにデプロイする

プロダクション環境とするHerokuではPostgresを利用するのでGemfileにgemを追加する。 (pg, rails_12factor)

Gemfile.lockを更新したいのでbundle installを実行する。

1
2
bundle install --without prodoction
git commit -a -m "Update Gemfile.lock for Heroku"

Heroku登録してHeroku Toolbeltをインストールしてくる。

1
2
3
4
heroku login
heroku create
git push heroku master
heroku open

なお、この時点ではRailsのデフォルトページは表示されない模様。

次の章へ

パーフェクトRubyを斜め読みしながら気になった事柄についてメモを残しておく。

Rubyと文字コードについて

1.9系を扱うときはデフォルトの文字コードがUS-ASCIIと判定されるが、2.0では デフォルトの文字コードがUTF-8として認識される。

明示する場合は以下のようなマジックコメントを記述する。

1
# encoding:utf-8

クラス、モジュール名はXxxYyyのようなキャメルケース

メソッド名、変数名はxxx_yyyのようなスネークケース

真偽を表すメソッド名

is_xxxのような真偽値を返すメソッド名は末尾に?をつけることが一般的。

1
2
3
def happy?
  true
end

どうやら最後に評価された式をreturnしてるっぽい

メソッド定義

1
2
3
def foo(arg)
  true
end

メソッド呼びだし

1
レシーバ.メソッド名

メソッド呼び出し時は、 foo('abc')という馴染み深い形のほかに foo 'abc'のように括弧を省略することができる

トップレベル

クラス定義、モジュール定義外で定義されたものは関数のように利用できる。

シングルクォートとダブルクォート文字列の違い

ダブルクォート文字列の場合は#{...}という形で式展開できる。

戻り値

最後に評価された式、またはretrun

Pythonの場合を思い出しながら

pyenvでPython自体のバージョン管理。 virtualenvでPython仮想環境作ってactivateした後、 利用したいパッケージをpipでインストールする。

Rubyの場合はこんなかな

rbenvでRuby自体のバージョン管理。 パッケージ管理はgemで行うが「プロジェクトでどのgemのどのバージョンを使うか」 といった情報をGemfileに書き込んでbundlerで管理する。

1
bundle init
1
2
3
4
5
# A sample Gemfile
source "https://rubygems.org"

# gem "rails"
gem "rdefs"
1
bundle install --binstubs .bundle/bin

rbenv-binstubsを利用するとbundler exec <command>しなくて良いらしいので。

Pillowで

  • 画像編集の自動化は結構簡単に
  • Firefoxの定期スクショのほうがめんどくさい

Eject

  • ctypes
  • Rasberry Pi / GPIO

マルチプラットフォーム

  • Kivy
  • PyQt

Vagrant+Pythonで開発環境

  • スライドがsphinx+revealjs
  • 開発環境+実行環境

CodeIQ

  • yieldの使い方
Template
HTMLにいくつかのAngular用のマークアップを追加したもの
Compiler
TemplateをパースしてDirectivesExpressionsを実行する
View
ユーザーに見えているDOM
Directives
Custom属性、Customタグを適用してHTMLを拡張する DOMを直接触った操作がしたい場合は独自のDirectiveを用意する
Expressions
“で表現され、スコープ内の変数や関数にアクセスできる
Scope
変数や関数に参照できるスコープ“

Model :