Guides.rubyonrails.org

Tento návod předpokládá, že máte základní znalosti o Rails z příručky Začínáme s Rails.

Tento návod je založen na Rails 3.0. Některé zde uvedené kódy nebudou fungovat v dřívějších verzích Rails.

1 Základy příkazového řádku

Existuje několik příkazů, které jsou pro každodenní používání Rails naprosto zásadní. V pořadí podle toho, jak často je budete pravděpodobně používat, jsou to:

  • rails console
  • rails server
  • rake
  • rails generate
  • rails dbconsole
  • rails new app_name

Vytvořme si jednoduchou aplikaci Rails, abychom si jednotlivé příkazy prošli v souvislostech.

1.1 rails new

První věc, kterou budeme chtít udělat, je vytvořit novou aplikaci Rails spuštěním příkazu rails new po instalaci systému Rails.

Příkazem gem install rails můžete nainstalovat gem rails, pokud jej ještě nemáte. Postupujte podle pokynů v poznámkách k vydání Rails 3

$ rails new commandsapp create create README.rdoc create .gitignore create Rakefile create config.ru create Gemfile create app ... create tmp/cache create tmp/pids create vendor/plugins create vendor/plugins/.gitkeep

Rails vám nastaví, jak se zdá, obrovské množství věcí pro tak malý příkaz! Nyní máte k dispozici celou adresářovou strukturu Rails se vším kódem, který potřebujete ke spuštění naší jednoduché aplikace hned po vybalení z krabice.

1.2 rails server

Příkaz rails server spustí malý webový server WEBrick, který je dodáván spolu s Ruby. Ten použijete vždy, když budete chtít přistupovat ke své aplikaci prostřednictvím webového prohlížeče.

WEBrick není jedinou možností, jak obsluhovat systém Rails. K tomu se dostaneme později.

Bez další práce bude server Rails spouštět naši novou nablýskanou aplikaci Rails:

Pomocí pouhých tří příkazů jsme zprovoznili server Rails naslouchající na portu 3000. Přejděte do prohlížeče a otevřete http://localhost:3000, uvidíte spuštěnou základní aplikaci Rails.

Pro spuštění serveru můžete také použít alias „s“: rails s.

Server lze spustit na jiném portu pomocí volby -p. Výchozí vývojové prostředí lze změnit pomocí parametru -e.

$ rails server -e production -p 4000

Příkaz -b váže Rails na zadanou ip, ve výchozím nastavení je to 0.0.0.0. Server můžete spustit jako démon předáním parametru -d.

1.3 rails generate

Příkaz rails generate používá k vytvoření celé řady věcí šablony. Samotné spuštění příkazu rails generate zobrazí seznam dostupných generátorů:

Pro vyvolání příkazu generátor můžete také použít alias „g“: rails g.

Další generátory můžete nainstalovat prostřednictvím generátorů gems, částí zásuvných modulů, které nepochybně nainstalujete, a dokonce si můžete vytvořit vlastní!

Používání generátorů vám ušetří velké množství času při psaní kotlového kódu, tedy kódu, který je nezbytný pro fungování aplikace.

Představíme si vlastní řadič pomocí generátoru řadičů. Jaký příkaz však máme použít? Zeptejme se generátoru:

Všechny konzolové nástroje Rails mají text nápovědy. Stejně jako u většiny *nixových utilit můžete zkusit přidat na konec –help nebo -h, například rails server –help.

Generátor kontrolérů očekává parametry ve tvaru generate controller ControllerName action1 action2. Vytvoříme kontrolér Greetings s akcí hello, který nám něco pěkného řekne.

$ rails generate controller Greetings hello create app/controllers/greetings_controller.rb route get "greetings/hello" invoke erb create app/views/greetings create app/views/greetings/hello.html.erb invoke test_unit create test/functional/greetings_controller_test.rb invoke helper create app/helpers/greetings_helper.rb invoke test_unit create test/unit/helpers/greetings_helper_test.rb invoke assets create app/assets/javascripts/greetings.js invoke css create app/assets/stylesheets/greetings.css

Co všechno to vygenerovalo? Ujistil se, že v naší aplikaci je hromada adresářů, a vytvořil soubor kontroléru, soubor pohledu, soubor funkčního testu, pomocný soubor pro pohled, soubor javascriptu a soubor stylů.

