Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@tomu28

RailsTutorialを進めていく中で躓いたことや、ポイントだと感じたこと

More than 1 year has passed since last update.

はじめに

こんにちは、Tomuです。今回がQiita初投稿となります。
RailsTutorialを進めていく中で、躓いたことやポイントだと感じたことなどを書いていきます。
間違っていることや気になったことがあれば、気軽にコメントしていただけると幸いです。

1章

herokuで変更し、起動コマンド

git commit -a -m "Update Gemfile for Heroku"
git push heroku master
heroku open

1章まとめ

  • Ruby on Railsとは、Web開発のためのフレームワークであり、Rubyプログラミング言語によって記述されている。
  • 事前設定済みのクラウド環境を利用することで、Railsのインストール、アプリケーションの生成、生成されたファイルの編集を簡単に行うことができる。
  • Railsにはrailsという名前のコマンドラインコマンドがあり、rails newで新しいアプリケーションを生成したり、rails serverでローカルサーバーを実行したりできる。
  • コントローラのアクションを追加したり、ルートルーティングを変更したりするだけで- -「hello, world」アプリケーションを作成できる。
  • Gitによるバージョン管理を導入し、Bitbucketの非公開リポジトリにプッシュする理由は、データの喪失を防止し、他の開発者との共同作業を行えるようにするため。
  • 作成したアプリケーションをHerokuの本番環境にデプロイした。

RailsTutorial1章より

2章

2章まとめ

  • Scaffold機能でコードを自動生成すると、Webのあらゆる部分からモデルデータにアクセスしてやりとりできるようになる
  • Scaffoldは何よりも手っ取り早いのがとりえだが、これを元にRailsを理解するには向いていない
  • RailsではWebアプリケーションの構成にMVC (Model-View-Controller) というモデルを採用している
  • Railsが解釈するRESTには、標準的なURLセットと、データモデルとやりとりするためのコントローラアクションが含まれている
  • Railsではデータのバリデーション (validation) がサポートされており、データモデルの属性の値に制限をかけることができる
  • Railsには、さまざまなデータモデル同士を関連付けを定義するための組み込み関数が多数用意されている
  • Railsコンソールを使うと、コマンドラインからRailsアプリケーションとやりとりすることができる

RailsTutorial2章より

2章でGit関連で躓いたこと

  • .ignore ファイルの範囲指定がうまくいっていなかった
  • .idea ディレクトリでコンフリクトが起きていたので、ローカルとリモートで削除してrai
  • deployブランチでmasterをpull

 を行い解決しました

問題点

herokuでデプロイが出来ていない

原因として考えられるのは
ローカルでは問題なく動いていたので、
herokuの本番環境でデータベースのマイグレーションを行なっていないこと

以下を行い解決しました

heroku run rails db:migrate

をiTermより実行して、本番データベースのマイグレーションを行なった
次にホームページからherokuのデプロイを行なったところ出来た

3章

StaticPagesコントローラを生成する(静的ページの作成)

rails generate controller StaticPages home help

3章まとめ

  • 新しいRailsアプリケーションをゼロから作成したのはこれで3度目。今回も必要なgemのインストール、リモートリポジトリへのプッシュ、production環境まで行った
  • コントローラを新規作成するためのrailsコマンドはrails generate controller ControllerName アクション名 (省略可)。
  • 新しいルーティングはconfig/routes.rbファイルで定義する
  • Railsのビューでは、静的HTMLの他にERB (埋め込みRuby: Embedded RuBy) が使える
  • 常に自動化テストを使って新機能開発を進めることで、自信を持ってリファクタリングできるようになり、回帰バグも素早くキャッチできるようになる
  • テスト駆動開発では「red ・ green ・REFACTOR」サイクルを繰り返す
  • Railsのレイアウトでは、アプリケーションのページの共通部分をテンプレートに置くことでコードの重複を解決することができる

RailsTutorial3章より

4章

pメソッド

文字列は、 "" に囲まれて出力されるため、特殊文字(\nや\t)がそのまま出力される

empty?メソッド

"" の中身が半角スペースであってもfalseとなる

"".empty?
=> true

" ".empty?
=> false

