Tutoriel Rails Chapitre 3 Apprentissage

Où j'ai pensé (.´ ・ ω ・) dans le chapitre 3 du didacticiel Rails

StaticPagesController.rb


def home
end

def help
end

Je me demandais pourquoi ça marche alors que je n'ai rien écrit. ⇒Il semble que la description du comportement par défaut soit omise. Pour les débutants, ce sera (.´ ・ ω ・)?

StaticPagesController.rb


def home
#app/views/static_pages/home.html.Exécutez erb(Description omise)
end

def help
#app/views/static_pages/help.html.Exécutez erb(Description omise)
end

La prochaine chose sur laquelle je suis tombé par hasard était le test ... Je ne l'ai pas traité du tout dans le programme Tech :: Camp, donc je n'avais aucune connaissance préalable (.´ ・ ω ・)?

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

Cela semble être une chose à développer pendant les tests. Le minitest utilisé dans le didacticiel Rails est simple, Il semble que des outils tels que Rspec et Capybara soient couramment utilisés.

(´-ω-`) J'ai appris plus après avoir terminé le tutoriel ...

Pour les spécifications définies à l'avance, "Ecrire un test" ⇒ "Implémenter" ⇒ "Test"

Les choses qui changent lors de la création de designs, etc. "Implémenter" ⇒ "Ecrire un test" ⇒ "Test"

Si le code de test est clairement plus court et plus facile à écrire que le code de l'application), écrivez-le "d'abord" Si les spécifications comportementales ne sont pas complètes, écrivez d'abord le code de l'application et le comportement attendu «plus tard» Écrivez les tests «en premier» lorsque des problèmes de sécurité ou des erreurs liées à la sécurité se produisent Si vous trouvez un bogue, écrivez un test qui reproduit le bogue "en premier", mettez en place un système pour éviter les bogues de régression et commencez à le corriger. Rédigez des tests «plus tard» pour du code susceptible de changer à nouveau prochainement (comme les détails de la structure HTML) Lors du refactoring, écrivez le test "d'abord". En particulier, testez intensivement le code susceptible de provoquer une erreur ou le code susceptible de s'arrêter.

Il n'y a pas de développement sans tests ... Il semble très important de pouvoir écrire des tests.

test/controllers/static_pages_controller_test.rb


require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest

  test "should get home" do
    get static_pages_home_url #Accéder à l'URL
    assert_response :success  #← Pièce d'essai[Vérifiez si la page HTML revient]
  end

  test "should get help" do
    get static_pages_help_url 
    assert_response :success  
  end
end
Et ... c'est celui que je n'ai pas compris le plus.

3.6 Configuration avancée Cette section supplémentaire décrit les paramètres de test. De manière générale, il existe deux types: "Minitest reporters (3.6.1)" qui définit l'affichage de succès / échec et "Guard (3.6.2)" qui détecte les changements dans les fichiers et n'exécute automatiquement que les tests nécessaires. C'est un. Le code fourni à titre de référence dans cette section est raisonnablement avancé et n'a pas besoin d'être compris tout de suite.

Guard surveille les modifications du système de fichiers et Par exemple, un outil qui exécute automatiquement un test lorsque vous modifiez le fichier static_pages_test.rb, etc.

Oh, ça a l'air vraiment pratique (* '▽')

Guardfile


#Définir les règles de correspondance de la garde
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

#Renvoie un test d'intégration pour une ressource donnée
def integration_tests(resource = :all)
  if resource == :all
    Dir["test/integration/*"]
  else
    Dir["test/integration/#{resource}_*.rb"]
  end
end

#L'interface renvoie tous les tests applicables
def interface_tests
  integration_tests << "test/controllers/"
end

#Retourne un test du contrôleur correspondant à la ressource donnée
def controller_test(resource)
  "test/controllers/#{resource}_controller_test.rb"
end

#Renvoie tous les tests correspondant à une ressource donnée
def resource_tests(resource)
  integration_tests(resource) << controller_test(resource)
end

Pour le moment, si vous modifiez un fichier spécifique, c'est comme exécuter le fichier dans le dossier de test. Il semble que la surveillance automatique des tests commence par l'exécution de la commande suivante après avoir défini ce fichier.

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

$ bin/spring stop    #Si le test ne fonctionne pas pour des raisons inconnues, essayez d'exécuter cette commande
$ bundle exec guard

Je ne pense pas pouvoir le personnaliser moi-même (^ ω ^) ...

Une brève revue du contenu

config/routes.rb Écrivez une description pour exécuter l'action du # contrôleur lors de l'accès à ~

config/routes.rb


Rails.application.routes.draw do
  get  'static_pages/home' #Je n'utilise pas cette description très souvent.
 #get 'static_pages/home' => "static_pages#home"J'ai le sentiment qu'il est courant d'écrire comme ça.
  get  'static_pages/help'
  root 'application#hello'
end

app/controller/StaticPagesController.rb Décrivez le contenu de chaque action.

app/controller/StaticPagesController.rb


def home
#app/views/static_pages/home.html.Exécutez erb(Description omise)
end

def help
#app/views/static_pages/help.html.Exécutez erb(Description omise)
end
app / views / nom du contrôleur /xxx.html.erb

L'écran affiché à l'utilisateur est un fichier de vue (l'emplacement de stockage est app / views / controller name /xxx.html.erb) erb est un ruby intégré (une extension pratique pour intégrer Ruby dans des fichiers html) La partie entourée de <%> <%> est la partie de code Ruby.

app/views/layouts/application.html.erb Partagez la partie HTML commune dans 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>
fournir une méthode

Pour transmettre le titre de la page, décrivez la méthode de fourniture <% provide (: title, "Home")%> dans chaque vue.

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>
Les tests sont écrits dans des fichiers sous le dossier de test

En écrivant le test dans test / controllers / static_pages_controller_test.rb, Vous pouvez tester la réponse, le nom du titre, l'élément de page, etc. lors de l'accès à chaque page.

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
Comment annuler
article Créer Comment annuler
manette rails generate controller StaticPages home help rails destroy controller StaticPages home help
modèle rails generate model User name:string email:string rails destroy model User
Base de données rails db:migrate rails db:rollback(Revenir à l'état précédent)
Base de données rails db:migrate $ rails db:migrate VERSION=0(Revenir à l'état initial)
Abréviation de la commande
Commande complète Forme raccourcie
rails generate rails g
rails destroy rails d
rails test rails t
rails console rails c
bundle install bundle
Bonus pour ceux qui sont encore trop longs ... </ b>

Les commandes Linux peuvent être personnalisées en éditant un fichier appelé .bashrc ('ω')

#STEP1 - c9 ~/.Ouvrez le fichier avec bashrc.
c9 ~/.bashrc

#STEP2 -Enregistrez la commande abrégée à la fin de la phrase comme indiqué ci-dessous
alias r='rails'
alias g='git'

STEP3 - source ~/.Exécutez bashrc pour lire la commande abrégée enregistrée
source ~/.bashrc

#STEP4
Entrez r c et vérifiez si la console des rails démarre.('ω')Non

Impressions

En regardant la vidéo du didacticiel Rails (29 800 yens), je l'ai sortie sur Qiita après l'avoir examinée. Je suis satisfait de l'explication des fonctions utiles qui ne sont pas décrites dans la version texte Web. Jusqu'à présent, la commande c9 était utilisée pour ouvrir des fichiers. Lorsque l'option open a été ajoutée à la commande c9, il était ennuyeux qu'un nouveau fichier soit créé alors que le fichier n'existait pas. Après tout, il est plus facile d'amener les gens à l'expliquer. C'est un peu cher, mais je recommande vivement le matériel vidéo. Vous pouvez étudier divers contenus gratuitement à bas prix sur des sites d'apprentissage en ligne tels que Udemy, Coursera et EduX.

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

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

Après cela, il semble que vous puissiez rechercher des fichiers avec Ctrl + p sur cloud9 ('ω') ノ Je recommande de ne pas utiliser Ctrl + p au début car je me souviens où et ce que c'est en ouvrant le dossier à chaque fois. Eh bien, si vous rencontrez des difficultés pour ouvrir le dossier un par un, veuillez l'utiliser.

Cette fois, un nouveau contenu appelé test a été introduit, il était donc assez riche. J'ai toujours lu le même contenu plusieurs fois. Surtout que j'ai une mauvaise mémoire, j'ai l'impression de pouvoir enfin m'en souvenir encore et encore. Lorsque je l'examine, je remarque quelque chose de différent de la première fois que je l'ai lu. Veuillez le lire plusieurs fois au lieu d'une seule ('ω') ノ

Recommended Posts

Tutoriel Rails Chapitre 3 Apprentissage
Tutoriel Rails Chapitre 4 Apprentissage
Tutoriel Rails Chapitre 1 Apprentissage
Tutoriel Rails Chapitre 2 Apprentissage
tutoriel rails Chapitre 6
tutoriel rails Chapitre 1
tutoriel rails Chapitre 7
tutoriel rails Chapitre 5
tutoriel rails Chapitre 10
tutoriel rails Chapitre 9
tutoriel rails Chapitre 8
[Rails] Didacticiel Apprendre avec les rails
Mémorandum du didacticiel Rails (Chapitre 3, 3.1)
Tutoriel Rails 6e édition Résumé d'apprentissage Chapitre 10
Rails Tutorial 6e édition Résumé de l'apprentissage Chapitre 7
Tutoriel Rails 6e édition Résumé de l'apprentissage Chapitre 4
Tutoriel Rails 6e édition Résumé de l'apprentissage Chapitre 6
Tutoriel Rails 6e édition Résumé de l'apprentissage Chapitre 5
Rails Tutorial 6e édition Résumé de l'apprentissage Chapitre 2
Tutoriel Rails Chapitre 0: Apprentissage préliminaire des connaissances de base 5
Tutoriel Rails 6e édition Résumé de l'apprentissage Chapitre 3
Rails Tutorial 6e édition Résumé d'apprentissage Chapitre 8
rails tutry
tutoriel sur les rails
rails tutry
tutoriel sur les rails
[Tutoriel Rails Chapitre 4] Rubis à saveur de Rails
rails tutry
tutoriel sur les rails
tutoriel sur les rails
[Tutoriel Rails Chapitre 5] Créer une mise en page
Tutoriel de mastication des rails [Chapitre 2 Application jouet]
Tutoriel Rails (4e édition) Mémo Chapitre 6
Test du tutoriel sur les rails
Mémorandum du didacticiel Rails 1
Rails Learning jour 3
Tutoriel Rails Memorandum 2
Rails Learning jour 4
Rails Learning jour 2
[Débutant] Tutoriel Rails
rails d'apprentissage jour 1
Rubis aromatisé aux rails
Fiche technique du didacticiel Rails
Tutoriel Rails Chapitre 1 De zéro au déploiement [Essayer]
Rails apprentissage 2ème jour 2
Rails Learning Jour 1 Partie 3
Rails Learning Jour 3 Partie 2
Tutoriel de mastication des rails [Chapitre 3 Création de pages presque statiques]
Rails Learning Jour 1 Partie 2
rails Tutorial Fighting Record III
Résoudre Gem :: FilePermissionError lors de l'exécution de rails d'installation de gem (Tutoriel Rails Chapitre 1)