Podívejte se na kontrolér a trochu ho upravte (v app/controllers/greetings_controller.rb):

class GreetingsController < ApplicationController def hello @message = "Hello, how are you today?" endend

Poté pohled, který zobrazí naši zprávu (v app/views/greetings/hello.html.erb):

<h1>A Greeting for You!</h1><p><%= @message %></p>

Zapněte server pomocí serveru rails.

$ rails server=> Booting WEBrick...

Ujistěte se, že v app/views/(controller) nemáte žádné soubory „tilde backup“, jinak WEBrick nezobrazí očekávaný výstup. Zdá se, že se jedná o chybu v systému Rails 2.3.0.

Adresa URL bude http://localhost:3000/greetings/hello.

Systém Rails obsahuje také generátor datových modelů.

Seznam dostupných typů polí naleznete v dokumentaci API pro metodu column třídy TableDefinition.

Místo přímého generování modelu (což budeme dělat později) však nastavíme lešení. Lešení v Rails je kompletní sada modelu, migrace databáze pro tento model, kontroléru pro manipulaci s ním, pohledů pro zobrazení a manipulaci s daty a sady testů pro každý z výše uvedených prvků.

Nastavíme jednoduchý prostředek s názvem „HighScore“, který bude sledovat naše nejvyšší skóre ve videohrách, které hrajeme.

Generátor zkontroluje, zda existují adresáře pro modely, kontroléry, pomocníky, rozvržení, funkční a jednotkové testy, soubory stylů, vytvoří pohledy, kontrolér, model a migraci databáze pro HighScore (vytvoří tabulku high_scores a pole), postará se o trasu pro zdroj a nové testy pro vše.

Migrace vyžaduje, abychom migrovali, tj. spustili nějaký kód v jazyce Ruby (žijící v tom 20100209025147_create_high_scores.rb), který upraví schéma naší databáze. Kterou databázi? Databáze sqlite3, kterou nám Rails vytvoří, když spustíme příkaz rake db:migrate. Za chvíli si o systému Rake povíme více do hloubky.

Povíme si něco o jednotkových testech. Jednotkové testy jsou kód, který testuje a vytváří tvrzení o kódu. Při testování jednotek vezmeme malou část kódu, například metodu modelu, a otestujeme její vstupy a výstupy. Unit testy jsou vaším přítelem. Čím dříve se smíříte s tím, že kvalita vašeho života se drasticky zvýší, když budete svůj kód unit testovat, tím lépe. Vážně. Za chvíli si ho vytvoříme.

Podívejme se na rozhraní, které pro nás Rails vytvořil.

$ rails server

Přejděte do prohlížeče a otevřete http://localhost:3000/high_scores, nyní můžeme vytvářet nová vysoká skóre (55 160 ve hře Space Invaders!)

1.4 rails console

Příkaz console umožňuje komunikovat s aplikací Rails z příkazového řádku. Na spodní straně rails console používá IRB, takže pokud jste ho někdy používali, budete jako doma. Hodí se k testování rychlých nápadů s kódem a ke změně dat na straně serveru, aniž byste se dotkli webové stránky.

K vyvolání konzoly můžete také použít alias „c“: rails c.

Pokud chcete otestovat nějaký kód, aniž byste měnili jakákoli data, můžete to udělat vyvoláním příkazu rails console –sandbox.

$ rails console --sandboxLoading development environment in sandbox (Rails 3.1.0)Any modifications you make will be rolled back on exitirb(main):001:0>

1.5 rails dbconsole

rails dbconsole zjistí, kterou databázi používáte, a hodí vás do libovolného rozhraní příkazového řádku, které byste s ní použili (a zjistí také parametry příkazového řádku, které mu máte zadat!). Podporuje MySQL, PostgreSQL, SQLite a SQLite3.

Pro vyvolání dbconsole můžete také použít alias „db“: rails db.

1.6 rails plugin

Příkaz rails plugin zjednodušuje správu pluginů. Zásuvné moduly lze instalovat podle názvu nebo adresy URL jejich úložiště. Pokud chcete instalovat zásuvný modul z repozitáře Git, musíte mít nainstalovaný systém Git. Totéž platí i pro Subversion.

$ rails plugin install https://github.com/technoweenie/acts_as_paranoid.git+ ./CHANGELOG+ ./MIT-LICENSE......

