日々、内省

ふと思ったこと、脳内ブレストしていることを書いていきます

rails 第三章 静的なページの作成

静的なページを作るというお題

前にwprdpressの編集を行った時も静的なページから始めていた。railsも同じように静的なページ作成=>動的な部分を抜き出す=>それに合うデータベース作成(model)=>データを動かすコントローラーを記述するっていう流れなのかな?

wordpressだとheaderは全部自動化!!みたいな感じで楽だったけど笑

 

それにしてもせいてきって予測変換すると 性的ってなるんだけど、何この変態パソコン

 

テストについて

・正しいコードがないと失敗するコード作成=>そのあとに正しいコード作成

test "should get home" do
get :home
assert_response :success
end

の意味はGETリクエストをHomeアクションに発行、それができたら成功?(このテストコードが呼ばれた時点でHomeアクションってことじゃないの?)

 

リファクタリング

同じコードを記述しない。こまめにクレンジング。常に最適化を

 

テスト用のコード

assert_select "title", "Home | Ruby on Rails Tutorial Sample App"

これの意味はtitleタグ内に以下の文章があるかを確かめるっていう意味。このコードを各テストメソッド内に埋め込んでいきましょう。

 

provide関数:<%provide (:title, Home)%>のようにview内で変数に値を渡す

<%=yield(:title) %>で値を取り出し、htmlに埋め込む

application.html.erb

<!DOCTYPE html>
<html>
<head>
<title><%=yield(:title) %>|Rails Sample App</title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

の<body>にある<%= yield %>は何か?

ここに他のテンプレートであるhome.html.erb等の内容が入る=>html構造は無視してOK!一つひな形があればええやん

 

コントローラー内でのセットアップ、変数の記述方法

def setup
@base_title = "Rails Sample App"
end

参照するとき

#{@base_title}

 

分からないところ

・コラム3.1 元に戻す方法 まだやってない

・HTTPメソッド、何を基準として考えているのか

・テストの具体的なやり方(レッド、グリーン、リファクタリングと言われてもw)

・viewに埋め込めるrailsのタグはどんなのがあるんだろうか、、

rails s -b$IP -p$PORT の意味とは

 

 

rails チュートリアル第二章で覚えておくこと まとめ

Toysアプリを作り、railsがどんなものなのかを一通り学ぶんじゃー。

 

scffoldっていうコマンドは超便利だけど、railsの理解には繋がらないからやめる、この章だけ使うらしい。

$ rails generate scaffold users name:string email:string 的な感じで作成

作成後はデータベースをマイグレートする必要があるので

$ rails exec rake db:migrate  をする

こうすると自動でモデル、ビュー、コントローラーが作成され、routes.rbにもルートが通るようにパスが作成される

 

コントローラー内には自動にアクションが追加される

GET /microposts index すべてのマイクロポストを表示するページ
GET /microposts/1 show id=1のマイクロポストを表示するページ
GET /microposts/new new マイクロポストを新規作成するページ
POST /microposts create 新しいマイクロポストを作る
GET /microposts/1/edit edit id=1のマイクロポストを編集するページ
PATCH /microposts/1 update id=1のマイクロポストを更新するアクション
DELETE /microposts/1 destroy id1のマイクロポストを削除する

 

こんな感じ。疑問が二つあるよね。

①一番左のHTTPアクションってなんぞや

②なんでURLが同じものがあるのか

回答

①第三章でも説明があるらしいよ

②HTTPリクエストの違いらしい、URLが記述されていてもコントローラー上でアクションが起こるだけのものもあるから気を付ける

 

railsの良さはデータベース間の連携が簡単なことらしい。

has_many : で所有を表し

belongs_to:で帰属関係を表す

 

オブジェクト指向出てきた(笑)

これはつらい。baseっていうクラスが相当万能なんだろうなあと感じる今日この頃です

 

 

第二章 分からなかったところ

・baseがどんなクラスなのか

・REST

 

 

 

 

Herokuについて

Herokuとは何か。

Paasの一種らしいスタートアップ等でサービスをローンチするにはデータベースサーバー等初期費用がかさんでしまう。

そんな個人事業主のために生まれたのがPaas。webにサービスを上げると時に必要なソフトを全てまとめたものであーる。

実際にアカウントを開設してみたら、あらゆる言語を網羅しているよう。PHPとかRUBYとか。正直にローカル開発環境をせっせと構築してたのが少しばからしくなるレベルですね。。

