edge
Daugiau informacijos rubyonrails.org: Daugiau apie Ruby on Rails

Rails Komandinė eilutė

Po šio vadovo perskaitymo, žinosite:

PASTABA: Šis vadovas priklauso nuo to, kad turite pagrindinius „Rails“ žinias, perskaitę Pradžios vadovą su „Rails“.

1 „Rails“ aplikacijos kūrimas

Pirmiausia, naudodami „rails new“ komandą, sukursime paprastą „Rails“ aplikaciją.

Šią aplikaciją naudosime žaidimui ir visų komandose aprašytų komandų atradimui.

INFORMACIJA: Jei dar neturite, įdiekite „rails“ juostelę įvedę „gem install rails“.

1.1 rails new

Pirmasis argumentas, kurį perduosime „rails new“ komandai, yra aplikacijos pavadinimas.

$ rails new my_app
     create
     create  README.md
     create  Rakefile
     create  config.ru
     create  .gitignore
     create  Gemfile
     create  app
     ...
     create  tmp/cache
     ...
        run  bundle install

„Rails“ sukonfigūruos daugybę dalykų, atrodo, kad tokiai mažai komandai! Turime visą „Rails“ katalogo struktūrą su visu kodu, kurį reikia paleisti mūsų paprastai aplikacijai iškart.

Jei norite praleisti kai kurias failų generavimą arba praleisti kai kurias bibliotekas, galite pridėti bet kurį iš šių argumentų prie savo „rails new“ komandos:

Argumentas Aprašymas
--skip-git Praleisti git init, .gitignore ir .gitattributes
--skip-docker Praleisti Dockerfile, .dockerignore ir bin/docker-entrypoint
--skip-keeps Praleisti šaltinio kontrolės .keep failus
--skip-action-mailer Praleisti Action Mailer failus
--skip-action-mailbox Praleisti Action Mailbox gem
--skip-action-text Praleisti Action Text gem
--skip-active-record Praleisti Active Record failus
--skip-active-job Praleisti Active Job
--skip-active-storage Praleisti Active Storage failus
--skip-action-cable Praleisti Action Cable failus
--skip-asset-pipeline Praleisti Asset Pipeline
--skip-javascript Praleisti JavaScript failus
--skip-hotwire Praleisti Hotwire integraciją
--skip-jbuilder Praleisti jbuilder gem
--skip-test Praleisti testinius failus
--skip-system-test Praleisti sistemos testinius failus
--skip-bootsnap Praleisti bootsnap gem

Tai tik keletas „rails new“ priimamų parinkčių. Visą parinkčių sąrašą galite pamatyti įvedę „rails new --help“.

1.2 Iš anksto sukonfigūruokite kitą duomenų bazę

Kuriant naują „Rails“ aplikaciją, galite nurodyti, kokios duomenų bazės jūsų aplikacija naudos. Tai sutaupys jums kelias minutes ir žinoma, daug klavišų.

Pažiūrėkime, ką mums padarys „--database=postgresql“ parinktis:

$ rails new petstore --database=postgresql
      create
      create  app/controllers
      create  app/helpers
...

Pažiūrėkime, ką įdėjo į mūsų config/database.yml:

# PostgreSQL. Palaikomos 9.3 ir naujesnės versijos.
#
# Įdiekite pg tvarkyklę:
#   gem install pg
# „macOS“ su „Homebrew“:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# „Windows“:
#   gem install pg
#       Pasirinkite win32 versiją.
#       Įdiekite „PostgreSQL“ ir įtraukite jo /bin katalogą į savo kelią.
#
# Konfigūruojama naudojant Gemfile
# gem "pg"
#
default: &default
  adapter: postgresql
  encoding: unicode

  # Dėl jungčių kaupimo išsamiosios informacijos žr. „Rails“ konfigūracijos vadovą
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: petstore_development
...

Tai sugeneravo duomenų bazės konfigūraciją, atitinkančią mūsų pasirinktą „PostgreSQL“.

2 Pagrindinės komandinės eilutės funkcijos

Yra keletas komandų, kurios yra absoliučiai būtinos jūsų kasdieniam „Rails“ naudojimui. Pagal tai, kiek tikriausiai jas naudosite, jos yra:

  • bin/rails console
  • bin/rails server
  • bin/rails test
  • bin/rails generate
  • bin/rails db:migrate
  • bin/rails db:create
  • bin/rails routes
  • bin/rails dbconsole
  • rails new app_name