1.7 rails runner

runner neinteraktivně spouští kód Ruby v kontextu Rails. Například:

$ rails runner "Model.long_running_method"

Pro vyvolání runneru můžete také použít alias „r“: rails r.

Přepínačem -e můžete určit prostředí, ve kterém má příkaz runner pracovat.

$ rails runner -e staging "Model.long_running_method"

1.8 rails destroy

Představte si destroy jako opak generate. Zjistí, co udělal příkaz generate, a zruší to.

Pro vyvolání příkazu destroy můžete také použít alias „d“: rails d.

2 Rake

Rake je Ruby Make, samostatný nástroj Ruby, který nahrazuje unixový nástroj ‚make‘ a k sestavení seznamu úloh používá soubor ‚Rakefile‘ a soubory .rake. V Rails se Rake používá pro běžné úlohy správy, zejména ty sofistikované, které na sebe navazují.

Seznam dostupných úloh Rake, který často závisí na aktuálním adresáři, získáte zadáním příkazu rake –tasks. Každá úloha má svůj popis a měla by vám pomoci najít věc, kterou potřebujete.

$ rake --tasks(in /home/foobar/commandsapp)rake db:abort_if_pending_migrations # Raises an error if there are pending migrationsrake db:charset # Retrieves the charset for the current environment's databaserake db:collation # Retrieves the collation for the current environment's databaserake db:create # Create the database defined in config/database.yml for the current Rails.env......rake tmp:pids:clear # Clears all files in tmp/pidsrake tmp:sessions:clear # Clears all files in tmp/sessionsrake tmp:sockets:clear # Clears all files in tmp/sockets

2.1 about

rake about poskytuje informace o číslech verzí pro Ruby, RubyGems, Rails, dílčí komponenty Rails, složku vaší aplikace, aktuální název prostředí Rails, databázový adaptér vaší aplikace a verzi schématu. Je užitečný, když potřebujete požádat o pomoc, zkontrolovat, zda se vás může týkat bezpečnostní záplata, nebo když potřebujete nějaké statistiky pro existující instalaci Rails.

2.2 assets

Můžete předkompilovat aktiva v app/assets pomocí rake assets:precompile a odstranit tato zkompilovaná aktiva pomocí rake assets:clean.

2.3 db

Nejčastější úlohy db: Rake: jsou migrate a create a vyplatí se vyzkoušet všechny migrační úlohy rake (up, down, redo, reset). rake db:version je užitečný při řešení problémů, protože vám řekne aktuální verzi databáze.

Další informace o migracích najdete v příručce Migrace.

2.4 doc

V jmenném prostoru doc: jsou nástroje pro vytváření dokumentace k vaší aplikaci, dokumentace API, průvodců. Dokumentaci lze také oddělit, což je užitečné hlavně pro zeštíhlení vaší kódové základny, například pokud píšete aplikaci Rails pro vestavěnou platformu.

  • rake doc:app generuje dokumentaci pro vaši aplikaci v doc/app.
  • rake doc:guides generuje průvodce Rails v doc/guides.
  • rake doc:rails generuje dokumentaci API pro Rails v doc/api.
  • rake doc:plugins generuje dokumentaci API pro všechny pluginy nainstalované v aplikaci v doc/plugins.
  • rake doc:clobber_plugins odstraní vygenerovanou dokumentaci pro všechny pluginy.

2.5 notes

rake notes prohledá váš kód a vyhledá komentáře začínající na FIXME, OPTIMIZE nebo TODO. Hledání probíhá v souborech s příponou .builder, .rb, .erb, .haml a .slim pro výchozí i vlastní anotace.

Pokud hledáte konkrétní anotaci, například FIXME, můžete použít rake notes:fixme. Všimněte si, že název anotace musíte psát malými písmeny.

V kódu můžete také použít vlastní anotace a vypsat je pomocí rake notes:custom tak, že anotaci určíte pomocí proměnné prostředí ANNOTATION.

$ rake notes:custom ANNOTATION=BUG(in /home/foobar/commandsapp)app/model/post.rb: * Have to fix this one before pushing!

Při použití specifických anotací a vlastních anotací se název anotace (FIXME, BUG atd.) ve výstupních řádcích nezobrazuje.

