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 (.´ ・ ω ・)?
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
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 (^ ω ^) ...
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
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>
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>
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
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) |
Commande complète | Forme raccourcie |
---|---|
rails generate | rails g |
rails destroy | rails d |
rails test | rails t |
rails console | rails c |
bundle install | bundle |
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
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