Galite gauti sąrašą jums prieinamų „rails“ komandų, kuris dažnai priklauso nuo jūsų esamo katalogo, įvedę rails --help. Kiekviena komanda turi aprašymą ir turėtų padėti jums rasti tai, ko jums reikia.

$ rails --help
Naudota:
  bin/rails KOMANDA [parinktys]

Turite nurodyti komandą. Dažniausiai naudojamos komandos yra:

  generate     Generuoti naują kodą (trumpinys: "g")
  console      Paleisti „Rails“ konsolę (trumpinys: "c")
  server       Paleisti „Rails“ serverį (trumpinys: "s")
  ...

Visos komandos gali būti paleistos su -h (arba --help) daugiau informacijos.

Be šių komandų, yra:
about                               Išvardinti visų „Rails“ versijas ...
assets:clean[keep]                  Pašalinti senus sukompiliuotus išteklius
assets:clobber                      Pašalinti sukompiliuotus išteklius
assets:environment                  Įkelti išteklių kompiliavimo aplinką
assets:precompile                   Sukompiliuoti visus išteklius ...
...
db:fixtures:load                    Įkelti fiktyvius duomenis į ...
db:migrate                          Migruoti duomenų bazę ...
db:migrate:status                   Rodyti migracijų būseną
db:rollback                         Sugrąžinti schemą ...
db:schema:cache:clear               Išvalyti db/schema_cache.yml failą
db:schema:cache:dump                Sukurti db/schema_cache.yml failą
db:schema:dump                      Sukurti duomenų bazės schemos failą (arba db/schema.rb arba db/structure.sql ...
db:schema:load                      Įkelti duomenų bazės schemos failą (arba db/schema.rb arba db/structure.sql ...
db:seed                             Įkelti sėklos duomenis ...
db:version                          Gauti dabartinę schemos ...
...
restart                             Paleisti programą palietus ...
tmp:create                          Sukurti tmp katalogus ...

2.1 bin/rails server

Komanda bin/rails server paleidžia interneto serverį, vadinamą Puma, kuris yra įdiegtas kartu su Rails. Jį naudosite kiekvieną kartą, kai norėsite pasiekti savo programą per interneto naršyklę.

Be jokio papildomo darbo, bin/rails server paleis mūsų naują švytinčią Rails programą:

$ cd my_app
$ bin/rails server
=> Booting Puma
=> Rails 7.0.0 aplikacija pradedama veikti kūrimo režime
=> Daugiau paleidimo parinkčių rasite, paleidus `bin/rails server --help`
Puma pradedama vienoje veiksenoje...
* Versija 3.12.1 (ruby 2.5.7-p206), kodinis pavadinimas: Llamas in Pajamas
* Minimalus gijų skaičius: 5, maksimalus gijų skaičius: 5
* Aplinka: kūrimo režimas
* Klausiama tcp://localhost:3000
Norėdami sustabdyti, naudokite Ctrl-C

Vykdydami tik tris komandas, sukūrėme Rails serverį, klausantį 3000-ojo prievado. Eikite į naršyklę ir atidarykite http://localhost:3000, pamatysite veikiančią pagrindinę Rails programą.

Taip pat galite naudoti aliasą "s" paleisti serverį: bin/rails s.

Serverį galima paleisti kitame prievade naudojant -p parinktį. Numatytąją kūrimo aplinką galima pakeisti naudojant -e parinktį.

$ bin/rails server -e production -p 4000

Parinktis -b pririša Rails prie nurodyto IP, numatytasis yra localhost. Serverį galite paleisti kaip daemoną, perduodant -d parinktį.

2.2 bin/rails generate

Komanda bin/rails generate naudoja šablonus, kad sukurtų daugybę dalykų. Paleidus bin/rails generate be jokių papildomų argumentų, bus pateikiamas galimų generatorių sąrašas:

Taip pat galite naudoti aliasą "g" paleisti generatoriaus komandą: bin/rails g.

$ bin/rails generate
Naudojimas:
  bin/rails generate GENERATOR [args] [options]

...
...

Pasirinkite generatorių iš sąrašo.

Rails:
  assets
  channel
  controller
  generator
  ...
  ...

Pastaba: Galite įdiegti daugiau generatorių per generatorių juvelyrinius paketus, dalis išplėtiklių, kuriuos tikrai įdiegsite, ir netgi galite kurti savo.

Generatorių naudojimas sutaupys jums daug laiko, rašant boilerplate kodą, kodą, būtiną programai veikti.

Sukurkime savo kontrolerį naudodami kontrolerio generatorių. Bet kokią komandą galime naudoti? Paklauskime generatoriaus:

Visiems Rails konsolės įrankiams yra pagalbos tekstas. Kaip ir daugeliui *nix įrankių, galite pabandyti pridėti --help arba -h į pabaigą, pavyzdžiui, bin/rails server --help.

$ bin/rails generate controller
Naudojimas:
  bin/rails generate controller NAME [action action] [options]

...
...

Aprašymas:
    ...

    Norėdami sukurti kontrolerį modulyje, nurodykite kontrolerio pavadinimą kaip kelią, pvz., 'parentinis_modulis/kontrolerio_pavadinimas'.

    ...

Pavyzdys:
    `bin/rails generate controller CreditCards open debit credit close`

    Kreditinės kortelės kontroleris su URL, pvz., /credit_cards/debit.
        Kontroleris: app/controllers/credit_cards_controller.rb
        Testas:       test/controllers/credit_cards_controller_test.rb
        Vaizdai:      app/views/credit_cards/debit.html.erb [...]
        Pagalbininkas:     app/helpers/credit_cards_helper.rb

Kontrolerio generatorius tikisi parametrų formos generate controller KontrolerioPavadinimas veiksmas1 veiksmas2. Sukurkime Greetings kontrolerį su veiksmu hello, kuris pasakys mums kažką malonaus.

$ bin/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/controllers/greetings_controller_test.rb
     invoke  helper
     create    app/helpers/greetings_helper.rb
     invoke    test_unit

Ką visa tai sukūrė? Užtikrino, kad mūsų programoje būtų daugybė katalogų ir sukūrė kontrolerio failą, vaizdo failą, funkcinių testų failą, pagalbininką vaizdui, JavaScript failą ir stiliaus lapą.

Peržiūrėkite kontrolerį ir šiek tiek jį modifikuokite (faile app/controllers/greetings_controller.rb):

class GreetingsController < ApplicationController
  def hello
    @message = "Sveiki, kaip sekasi?"
  end
end

Tada vaizdą, kad parodytume mūsų žinutę (faile app/views/greetings/hello.html.erb):

<h1>Pasveikinimas Jums!</h1>
<p><%= @message %></p>

Paleiskite serverį naudodami bin/rails server.

$ bin/rails server
=> Booting Puma...

URL bus http://localhost:3000/greetings/hello.

Su įprasta, paprasta Rails programa, jūsų URL dažniausiai bus pagal šabloną http://(hostas)/(kontroleris)/(veiksmas), o URL, pvz., http://(hostas)/(kontroleris) pasieks to kontrolerio index veiksmą.

Rails turi generatorių duomenų modeliams taip pat.

$ bin/rails generate model
Naudojimas:
  bin/rails generate model NAME [laukas[:tipas][:indeksas] laukas[:tipas][:indeksas]] [options]

...

ActiveRecord parinktys:
      [--migration], [--no-migration]        # Nurodo, kada generuoti migraciją
                                             # Numatytasis: true

...

Aprašymas:
    Generuoja naują modelį. Pervadinkite modelio pavadinimą, arba
    CamelCased arba under_scored, ir pasirinktinai nurodykite atributų porų sąrašą kaip argumentus.

...

Pastaba: Laukų tipų type parametrui galite rasti sąrašą API dokumentacijoje SchemaStatements modulio add_column metodo. Parametras index generuoja atitinkamą indeksą stulpeliui. Tačiau vietoj tiesioginio modelio generavimo (ką padarysime vėliau), sukursime šabloną. Šablonas (angl. scaffold) „Rails“ yra visiškas modelio, duomenų bazės migracijos šiam modeliui, valdiklio, skirta jį manipuliuoti, rodymo ir manipuliavimo duomenimis vaizdai, ir testų rinkinys kiekvienam iš šių elementų.

Sukursime paprastą išteklių pavadinimu „HighScore“, kuris sektų mūsų aukščiausius rezultatus žaidimuose, kuriuos žaidžiame.

$ bin/rails generate scaffold HighScore game:string score:integer
    invoke  active_record
    create    db/migrate/20190416145729_create_high_scores.rb
    create    app/models/high_score.rb
    invoke    test_unit
    create      test/models/high_score_test.rb
    create      test/fixtures/high_scores.yml
    invoke  resource_route
     route    resources :high_scores
    invoke  scaffold_controller
    create    app/controllers/high_scores_controller.rb
    invoke    erb
    create      app/views/high_scores
    create      app/views/high_scores/index.html.erb
    create      app/views/high_scores/edit.html.erb
    create      app/views/high_scores/show.html.erb
    create      app/views/high_scores/new.html.erb
    create      app/views/high_scores/_form.html.erb
    invoke    test_unit
    create      test/controllers/high_scores_controller_test.rb
    create      test/system/high_scores_test.rb
    invoke    helper
    create      app/helpers/high_scores_helper.rb
    invoke      test_unit
    invoke    jbuilder
    create      app/views/high_scores/index.json.jbuilder
    create      app/views/high_scores/show.json.jbuilder
    create      app/views/high_scores/_high_score.json.jbuilder

Generatorius sukuria modelį, rodymo vaizdus, valdiklį, išteklių maršrutą ir duomenų bazės migraciją (kuri sukuria high_scores lentelę) „HighScore“. Taip pat pridedami testai šiems elementams.

Migracija reikalauja, kad atliktume migraciją, t. y. paleistume šiek tiek „Ruby“ kodo (iš aukščiau pateikto išvesties failo 20190416145729_create_high_scores.rb), kad pakeistume duomenų bazės schemą. Kurią duomenų bazę? „SQLite3“ duomenų bazę, kurią „Rails“ sukurs jums, kai paleisime komandą bin/rails db:migrate. Apie šią komandą kalbėsime daugiau žemiau.

$ bin/rails db:migrate
==  CreateHighScores: migrating ===============================================
-- create_table(:high_scores)
   -> 0.0017s
==  CreateHighScores: migrated (0.0019s) ======================================

INFORMACIJA: Pašnekėkime apie vienetinius testus. Vienetiniai testai yra kodas, kuris testuoja ir daro teiginius apie kodą. Vienetiniame teste imame nedidelę kodo dalį, tarkime, modelio metodą, ir testuojame jo įvestis ir išvestis. Vienetiniai testai yra jūsų draugas. Kuo greičiau susitaikysite su tuo, kad jūsų gyvenimo kokybė žymiai padidės, kai vienetiniais testais testuosite savo kodą, tuo geriau. Rimtai. Apsilankykite testavimo vadove ir gaukite išsamų peržiūrą vienetinio testavimo.

Pažiūrėkime, kokį sąsają sukūrė „Rails“.

$ bin/rails server

Eikite į naršyklę ir atidarykite http://localhost:3000/high_scores, dabar galime kurti naujus aukščiausius rezultatus (55,160 „Space Invaders“ žaidime!)

2.3 bin/rails console

console komanda leidžia sąveikauti su savo „Rails“ programa iš komandinės eilutės. „bin/rails console“ naudoja IRB, todėl jei jį naudojote anksčiau, jausitės kaip namie. Tai naudinga, norint išbandyti greitas idėjas su kodu ir keisti duomenis serverio pusėje, nesiliečiant su svetaine.

INFORMACIJA: Taip pat galite naudoti aliasą „c“, kad iškviestumėte konsolę: bin/rails c.

Galite nurodyti aplinką, kurioje turėtų veikti console komanda.

$ bin/rails console -e staging

Jei norite išbandyti kodą, nepakeisdami jokių duomenų, tai galite padaryti, iškviesdami bin/rails console --sandbox.

$ bin/rails console --sandbox
Loading development environment in sandbox (Rails 7.1.0)
Any modifications you make will be rolled back on exit
irb(main):001:0>

2.3.1 app ir helper objektai

bin/rails console viduje turite prieigą prie app ir helper egzempliorių.

Su metodu app galite pasiekti pavadintus maršruto pagalbininkus ir atlikti užklausas.

irb> app.root_path
=> "/"

irb> app.get _
Started GET "/" for 127.0.0.1 at 2014-06-19 10:41:57 -0300
...

Su metodu helper galima pasiekti „Rails“ ir jūsų programos pagalbinius metodus.

irb> helper.time_ago_in_words 30.days.ago
=> "apie 1 mėnesį"

irb> helper.my_custom_helper
=> "mano pagalbinis metodas"

2.4 bin/rails dbconsole

bin/rails dbconsole nustato, kurią duomenų bazę naudojate ir įeina į ją komandinės eilutės sąsają (ir taip pat nustato komandinės eilutės parametrus, kuriuos reikia jai duoti!). Ji palaiko „MySQL“ (įskaitant „MariaDB“), „PostgreSQL“ ir „SQLite3“.

INFORMACIJA: Taip pat galite naudoti aliasą „db“, kad iškviestumėte dbconsole: bin/rails db.

Jei naudojate kelias duomenų bazes, bin/rails dbconsole pagal numatytuosius nustatymus prisijungs prie pagrindinės duomenų bazės. Galite nurodyti, prie kurios duomenų bazės prisijungti, naudodami --database arba --db:

$ bin/rails dbconsole --database=animals

2.5 bin/rails runner

runner neinteraktyviai vykdo „Ruby“ kodą „Rails“ kontekste. Pavyzdžiui:

$ bin/rails runner "Model.long_running_method"

INFORMACIJA: Taip pat galite naudoti aliasą „r“, kad iškviestumėte runner: bin/rails r.

Galite nurodyti aplinką, kurioje turėtų veikti runner komanda, naudodami -e perjungiklį.

$ bin/rails runner -e staging "Model.long_running_method"

Jūs netgi galite vykdyti „Ruby“ kodą, parašytą faile su paleidėju.

$ bin/rails runner lib/code_to_be_run.rb

2.6 bin/rails destroy

Galiausiai, pagalvokite apie „destroy“ kaip apie „generate“ priešingybę. Ji nustatys, ką „generate“ padarė ir atšauks tai.

INFORMACIJA: Taip pat galite naudoti aliasą „d“, kad iškviestumėte „destroy“ komandą: bin/rails d.

$ bin/rails generate model Oops
      invoke  active_record
      create    db/migrate/20120528062523_create_oops.rb
      create    app/models/oops.rb
      invoke    test_unit
      create      test/models/oops_test.rb
      create      test/fixtures/oops.yml
$ bin/rails destroy model Oops
      invoke  active_record
      remove    db/migrate/20120528062523_create_oops.rb
      remove    app/models/oops.rb
      invoke    test_unit
      remove      test/models/oops_test.rb
      remove      test/fixtures/oops.yml

2.7 bin/rails about

bin/rails about pateikia informaciją apie „Ruby“, „RubyGems“, „Rails“, „Rails“ subkomponentus, jūsų aplikacijos aplanką, dabartinį „Rails“ aplinkos pavadinimą, jūsų aplikacijos duomenų bazės adapterį ir schemos versiją. Tai naudinga, kai jums reikia paprašyti pagalbos, patikrinti, ar saugumo atnaujinimas gali jus paveikti arba kai jums reikia kelių statistikos duomenų apie esamą „Rails“ diegimą.

$ bin/rails about
Apie jūsų aplikacijos aplinką
Rails versija             7.0.0
Ruby versija              2.7.0 (x86_64-linux)
RubyGems versija          2.7.3
Rack versija              2.0.4
JavaScript vykdymo aplinka        Node.js (V8)
Tarpinė programinė įranga:               Rack::Sendfile, ActionDispatch::Static, ActionDispatch::Executor, ActiveSupport::Cache::Strategy::LocalCache::Middleware, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, ActionDispatch::RemoteIp, Sprockets::Rails::QuietAssets, Rails::Rack::Logger, ActionDispatch::ShowExceptions, WebConsole::Middleware, ActionDispatch::DebugExceptions, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, Rack::Head, Rack::ConditionalGet, Rack::ETag
Aplikacijos šaknis          /home/foobar/my_app
Aplinkos pavadinimas               development
Duomenų bazės adapteris          sqlite3
Duomenų bazės schemos versija   20180205173523

2.8 bin/rails assets:

Jūs galite išankstiniu būdu sukompiliuoti app/assets turinį naudodami bin/rails assets:precompile ir pašalinti senesnius sukompiliuotus turinius naudodami bin/rails assets:clean. assets:clean komanda leidžia atlikti palaipsniui vykdomus diegimus, kai nauji turiniai vis dar yra susieti su senaisiais turiniais.

Jei norite visiškai išvalyti public/assets, galite naudoti bin/rails assets:clobber.

2.9 bin/rails db:

Dažniausiai naudojamos db: „Rails“ srities komandos yra migrate ir create, ir verta išbandyti visas migracijos „Rails“ komandas (up, down, redo, reset). bin/rails db:version yra naudinga, kai atsiranda problemų, nes ji parodo dabartinę duomenų bazės versiją.

Daugiau informacijos apie migracijas galite rasti Migracijų vadove.

2.10 bin/rails notes

bin/rails notes ieško jūsų kodo komentarų, prasidedančių tam tikru raktažodžiu. Informaciją apie naudojimą galite rasti bin/rails notes --help.

Pagal numatytuosius nustatymus, jis ieškos app, config, db, lib ir test kataloguose esančių FIXME, OPTIMIZE ir TODO anotacijų turinčių failų su .builder, .rb, .rake, .yml, .yaml, .ruby, .css, .js ir .erb plėtiniais.

$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] any other way to do this?
  * [132] [FIXME] high priority for next deploy

lib/school.rb:
  * [ 13] [OPTIMIZE] refactor this code to make it faster
  * [ 17] [FIXME]

2.10.1 Anotacijos

Galite perduoti konkretias anotacijas, naudodami --annotations argumentą. Pagal numatytuosius nustatymus, jis ieškos FIXME, OPTIMIZE ir TODO. Atkreipkite dėmesį, kad anotacijos skiriasi pagal didžiąsias ir mažąsias raides.

$ bin/rails notes --annotations FIXME RELEASE
app/controllers/admin/users_controller.rb:
  * [101] [RELEASE] We need to look at this before next release
  * [132] [FIXME] high priority for next deploy

lib/school.rb:
  * [ 17] [FIXME]

2.10.2 Žymos

Galite pridėti daugiau numatytųjų žymių, kurių ieškoma, naudodami config.annotations.register_tags. Jis priima žymių sąrašą.

config.annotations.register_tags("DEPRECATEME", "TESTME")
$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] do A/B testing on this
  * [ 42] [TESTME] this needs more functional tests
  * [132] [DEPRECATEME] ensure this method is deprecated in next release

