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 (.´ ・ ω ・)?
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
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 (^ ω ^) ...
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
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>
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>
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
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) |
Befehl abschließen | Kurzform |
---|---|
rails generate | rails g |
rails destroy | rails d |
rails test | rails t |
rails console | rails c |
bundle install | bundle |
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
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