人生は短く、睡眠は長い

8時間寝ないとキツい

Rails_Tutrial04

4章から難しくなってきました。

 

4.1.2 カスタムヘルパー

ヘルパーも、progateには出てきてないですね。

 

そして、yieldの意味がよくわかっていない。

qiita.com

<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章は、手を動かさない内容なので、書籍で再確認した方が効率が良さそう。

 

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

 

埋め込み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

 

サクッと解決。

qiita.com

 

ほー。scaffoldってすごい(未就学児並の感想)

f:id:taiga-ishii:20180814205924p:plain

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で試しましたとさ。

 

 

 

 

Rubyの環境構築

Rubyを手持ちのMacBookProに入れていく。

とはいえ、以前も入れたことがあるので、ゼロからではない。

 

rbenv versions

 

  system

* 2.3.0

入ってるね。

 

せっかくなので2.5.1を入れておく。

参考:

qiita.com

 

教えに従ってrvenv-communal-gemsとやらも入れておく。

 

Railsは普通に

gem install rails

した。

Railsは今は5系になっているらしい。

とりあえず、サクッと環境構築したので、コードを書き始めたい。