2.10.3 Katalogai

Galite pridėti daugiau numatytųjų katalogų, iš kurių ieškoma, naudodami config.annotations.register_directories. Jis priima katalogų pavadinimų sąrašą.

config.annotations.register_directories("spec", "vendor")
$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] any other way to do this?
  * [132] [FIXME] high priority for next deploy

lib/school.rb:
  * [ 13] [OPTIMIZE] Refactor this code to make it faster
  * [ 17] [FIXME]

spec/models/user_spec.rb:
  * [122] [TODO] Verify the user that has a subscription works

vendor/tools.rb:
  * [ 56] [TODO] Get rid of this dependency

2.10.4 Plėtiniai

Galite pridėti daugiau numatytųjų failų plėtinių, iš kurių ieškoma, naudodami config.annotations.register_extensions. Jis priima plėtinių sąrašą su atitinkamais reguliariaisiais išraiškomis, kad jie būtų atitinkami.

config.annotations.register_extensions("scss", "sass") { |annotation| /\/\/\s*(#{annotation}):?\s*(.*)$/ }
$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] any other way to do this?
  * [132] [FIXME] high priority for next deploy

app/assets/stylesheets/application.css.sass:
  * [ 34] [TODO] Use pseudo element for this class

app/assets/stylesheets/application.css.scss:
  * [  1] [TODO] Split into multiple components

lib/school.rb:
  * [ 13] [OPTIMIZE] Refactor this code to make it faster
  * [ 17] [FIXME]

spec/models/user_spec.rb:
  * [122] [TODO] Verify the user that has a subscription works

vendor/tools.rb:
  * [ 56] [TODO] Get rid of this dependency

2.11 bin/rails routes

bin/rails routes pateiks visus apibrėžtus maršrutus, tai yra naudinga norint rasti maršrutų problemas savo programoje arba gauti gerą apžvalgą apie URL adresus programoje, su kuria norite susipažinti.

2.12 bin/rails test

INFORMACIJA: Geras aprašymas vienetinio testavimo Rails programose pateiktas Vadove testuojant Rails programą

Rails turi testavimo pagrindą, vadinamą minitest. Rails stabilumas priklauso nuo testų naudojimo. Komandos, prieinamos test: srities, padeda paleisti skirtingus testus, kuriuos tikėtina rašysite.

2.13 bin/rails tmp:

Rails.root/tmp katalogas yra, kaip ir *nix /tmp katalogas, laikinas failų laikymo vieta, tokia kaip procesų ID failai ir talpyklos veiksmai.

tmp: srities komandos padės jums išvalyti ir sukurti Rails.root/tmp katalogą:

  • bin/rails tmp:cache:clear išvalo tmp/cache.
  • bin/rails tmp:sockets:clear išvalo tmp/sockets.
  • bin/rails tmp:screenshots:clear išvalo tmp/screenshots.
  • bin/rails tmp:clear išvalo visus talpyklos, jungtukų ir ekrano kopijų failus.
  • bin/rails tmp:create sukuria tmp katalogus talpyklai, jungtukams ir procesų ID.

2.14 Įvairūs

  • bin/rails initializers išspausdina visus apibrėžtus pradinėjus tvarka, kuria jie yra kviečiami Rails.
  • bin/rails middleware išvardina Rack tarpinės programinės įrangos paketo, įjungtos jūsų programai.
  • bin/rails stats puikiai tinka peržiūrėti statistiką apie jūsų kodą, rodyti dalykus, tokius kaip KLOC (tūkstančiai kodo eilučių) ir jūsų kodo ir testų santykį.
  • bin/rails secret suteiks jums pseudo-atsitiktinį raktą, kurį galite naudoti savo sesijos slaptajam raktui.
  • bin/rails time:zones:all išvardina visas laiko juostas, kurias Rails žino.

2.15 Individualios Rake užduotys

Individualios rake užduotys turi .rake plėtinį ir yra dedamos į Rails.root/lib/tasks. Šias individualias rake užduotis galite sukurti naudodami bin/rails generate task komandą.

desc "Aš esu trumpas, bet išsamus aprašymas mano nuostabiai užduočiai"
task task_name: [:prerequisite_task, :another_task_we_depend_on] do
  # Visas jūsų stebuklas čia
  # Leidžiama bet kokia teisinga Ruby kalbos sintaksė
end

Norėdami perduoti argumentus savo individualiai rake užduočiai:

task :task_name, [:arg_1] => [:prerequisite_1, :prerequisite_2] do |task, args|
  argument_1 = args.arg_1
end

Užduočių grupavimui galite naudoti vardų erdves:

namespace :db do
  desc "Ši užduotis nieko nedaro"
  task :nothing do
    # Iš tikrųjų, nieko
  end
end

Užduočių kvietimas atrodo taip:

$ bin/rails task_name
$ bin/rails "task_name[value 1]" # visą argumentų eilutę reikia cituoti
$ bin/rails "task_name[value 1,value2,value3]" # atskirkite kelis argumentus kableliu
$ bin/rails db:nothing

Jei norite sąveikauti su savo programos modeliais, atlikti duomenų bazės užklausas ir t.t., jūsų užduotis turėtų priklausyti nuo environment užduoties, kuri įkelia jūsų programos kodą.

task task_that_requires_app_code: [:environment] do
  User.create!
end

Atsiliepimai

Jūs esate skatinami padėti pagerinti šio vadovo kokybę.

Prašome prisidėti, jei pastebite rašybos klaidų ar faktinių klaidų. Norėdami pradėti, galite perskaityti mūsų dokumentacijos prisidėjimo skyrių.

Taip pat gali būti nepilnos informacijos arba informacijos, kuri nėra atnaujinta. Prašome pridėti bet kokią trūkstamą dokumentaciją pagrindiniam. Patikrinkite Edge vadovus pirmiausia, ar problemas jau išspręsta arba ne pagrindinėje šakoje. Patikrinkite Ruby on Rails vadovų gaires dėl stiliaus ir konvencijų.

Jei dėl kokios nors priežasties pastebite kažką, ką reikia ištaisyti, bet negalite patys tai pataisyti, prašome pranešti apie problemą.

Ir galiausiai, bet ne mažiau svarbu, bet koks diskusijos dėl Ruby on Rails dokumentacijos yra labai laukiamos oficialiame Ruby on Rails forume.