2. Při použití specifických anotací a vlastních anotací se název anotace nezobrazuje.6 routes

Rail routes vypíše všechny definované trasy, což je užitečné pro dohledání problémů se směrováním v aplikaci nebo pro získání dobrého přehledu o adresách URL v aplikaci, se kterou se snažíte seznámit.

2.7 test

Dobrý popis testování jednotek v systému Rails je uveden v příručce A Guide to Testing Rails Applications

Rails se dodává s testovací sadou Test::Unit. Za svou stabilitu vděčí Rails právě používání testů. Úlohy dostupné ve jmenném prostoru test: pomáhají při spouštění různých testů, které snad napíšete.

2.8 tmp

V Rails.root/tmp je podobně jako *nixový adresář /tmp místem pro dočasné soubory, jako jsou relace (pokud používáte souborové úložiště pro soubory), soubory ID procesu a akce v mezipaměti.

Úlohy jmenného prostoru tmp: vám pomohou vyčistit adresář Rails.root/tmp:

2.9 Různé

  • rake stats je skvělý nástroj pro prohlížení statistik vašeho kódu, zobrazuje věci jako KLOC (tisíce řádků kódu) a poměr kódu k testům.
  • rake secret vám poskytne pseudonáhodný klíč, který použijete pro tajemství relace.
  • rake time:zones:all vypíše všechny časové zóny, které Rails zná.

3 Pokročilý příkazový řádek Rails

Pokročilejší používání příkazového řádku je zaměřeno na hledání užitečných (někdy i překvapivých) možností v nástrojích a jejich přizpůsobení vašim potřebám a konkrétnímu pracovnímu postupu. Zde je uvedeno několik triků, které má Rails v rukávu.

3.1 Rails s databázemi a SCM

Při vytváření nové aplikace Rails máte možnost určit, jakou databázi a jaký systém správy zdrojového kódu bude vaše aplikace používat. To vám ušetří několik minut a určitě i mnoho stisků kláves.

Podívejme se, co nám udělá volba –git a volba –database=postgresql:

Museli jsme vytvořit adresář gitapp a inicializovat prázdný repozitář git, než systém Rails přidá vytvořené soubory do našeho repozitáře. Podívejme se, co vložil do naší konfigurace databáze:

Vygeneroval také několik řádků v naší konfiguraci database.yml, které odpovídají naší volbě PostgreSQL pro databázi.

Jediný háček při použití možností SCM spočívá v tom, že nejprve musíte vytvořit adresář své aplikace, pak inicializovat SCM a teprve potom můžete spustit příkaz rails new, který vygeneruje základ vaší aplikace.

3.2 server s různými backendy

Mnoho lidí vytvořilo v jazyce Ruby velké množství různých webových serverů a mnoho z nich lze použít pro provoz systému Rails. Od verze 2.3 používá Rails k obsluze svých webových stránek Rack, což znamená, že lze použít libovolný webový server, který implementuje obsluhu Racku. Patří sem WEBrick, Mongrel, Thin a Phusion Passenger (abychom jmenovali alespoň některé!).

Další podrobnosti o integraci Racku najdete v článku Rails on Rack.

Chcete-li použít jiný server, stačí nainstalovat jeho gem a pak použít jeho název jako první parametr příkazu rails server:

Zpětná vazba

Doporučujeme vám pomoci zlepšit kvalitu této příručky.

Pokud vidíte nějaké překlepy nebo faktické chyby, které jste přesvědčeni opravit, naklonujte prosím repozitář rails a otevřete nový požadavek na stažení. Můžete také požádat o práva k revizi na docrails, pokud plánujete odeslat několik záplat. Příkazy jsou kontrolovány, ale to se děje až po odeslání vašeho příspěvku. Tento repozitář je pravidelně křížově slučován s hlavním repozitářem.

Můžete také najít neúplný obsah nebo věci, které nejsou aktuální. Doplňte prosím chybějící dokumentaci pro master. Ohledně stylu a konvencí se podívejte do Pokynů k průvodcům Ruby on Rails.

Pokud si z nějakého důvodu všimnete něčeho, co je třeba opravit, ale nemůžete to opravit sami, otevřete prosím problém.

A v neposlední řadě je velmi vítána jakákoli diskuse týkající se dokumentace Ruby on Rails v poštovní konferenci rubyonrails-docs.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.