Rails_Tutrial04
4章から難しくなってきました。
4.1.2 カスタムヘルパー
ヘルパーも、progateには出てきてないですね。
そして、yieldの意味がよくわかっていない。
<title><%= full_title(yield(:title)) %></title>
この書き方は、titleにだけyieldを適用させるものであった。
memo:
空欄でなければoutputする
puts "The string '#{string}' is nonempty." unless string.empty?
""がデフォルト値
def string_message(str = '')
4.2.5
これで、title helperを理解できるらしい。
本当かよ。
モジュールは、関連したメソッドをまとめる方法の1つで、
include
メソッドを使ってモジュールを読み込むことができます (ミックスイン (mixed in) とも呼びます)。単なるRubyのコードを書くのであれば、モジュールを作成するたびに明示的に読み込んで使うのが普通ですが、Railsでは自動的にヘルパーモジュールを読み込んでくれるので、include行をわざわざ書く必要がありません。
Rubyの理解が甘くてもRailsなんとなく書けてしまう問題。
splitメソッド,使うでしょうね。
他のメソッド例
>> a => [42, 8, 17] >> a.empty? => false >> a.include?(42) => true >> a.sort => [8, 17, 42] >> a.reverse => [17, 8, 42] >> a.shuffle => [17, 42, 8] >> a => [42, 8, 17]
メソッドは暗記せずに、辞書的に確認しながら利用すれば良さそう。
4.3.2 ブロック
progateで一切出てきていない。
というか、progateってやっぱり超初心者向けなんだな。
(1..5).each { |i| puts 2 * i }
eachメソッドでそれぞれの数値に対して実行する内容が、
{}内に書かれている。これがブロック。
||で囲まれたiがローカル変数。
長いものにはdoで、1行なら{}で書く。
4.3.3 ハッシュとシンボル
ハッシュは連想配列。
シンボルは:nameとかそういうやつ。
4.3.4
丸括弧は不要。
4.4.3 組み込みクラスにメソッドを追加
そんなことはしたくありませんが、一応読んでおく。
4.4.4.コントローラクラス
実は、Railsは確かにRubyで書かれていますが、既にRubyとは別物なのです。Railsのクラスは、普通のRubyオブジェクトと同様に振る舞うものもありますが、多くのクラスにはRailsの魔法の粉が振りかけられています。Railsは独特であり、Rubyとは切り離して学習する必要があります。
何言ってんだ。
4.4.5 ユーザークラス
getterとsetterが全く理解できなかったことを思い出して、鬱病になりました。
4章は、手を動かさない内容なので、書籍で再確認した方が効率が良さそう。
スケジュール
8/16
chap.4-6
8/17
chap.7-9
8/18
chap.10-12
8/19
chap.13.14
追い込んでいくスタイル。
Rails_Turorial_03
3.1 branchを切って,static-page作っていきますよ
rails generate controller StaticPages home help
home helpのアクションを追加
get 'static_pages/home'
get 'static_pages/help'
書き方がprogateと違いますね。
homeとhelpのhtmlを修正。
3.3 Aboutページを自作する
ここでテスト駆動。
3.3.1
railsで作成されたtestを見る。
require 'test_helper' class StaticPagesControllerTest < ActionDispatch::IntegrationTest test "should get home" do get static_pages_home_url assert_response :success end test "should get help" do get static_pages_help_url assert_response :success end end
rails test でテスト。
Finished in 0.389273s, 5.1378 runs/s, 5.1378 assertions/s.
2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
aboutページのtestを追加してtest.
⇨もちろん失敗。routingがないので。
要は、routing, action, viewのどれかが欠けていると
test通らないので、ちゃんと用意せよ、ということ。
test通るように用意。
titleをtest.
各ページにtitleを追加。
test通過。
3.4.3レイアウトと埋め込みRuby
application.html.erbで共通処理を書く。
viewファイルをシンプルに書き換えられる。
という流れですね。
masterにマージして終了。
うーむ、testの理解が浅いな。
progateでやってないから、ほぼ初見になるというのが理由だが。
書籍でtestの箇所を辞書的に読んで見るとしよう。
RubyOnRails_02_Toyアプリケーション
2.1
toy_app プロジェクトを作成します。
2.2
ここで、scaffold機能を使用して、Usersリソースを作成します。
rails generate scaffold User name:string email:string
bundle exec rake db:migrate
Rakeを使ってマイグレーション。
うーむ、Rakeによって何が良くなるのか、理解できていないので調べる。
rails db:migrate ではいかんのか。
謎のエラー。
nodeの問題っぽい。
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.59.dylib Referenced from: /usr/local/bin/node Reason: image not found
サクッと解決。
ほー。scaffoldってすごい(未就学児並の感想)
progateではscaffold扱ってないですものね。
素直に便利だと思いました。
progateでuserの作成、編集、削除を自作していたおかげで、
何やってるかわかりますね。
2.2.2
usersのroutingを追加。
resources :users
root 'users#index'
2.3.1投稿内容も同じく
rails generate scaffold Micropost content:text user_id:integer
2.3.3
has_manyとbelongs
これはprogateになかった項目ですね。
2.3.4
ActiveRecordの継承の概念。
そもそもActiveRecordを理解する必要あり。
Toyアプリケーションは、scaffoldを使用して最低限のCRUDを再現する内容でした。
Rails内で何をしているか、というレベルであれば理解できますが...
まだまだ本質にはたどり着いていないです。
明日もやっていきます。
Rails Tutorial_01
Rails Tutorialを始めました。
本文冒頭にもありますが、
Ruby on Railsチュートリアルを最後まで終えることができれば、Rails周辺のさらに高度な内容の書籍、ブログ、スクリーンキャストなどを読み解く力を身に付けられます
Tutorialはあくまで通過地点であり、
・自分でものを作る
・必要なところは書籍、ネットコンテンツで随時補う
という自走するエンジニアのスタイルまで持っていく、
というのが目的です。
1.1 はじめに
理解していない箇所
REST
1.3
rails new hello_app
GemfileはRuby2.5.1のデフォルト設定にしてみる。
rails server
⇨いつものRails yay!
1.3.4 MVCの話
root 'application#hello'
rootはこう書くのか
いきなりエラーが出る。
Viewファイル書いてないよな〜と思っていたら、
やはりそこだった。
render plain: "hello, world!"
でやり過ごす。
1.4Git
さすがにgit関連とgithubの使い方はわかるので、飛ばします。
デプロイはAWSでやりたい。
Beanstalk⇨一瞬でできそう。
EC2⇨まあ普通。今更感ある。
Fargate⇨面白そう...だけどコンテナ周りを調べる必要がある。
とりあえずBeanstalkとEC2で試しましたとさ。