git によるバージョン管理について

バージョン=>ソースコードを書き直した履歴みたいなものを指すらしい、おそらく

gitで管理を行うとソースコードをうっかり削除してしまった時も直すことが可能らしい?

 

レポジトリ=>鳥のこと?w違うらしい 参照:ソースコードや設計情報などを保管するデータベースを意味する。 まあバックアップみたいなもんか

 

git=>上のものをすべて含んだものがgitらしい、、? クラウド環境で行っているので詳しいことが分からない

$ git status で現状確認

$ git commit -m"comment" でコミットすなわち反映を行える

$ git log でコメントの確認

 

 このソースコードをwebでバックアップとりましょうっていうサービスがgithubとbitbuucketっていうサービスなんですね。

ぼくはBitbucketというリモートリポジトリを使っていく。

自分のローカルリポジトリからリモートリポジトリに反映(アップロード)していく作業をプッシュっという

 

チュートリアル通りにやったらできてしまったww 

めっちゃ嬉しいw

 

ブランチについて

レポジトリのコピーのこと。実験的にコードを書きたい時にブランチを作成して元のソースコードを触ることなく編集が可能。共同作業をする時に初めて真価を発揮する。正直今の自分にはいらない機能かも(笑)

$ git checkout -b branch-nameで新しいブランチを作成

$ git branch で今あるブランチを一括表示

$ git mv 元ファイル 変更ファイル名 で名前を変更

 

次に編集する

その次にコミットする?

ブランチ=>編集=>コミットっていうくり返しをしっかりするようにしましょう!!

 

手順

$ git checkout -b modify-sample(ブランチ作成)

ファイルを編集する

$ git commit -a -m "improve apprication_controller.rb"(コミットする)

$ git checkout master(マスターに変更)

$ git merge modify-sample(ブランチをマスターにマージする)

$ git branch -d modify-sample

$ git push(bitbucketに反映するのは毎回ではなく、上手くいってから反映した方が良いか?)

$ rails server -b $IP -p $PORT (編集したものを確認)

 

 

 

 

 

railsにおける最初の難関gemとbundleの意味とは

gem -宝石っていう意味らしい。ほかの機能をどんどん追加するときにgem rails -v4.4.4とか記述するから、gemっていうのかも

bundle -他の機能を入れる入れ物らしい。これからgem コマンドで追加していく機能の入れ物なのか、、、、

Wordpressのカスタムフィールドについて

そもそもカスタムフィールドとは?

 

wordpress公式リファレンスによると次の通り

WordPress には、投稿者が投稿に「カスタムフィールド」を追加できる機能があります。この任意の情報はメタデータと呼ばれており、たとえば以下のような情報を含めることができます。

  • 現在のムード: 幸せいっぱい
  • 今読んでいる本: 星の王子様
  • BGM: Rock Around the Clock
  • 今日の天気: 晴れ

さらに、ちょっとしたコードを付け加えるだけで、このメタデータに投稿の表示期限を付け加えたりすることも可能です。

メタデータ「名前」と、その「値」の組み合わせからなっています。「名前」は、メタデータ要素の名称のことを指します。「値」は、その要素に対応する情報を指します。一般的には、固定された「名前」に対し、記事によって異なる「値」を記入します。

また、ひとつの記事で、複数メタデータの名前を使用することもできます。例えば今読んでいる本が2冊ある場合、「今読んでいる本」という名前を2度使い、それぞれに対し1冊の本の題名を記入すればよいのです。

カスタムフィールドを記入した場合、記事中に以下のように表示できます。

  • 今読んでいる本: 星の王子様
  • 今日の天気: 晴れ

 

ふむふむなるほど。つまり読書感想文のようなブログを作る際に、すべての記事に”読んでいる本”の値を付けることができるようです。このデータは後から取り出すこともできます。

こんな関数

<?php $meta_values = get_post_meta($post_id, $key, $single); ?>

 それぞれの値を見ていきましょう

$post_id は $post=>$id で現在の記事を取得。

$key は 取得したい名前を入れる。本なら"今読んでいる本"的な感じに

$single は 良く分からん

 

この機能を使えば、記事それぞれにjsを付けたりすることもできます。ある記事は記事内に盛大なエフェクトををつけてみたりね笑