Railsチュートリアル 第4章 メモ書き
○Rubyについて
カスタムヘルパー:
ビューで使える新たな組み込み関数(メソッド)のこと。
app/helpers/application_helper.rbにヘルパーとして定義。
Railsコンソール:
Railsアプリケーションを対話的に操作するためのコマンドラインツール。
irb(IRB:Interactive Euby)を拡張して作られ、Rubyの機能を全て使える。
開発・テスト・本番の3つの環境が定義されている。
nil:何もないことを表す特別な値
文字列の出力:
puts:出力の末尾に自動的に改行文字(\n)が追加。
print:出力に末尾に改行文字が入らない。
文字列:
ダブルクォート→式展開あり(#{})
シングルクォート→式展開なし(#を文字列として使える)
ダブルクォートで式展開しない時は\でエスケープ
boolean:
Trueもしくはfalseの論理値のこと
メソッドの定義:
def ~() endで〜がメソッド名、()内が引数、中に具体的な命令のコード。
最後に評価された式の値が自動的に返されるが、returnで明示することが可能。
push(<<):配列に要素を追加
%w:配列の前に置くことで文字列の配列に変換
ブロック:(1..5).each { |i| puts 2 * i }
範囲オブジェクトの(1..5)に対してeachメソッドを呼び出し、
{}(ブロック)の中にある|i|内のローカル変数iに代入、その後のputs 2*iを実行する。
長い時はdo endで囲むこともある。
ブロック内で宣言した引数に対してメソッドを呼び出す場合、次の省略記法が一般的。
%w[A B C].map { |char| char.downcase }
→ %w[A B C].map(&:downcase)
組み込みの基本クラス:
Rubyでは開発者以外でもクラスのメソッドを変更可能
(正当な理由がなければ混乱を防ぐ意味でしない方がいい)。
配列や範囲、ハッシュなどは組み込みクラス。
ハッシュ:
変数に複数の値を代入できる点は配列と同じ。違いはインデックスとして
文字列(キー)を用いることができる点。
値の前にコロンを置いたシンボルがキーとしてよく用いられる。
「”first_name" =>」と「:name => 」と「name:」は同じ。
attr_accessor:
アクセサーを作成し、そのデータを取り出すメソッド(ゲッター)と
データに代入するメソッド(セッター)をそれぞれ定義する。
例)attr_accessor :name,:email
と書くと、インスタンス変数@nameと@emailにアクセスするための
メソッドが用意される。
Initializeメソッド:
User.newを実行すると自動的に呼び出されるメソッド。
def initialize(attributes = {})
@name = attributes[:name]
@email = attributes[:email]
end
Railsチュートリアル 第3章 メモ書き
○静的なHTMLのページ
○自動化テスト
テスト:
主に次の3つを目敵として作成する
1)機能停止に陥るような回帰バグを防止
2)コードの安全なリファクタリング(コードの改善)
3)アプリケーションの設計やシステムの他の部分との
インターフェイスを決める時の参考
TDD(テスト駆動開発):
1)失敗するテストを書く
2)出来る限り早くテストを通るような最小限のコードを書く
3)リファクタリング
上の3つを繰り返すことでプログラムを作成する手法。
テストのコード例:
test "should get home" do
get static_pages_home_url
assert_response :success
end
→1)getリクエストをhomeアクションに対して発効
2)リクエストに対するレスポンスは成功になるはず(アサーション)
→成功すれば以下の表示が出る(GREEN)。
2 tests, 2 assertions, 0 failures, 0 errors, 0 skips
失敗するとエラーメッセージと共に、上のfailuresの数も増える(RED)。
ルーティングの保存先→config/routes.rb
Railsのビューでは静的HTMLで書かれたコードの中でRuby言語を使ってコードを書くことができる。
<% 〜 %> もしくは<%= 〜 %>で表現し、前者は出力なし、
後者は実行結果はテンプレートに表示される。
provide(:変数,引数) → yield(:変数)
引数を変数に渡す 変数を出力
上のコードを用いてレイアウトの共通部分をテンプレート化することで
Railsチュートリアル 第2章 メモ書き
最初に
自分がメモにまとめていたものを投稿していきます。
見栄えとか全く気にしてません。
後でもっとわかりやすくしたものに変える可能性もありますが、
とりあえず上げていきます。
本題
○scaffoldによるコード作成
○MVCモデル
○REST
○継承
scaffold :大量の機能を自動生成
リソース:データモデル(userモデルとmicropostモデル)+webインターフェイス
Rails g scaffold userでusersリソースを作成
→index(ユーザー一覧),show(個別のユーザーページ),new(新規ユーザー),edit(ユーザー編集)などのビュー、コントローラ、アクションが作成される
※欠点:レイアウトもスタイルもない、ユーザーパスワードがない、画像を置けない、ログイン機構なし、セキュリティなし、フォローワー・フォロー中機能なし、まともなテストなし、中身がブラックボックス(理解が困難)
Mvcの挙動:
1)ブラウザ(/users)→railsサーバー
2)ルーターによってusersコントローラのアクションへ
3)アクション実行、usersモデルへ
4)usersモデル、データベースからデータを操作
5)usersモデルからデータをコントローラに
6)usersコントローラはデータをインスタンス変数に保存、ビューへ
7)ビューが開き、erbを実行、HTMLをレンダリング
8)コントローラはビューで生成されたHTML をブラウザに返す
HTTPリクエスト(RESTful):
get(ビューの表示:index,show,new,edit),
post(データベースの操作:create),
patch(データ更新:update),
delete(データ消去:destroy)
REST:
CRUD(Create/Read/Update/Delete)とリクエストの各メソッドを対応させた、ネットワークやアプリケーションを構築するためのスタイル。
バリデーション:
データベースに制限を加える方法。モデルに書く。
クラスの継承:
クラスは別のクラスを継承することで、継承したクラス中の定義やアクションをそのまま使用できる。
User(Micropost) > ApplicationRecord > ActiveRecord::Base
※コントローラでも同様
初めまして
最初に
どうも初めまして。プログラミング初心者の葉染です。
オンラインのプログラミングスクールに通っており、
そろそろ本格的な学習プログラムが始まります。
それに合わせて、何かを勉強するにはアウトプットが大事ということで、
基本的にはスクールの中で、プログラミングについて学んだことの
メモ書きを書いていきたいと思います。
現時点での学習進捗は以下の通り。
Progate:HTML、CSS、Ruby、Rails、JavaScript、SQL
今後の予定
とりあえず、はじめにチュートリアルの章毎のメモ書きを残しておきます。
基本的にはRailsについてになるかと思いますが、他の言語について書く可能性は
十分にあります(Pythonにも興味あり)。
他にも自己分析や仕事について考えたこと・思ったことなどについて
書くかもしれません。
あまり人の役に立つようなブログにするつもりはありませんが、
よろしくお願いします。