Rails Tutorial Kapitel 3 Lernen

Wo ich in Kapitel 3 des Rails-Tutorials gedacht habe (.´ ・ ω ・)

StaticPagesController.rb


def home
end

def help
end

Ich habe mich gefragt, warum es funktioniert, obwohl ich nichts geschrieben habe. ⇒ Es scheint, dass die Beschreibung des Standardverhaltens weggelassen wurde. Für Anfänger wird es sein (.´ ・ ω ・)?

StaticPagesController.rb


def home
#app/views/static_pages/home.html.Führen Sie erb(Ausgelassene Beschreibung)
end

def help
#app/views/static_pages/help.html.Führen Sie erb(Ausgelassene Beschreibung)
end

Das nächste, worüber ich gestolpert bin, war der Test ... Ich habe mich im Tech :: Camp-Lehrplan überhaupt nicht damit befasst, also hatte ich keine Vorkenntnisse (.´ ・ ω ・)?

Testgetriebene Entwicklung TDD (Test Driven Development) </ b>

Es scheint eine Sache zu sein, die man beim Testen entwickeln muss. Das im Rails-Tutorial verwendete Minitest ist einfach: Es scheint, dass Tools wie Rspec und Capybara häufig verwendet werden.

(´-ω-`) Ich habe nach Abschluss des Tutorials mehr gelernt ...

Für Spezifikationen, die im Voraus festgelegt wurden, "Test schreiben" ⇒ "Implementieren" ⇒ "Test"

Dinge, die sich beim Entwerfen ändern usw. "Implementieren" ⇒ "Test schreiben" ⇒ "Test"

Wenn der Testcode deutlich kürzer und einfacher zu schreiben ist als der Anwendungscode), schreiben Sie ihn "zuerst". Wenn die Verhaltensspezifikationen nicht vollständig sind, schreiben Sie zuerst den Anwendungscode und das erwartete Verhalten "später". Schreiben Sie Tests "zuerst", wenn sicherheitskritische Probleme oder sicherheitsrelevante Fehler auftreten Wenn Sie einen Fehler finden, schreiben Sie einen Test, der den Fehler "zuerst" reproduziert, richten Sie ein System ein, um Regressionsfehler zu verhindern, und beginnen Sie, ihn zu beheben. Schreiben Sie "später" Tests für Code, der sich wahrscheinlich bald wieder ändert (z. B. Details zur HTML-Struktur). Schreiben Sie beim Refactoring den Test "zuerst". Testen Sie insbesondere intensiv Code, der wahrscheinlich einen Fehler verursacht, oder Code, der wahrscheinlich stoppt.

Ohne Tests gibt es keine Entwicklung ... Es scheint sehr wichtig zu sein, Tests schreiben zu können.

test/controllers/static_pages_controller_test.rb


require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest

  test "should get home" do
    get static_pages_home_url #Greifen Sie auf die URL zu
    assert_response :success  #← Testteil[Überprüfen Sie, ob die HTML-Seite zurückkommt]
  end

  test "should get help" do
    get static_pages_help_url 
    assert_response :success  
  end
end
Und ... das ist derjenige, den ich am meisten nicht verstanden habe.

3.6 Erweiterte Einrichtung Dieser zusätzliche Abschnitt beschreibt die Testeinstellungen. Grundsätzlich gibt es zwei Arten: "Minitest Reporter (3.6.1)", die die Anzeige von Erfolg / Misserfolg festlegen, und "Guard (3.6.2)", der Änderungen in Dateien erkennt und automatisch nur die erforderlichen Tests ausführt. Es ist eins. Der in diesem Abschnitt als Referenz bereitgestellte Code ist ziemlich weit fortgeschritten und muss nicht sofort verstanden werden.

Guard überwacht Dateisystemänderungen und Zum Beispiel ein Tool, das automatisch einen Test ausführt, wenn Sie die Datei static_pages_test.rb usw. ändern.

Oh, es sieht wirklich praktisch aus (* '▽')

Guardfile


#Definieren Sie Guard Matching-Regeln
guard :minitest, spring: "bin/rails test", all_on_start: false do
  watch(%r{^test/(.*)/?(.*)_test\.rb$})
  watch('test/test_helper.rb') { 'test' }
  watch('config/routes.rb') { interface_tests }
  watch(%r{app/views/layouts/*}) { interface_tests }
  watch(%r{^app/models/(.*?)\.rb$}) do |matches|
    "test/models/#{matches[1]}_test.rb"
  end
  watch(%r{^app/controllers/(.*?)_controller\.rb$}) do |matches|
    resource_tests(matches[1])
  end
  watch(%r{^app/views/([^/]*?)/.*\.html\.erb$}) do |matches|
    ["test/controllers/#{matches[1]}_controller_test.rb"] +
    integration_tests(matches[1])
  end
  watch(%r{^app/helpers/(.*?)_helper\.rb$}) do |matches|
    integration_tests(matches[1])
  end
  
  watch('app/views/layouts/application.html.erb') do
    'test/integration/site_layout_test.rb'
  end
  watch('app/helpers/sessions_helper.rb') do
    integration_tests << 'test/helpers/sessions_helper_test.rb'
  end
  watch('app/controllers/sessions_controller.rb') do
    ['test/controllers/sessions_controller_test.rb',
     'test/integration/users_login_test.rb']
  end
  watch('app/controllers/account_activations_controller.rb') do
    'test/integration/users_signup_test.rb'
  end
  watch(%r{app/views/users/*}) do
    resource_tests('users') +
    ['test/integration/microposts_interface_test.rb']
  end
end

#Gibt einen Integrationstest für eine bestimmte Ressource zurück
def integration_tests(resource = :all)
  if resource == :all
    Dir["test/integration/*"]
  else
    Dir["test/integration/#{resource}_*.rb"]
  end
end

#Die Schnittstelle gibt alle zutreffenden Tests zurück
def interface_tests
  integration_tests << "test/controllers/"
end

#Gibt einen Test des Controllers zurück, der der angegebenen Ressource entspricht
def controller_test(resource)
  "test/controllers/#{resource}_controller_test.rb"
end

#Gibt alle Tests zurück, die einer bestimmten Ressource entsprechen
def resource_tests(resource)
  integration_tests(resource) << controller_test(resource)
end

Wenn Sie eine bestimmte Datei ändern, ist dies vorerst so, als würden Sie die Datei im Testordner ausführen. Es scheint, dass die automatische Testüberwachung mit dem Ausführen des folgenden Befehls nach dem Festlegen dieser Datei beginnt.

$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
$ bundle exec guard

$ bin/spring stop    #Wenn der Test aus unbekannten Gründen nicht funktioniert, führen Sie diesen Befehl aus
$ bundle exec guard

Ich glaube nicht, dass ich es selbst anpassen kann (^ ω ^) ...

Eine kurze Überprüfung des Inhalts

config/routes.rb Schreiben Sie eine Beschreibung, um die Aktion # Controller auszuführen, wenn auf ~ zugegriffen wird

config/routes.rb


Rails.application.routes.draw do
  get  'static_pages/home' #Ich benutze diese Beschreibung nicht sehr oft.
 #get 'static_pages/home' => "static_pages#home"Ich habe das Gefühl, dass es üblich ist, so zu schreiben.
  get  'static_pages/help'
  root 'application#hello'
end

app/controller/StaticPagesController.rb Beschreiben Sie den Inhalt jeder Aktion.

app/controller/StaticPagesController.rb


def home
#app/views/static_pages/home.html.Führen Sie erb(Ausgelassene Beschreibung)
end

def help
#app/views/static_pages/help.html.Führen Sie erb(Ausgelassene Beschreibung)
end
app / views / controller name /xxx.html.erb

Der dem Benutzer angezeigte Bildschirm ist eine Ansichtsdatei (Speicherort ist app / views / controller name /xxx.html.erb). erb ist eingebettetes Ruby (eine praktische Erweiterung zum Einbetten von Ruby in HTML-Dateien) Der von <%> <%> umgebene Teil ist der Ruby-Codeteil.

app/views/layouts/application.html.erb Teilen Sie den allgemeinen HTML-Teil in app / views / layouts / application.html.erb

erb:app/views/layouts/application.html.erb


<!DOCTYPE html>
<html>
  <head>
    <title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>
    <%= stylesheet_link_tag    'application', media: 'all',
                               'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag    'application',
                               'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>
Methode bereitstellen

Um den Seitentitel zu übergeben, beschreiben Sie in jeder Ansicht die Bereitstellungsmethode <% bereitstellen (: Titel, "Startseite")%>.

erb:app/views/static_pages/home.html.erb


<% provide(:title, "Home") %>
<h1>Sample App</h1>
<p>
  This is the home page for the
  <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a>
  sample application.
</p>
Tests werden in Dateien unter dem Testordner geschrieben

Durch Schreiben des Tests in test / controller / static_pages_controller_test.rb, Sie können die Antwort, den Titelnamen, das Seitenelement usw. testen, wenn Sie auf jede Seite zugreifen.

test/controllers/static_pages_controller_test.rb


require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest

  def setup
    @base_title = "Ruby on Rails Tutorial Sample App"
  end

  test "should get home" do
    get static_pages_home_url
    assert_response :success
    assert_select "title", "Home | #{@base_title}"
  end

  test "should get help" do
    get static_pages_help_url
    assert_response :success
    assert_select "title", "Help | #{@base_title}"
  end

  test "should get about" do
    get static_pages_about_url
    assert_response :success
    assert_select "title", "About | #{@base_title}"
  end
end
Rückgängig machen
Artikel Erstellen Rückgängig machen
Regler rails generate controller StaticPages home help rails destroy controller StaticPages home help
Modell- rails generate model User name:string email:string rails destroy model User
Datenbank rails db:migrate rails db:rollback(Kehren Sie zum vorherigen Zustand zurück)
Datenbank rails db:migrate $ rails db:migrate VERSION=0(Kehren Sie zum Ausgangszustand zurück)
Befehlsabkürzung
Befehl abschließen Kurzform
rails generate rails g
rails destroy rails d
rails test rails t
rails console rails c
bundle install bundle
Bonus Für diejenigen, die noch zu lang sind ... </ b>

Linux-Befehle können durch Bearbeiten einer Datei mit dem Namen .bashrc ('ω') angepasst werden.

#STEP1 - c9 ~/.Öffnen Sie die Datei mit bashrc.
c9 ~/.bashrc

#STEP2 -Registrieren Sie den abgekürzten Befehl am Ende des Satzes wie unten gezeigt
alias r='rails'
alias g='git'

STEP3 - source ~/.Führen Sie bashrc aus, um den registrierten abgekürzten Befehl zu lesen
source ~/.bashrc

#STEP4
Geben Sie r c ein und prüfen Sie, ob die Rails-Konsole startet.('ω')Nein

Impressionen

Während ich mir das Rails Tutorial-Video (29.800 Yen) ansehe, gebe ich es nach Durchsicht an Qiita aus. Ich bin mit der Erklärung nützlicher Funktionen zufrieden, die in der Webtextversion nicht beschrieben sind. Bisher wurde der Befehl c9 zum Öffnen von Dateien verwendet. Als die Option open zum Befehl c9 hinzugefügt wurde, war es ärgerlich, dass eine neue Datei erstellt wurde, als die Datei nicht vorhanden war. Schließlich ist es einfacher, die Leute dazu zu bringen, es zu erklären. Es ist etwas teuer, aber ich kann das Videomaterial nur empfehlen. Auf Online-Lernseiten wie Udemy, Coursera und EduX können Sie verschiedene Inhalte kostenlos und kostengünstig studieren.

Udemy (https://www.udemy.com/) Coursera (https://ja.coursera.org/) EdX (https://www.edx.org/)

c9 open app/views/static_pages/about.html.erb

Danach können Sie anscheinend mit Strg + p auf cloud9 ('ω') ノ nach Dateien suchen Ich empfehle, zunächst nicht Strg + p zu verwenden, da ich mich daran erinnere, wo und was sich befindet, indem ich den Ordner jedes Mal öffne. Wenn Sie Probleme haben, den Ordner einzeln zu öffnen, verwenden Sie ihn bitte.

Dieses Mal wurde ein neuer Inhalt namens Test eingeführt, der ziemlich umfangreich war. Ich habe immer den gleichen Inhalt mehrmals gelesen. Vor allem, weil ich ein schlechtes Gedächtnis habe, habe ich das Gefühl, dass ich mich endlich immer wieder daran erinnern kann. Wenn ich es überprüfe, bemerke ich etwas anderes als beim ersten Lesen. Bitte lesen Sie es mehrmals statt nur einmal ('ω') ノ

Recommended Posts

Rails Tutorial Kapitel 3 Lernen
Rails Tutorial Kapitel 4 Lernen
Rails Tutorial Kapitel 1 Lernen
Rails Tutorial Kapitel 2 Lernen
Schienen-Tutorial Kapitel 6
Schienen-Tutorial Kapitel 1
Schienen-Tutorial Kapitel 7
Schienen-Tutorial Kapitel 5
Schienen-Tutorial Kapitel 10
Schienen-Tutorial Kapitel 9
Schienen-Tutorial Kapitel 8
[Rails] Lernen mit Rails Tutorial
Rails Tutorial Memorandum (Kapitel 3, 3.1)
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 10
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 7
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 4
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 6
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 5
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 2
Rails Tutorial Kapitel 0: Vorbereitende Grundkenntnisse 5
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 3
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 8
Schienen Tutry
Schienen Tutorial
Schienen Tutry
Deshalb habe ich dieses Mal die Methode "Verknüpfen des Inhalts des Verzeichnisses" übernommen. Ich denke, es wird je nach Zeit und Fall richtig verwendet. Tutorial zu Linux, ln, Linux-Befehlsschienen
[Rails Tutorial Kapitel 4] Ruby mit Rails-Geschmack
Schienen Tutry
Schienen Tutorial
Schienen Tutorial
[Rails Tutorial Kapitel 5] Erstellen Sie ein Layout
Tutorial zum Kauen der Schienen [Kapitel 2 Spielzeuganwendung]
Rails Tutorial (4. Ausgabe) Memo Kapitel 6
Rails Tutorial Test
Rails Tutorial Memorandum 1
Rails Lerntag 3
Rails Tutorial Memorandum 2
Rails Lerntag 4
Schienen lernen Tag 2
[Anfänger] Rails Tutorial
Schienen Lerntag 1
Kapitel 4 Rails Flavoured Ruby
Schienen Tutorial Cheet Sheet
Rails Tutorial Kapitel 1 Von Null bis Bereitstellung [Try]
Schienen lernen 2. Tag 2
Schienen lernen Tag 1 Teil 3
Schienen lernen Tag 3 Teil 2
Kauen der Schienen Tutorial [Kapitel 3 Erstellen fast statischer Seiten]
Schienen lernen Tag 1 Teil 2
Schienen Tutorial Fighting Record III
Beheben Sie Gem :: FilePermissionError, wenn Sie Gem Install Rails ausführen (Rails Tutorial Kapitel 1).