4章まとめ

  • Rubyは文字列を扱うためのメソッドを多数持っている
  • Rubyの世界では、すべてがオブジェクトである
  • Rubyではdefというキーワードを使ってメソッドを定義する
  • Rubyではclassというキーワードを使ってクラスを定義する
  • Railsのビューでは、静的HTMLの他にERB (埋め込みRuby: Embedded RuBy) も使える
  • Rubyの組み込みクラスには配列、範囲、ハッシュなどがある
  • Rubyのブロックは (他の似た機能と比べ) 柔軟な機能で、添え字を使ったデータ構造よりも自然にイテレーションができる
  • シンボルとはラベルである。追加的な構造を持たない (代入などができない) 文字列みたいなもの
  • Rubyではクラスを継承できる
  • Rubyでは組み込みクラスですら内部を見たり修正したりできる
  • 「deified」という単語は回文である

RailsTutorial4章より

5章

rails testでつまずいたこと

_header.html.erb ファイルで
<%= link_to "sample app", root_path, id: "logo" %>
の文が
<%= link_to "sample app", 'root_path', id: "logo" %>
となっていたため、root_path が見つからないとエラーが出ていた

_header.html.erb
<header class="navbar navber-fixed-top navbar-inverse">
<div class="container">
    <%= link_to "sample app", root_path, id: "logo" %>
    <nav>
    <ul class="nav navbar-nav navbar-right">
        <li><%= link_to "Home", root_path %></li>
        <li><%= link_to "Help", help_path %></li>
        <li><%= link_to "Log in", '#' %></li>
    </ul>
    </nav>
</div>
</header>

5章まとめ

  • HTML5を使ってheaderやfooter、logoやbodyといったコンテンツのレイアウトを定義しました
  • Railsのパーシャルは効率化のために使われ、別ファイルにマークアップを切り出すことができます
  • CSSは、CSSクラスとidを使ってレイアウトやデザインを調整します
  • Bootstrapフレームワークを使うと、いい感じのデザインを素早く実装できる
  • SassとAsset Pipelineは、(開発効率のために切り分けられた) CSSの冗長な部分を圧縮し、本番環境に最適化した結果を出力する
  • Railsのルーティングでは自由にルールを定義することができ、また、その際に名前付きルートも使えるようになる
  • 統合テストは、ブラウザによるページ間の遷移を効率的にシミュレートする

RailsTutorial5章より

6章

Userモデル

Model-View-Controller (MVC)のMに該当する

Rails にはマイグレーション(Migration)があるため、データ定義をRubyで行うことができる
- そのため、SQLのDDL(CREATE(表の創成、定義)、DROP(表の削除)など)を新たに学ぶ必要がない。

開発環境では、SQLite

本番環境では、PostgreSQL を用いる

Userモデルを生成

$ rails generate model User name:string email:string

マイグレーションのロールバック(rollback)

$ rails db:rollback

オブジェクトの継承の確認

>> user.new

=> #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil>

>> User.superclass

=> ApplicationRecord(abstract)

>> ApplicationRecord.superclass

=> ActiveRecord::Base

emailに関するエラー情報のみ取得

>> u.errors.messages[:email]

=> ["can't be blank"]

配列の簡単な作成メソッド %w

>> %w[foo bar baz]

=> ["foo", "bar", "baz"]

正規表現エディタ Rubular

Rubylar

6章まとめ

  • マイグレーションを使うことで、アプリケーションのデータモデルを修正することができる
  • Active Recordを使うと、データモデルを作成したり操作したりするための多数のメソッドが使えるようになる
  • Active Recordのバリデーションを使うと、モデルに対して制限を追加することができる
  • よくあるバリデーションには、存在性・長さ・フォーマットなどがある
  • 正規表現は謎めいて見えるが非常に強力である
  • データベースにインデックスを追加することで検索効率が向上する。また、データベースレベルでの一意性を保証するためにも使われる
  • has_secure_passwordメソッドを使うことで、モデルに対してセキュアなパスワードを追加することができる

RailsTutorial6章より

随時更新していきます

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tomu28
興味を持ったら、まず調べて行動!毎日コツコツと技術力を高めていきたいです。技術ブログはこちらに移行しました➡️https://tomu28.jp/tech-blog

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?