読者です 読者をやめる 読者になる 読者になる

キリンめも

記事を書いています #ruby #rails #swift

Railsの会13日目「3章 test・まとめ / 4章関数作成」

 

今回の進捗です。\\\└('ω')┘////

注意 : 3.4.4 〜スタート。3.6(演習)〜 3.7.2  までは飛ばしてます。

 

f:id:geta206:20160719170258p:plain

agenda

  1. 復習
  2. helloアクション
  3. 3章のまとめ
  4. 第4章 ヘルパー
  5. 4章まとめ

 

1.復習

おさらいです!

/app/aprication.html.erb にhtml js とか記載される。

 

$ rails routes         受け取ったURLを認識、適切なコントローラ内にアクションで割り当てる。

      よくデバッグ ・ルーティング作成 に使われる

 

⚠️そのままではRails環境を読み込むため遅い。

rails routes を高速にする方法

  • pryとpry-rails gemがインストールされているなら、rails consoleを起動しておいてshow-routesを実行
  • spring gemがインストールされているならspring rake routesとすれば2度目以降から高速になる
  • dev環境が起動中ならhttp://localhost:3000/rails/infoを参照する (Rails 4)

 

Rails のルーティング | Rails ガイド

 

2.helloアクション

ページを作るとき必ず設定しないといけない。

  • ルート設定 [  config/routes.rb  ] 

 get 'static_pages/home'

  • ApplicationController [  app/controllers/static_pages_controller.rb  ]
def hogehoge
    .
    .
    .
  end
 おまけ   $ ps aux        grep spring

ps  プロセスを表示

動作が遅い時に使う。Railsではテストが動かない時(テスト系)で使用する。

a    自分以外のユーザプロセス

u    User名と開始時間

x    制御端末のないプロセス情報

ps ax  システム上全てのプロセス表示

 

    注 ps -aux はxという名前のuserが所有するすべてのプロセスを表示。

   xというuserが存在しなければ、 ps auxというコマンドと解釈し警告する。

  ps - コマンド (プログラム) の説明 - Linux コマンド集 一覧表

 

grep 文字列検索      (テキストファイルとか正規表現

grep【コマンド】とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

spring      railsのアプリケーション用プリローダ(待ち時間を視覚化したもの)。マイグレーション(依存しているアプリケーションを再利用して新しい環境に移行)するとき、railsを再起動しなくていいようにする。

springの特徴

・開発環境が高速になる

・springサーバが起動される。設定を監視、再ロードする。

rails [console  runner  generate  destroy  ]と rakeが対象

自動起動・終了される

・デフォルトではspringが使われないので、有効にする必要がある。

 

  spring有効にする方法

 rails newしたプロジェクト内で実行

$ bundle exec spring binstub --all

bin/springが新規追加され、bin/rails と bin/rakeにspringをloadするコードが追加。

spring を使ってテスト高速化 - Qiita

Rails 4.1以降のコンソールコマンドは必ず bin/ を付けなきゃいけないの? - Qiita

 

3. 3章まとめ

  • gemインストールリモートへpush、プロダクション(本番)環境を行った。
  • コントローラを新規作成するrailsコマンドは[ generate  /controller / contorollerName]
  • コントローラー名はキャメルケース
  • アクション名はスネークケース
  • 新しいルーティングは config/routes.rb ファイルで定義する。
  •  自動化テスト作成(テスト駆動開発 レッド、グリーン、リファクタリングサイクル)
  • Railsレイアウトはアプリケーションページの共通部分をテンプレートに置くと重複させなくて済む。
 おまけ  エラーまとめ
1  引数の数が間違っている(呼び出しa とメソッゾの引数b) (a for b)

 0 for 1 (1 個であるべきところに0 個来た)という内容になっている。

f:id:geta206:20170311195955p:plain

Rubyのエラーメッセージwrong number of arguments (a for b)の意味 - Qiita

 

2   xcode 古い! (Xcode 開いてupdateすればok)

The file "/usr/include/iconv.h" is missing in your build environment,
which means you haven't installed Xcode Command Line Tools properly.

To install Command Line Tools, try running `xcode-select --install` on
terminal and follow the instructions.  If it fails, open Xcode.app,
select from the menu "Xcode" - "Open Developer Tool" - "More Developer
Tools" to open the developer site, download the installer for your OS
version and run it.

Agreeing to the Xcode/iOS license... のエラーがでた時の対処法 - Qiita

Mac で Rails を使う - the glue

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

第4章

4. ヘルパー

基本はviewの補助として使用する。

メディアタイプ Rubyの4つの概念

  1. stylesheet_link_tag     Rails組み込み関数。このことを(ヘルパーという)

  2. カッコを使わない関数の呼出し

  3.  シンボル ソースでは文字列に見えるけど内部は整数として扱われる。例

my_name.object_id # => 8848520

               http://melborne.github.io/2008/08/02/Ruby 

  1.  ハッシュ   連想配列    RailsのHashの使い方 

           配列と同じく複数の他のオブジェクトを管理するために使うオブジェクト。

ーーーーーーーーーーーーーーーーーーーーーーーーーーー

 この行を変更します…!

<%= yield(:title) %> | Ruby on Rails Tutorial Sample App

 これを下のように変更。

<% provide(:title, "Home") %>

 

ーーーーーーーーーーーーーーーーーーーーーーーーーー

  provide関数とは

provideヘルパーでlayoutにパラメータを引き渡す

内容

layoutに動的にパラメータを引渡したいような場合に
provideヘルパーを利用します。

呼び元

- yield(:key)

呼び先

- provide(:key, value)

tbpgr.hatenablog.com

もしprovideを消去すると・・・

 | Ruby on Rails Tutorial Sample App

と表示される。

上の行の「|」を消す!

 

リスト4.2: full_titleヘルパーを定義するapp/helpers/application_helper.rb
module ApplicationHelper

  # ページごとの完全なタイトルを返す
  def full_title(page_title = '')
    base_title = "Ruby on Rails Tutorial Sample App"
    if page_title.empty?
      base_title
    else
      page_title + " | " + base_title
    end
  end
end

上記のコードを書いて

<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>

   を下記に変更

<title><%= full_title(yield(:title)) %></title>

 その他にも application.html.erb に書かれている内容はけす(コードの重複をなくす)

      static_pages / home.html.erb 

      static_pages / help.html.erb 

      static_pages / about.html.erb 

これで完成()

 

5. 4章まとめ

今回行ったこと

  • root  / メインサイト  get / サブサイト
  • Hello アクション(root設定とメゾットの定義)
  • ヘルパー 関数作成

 

宿題

基礎をもう一度。(toy_app)作成

http://railsdoc.com/rails_base