Mi történik, ha létrehoz egy új Rails projektet

Az első alkalommal, amikor megnyitja a terminált, és megírja rails newa létrehozott fájlok és mappák rengeteg számát, elsöprő lehet. Akár számos Rails projekten is dolgozhat, anélkül, hogy valaha is megnyitná ezeket a mappákat - akkor mi is ezek pontosan? Mit csinálnak a kulisszák mögött?

Nos, az az igazság, hogy nincs szükségük sokra, és a Rails több zászlót tartalmaz a newparancsba, amely lehetővé teszi, hogy új projektet hozzon létre a Rails beépített alapértelmezései nélkül (további információkért csak írja be rails new —help) . Ez azt jelenti, hogy a legtöbb projektnél futtat rails newés létrehoz egy vadállati projektmappát.

Ebben a bejegyzésben minden egyes fájlt és mappát át fogok nézni egy új Rails 6 projektben. Használja nyugodtan ezt referenciaként, amikor új Rails projektjén dolgozik, hogy megértse a homályosabb mappák egy részét. Jelölje meg ezt a bejegyzést könyvjelzővel, és térjen vissza bármikor, amikor egy új Rails projekt gyomnövényeiben találja magát.

Kezdjük tehát:

rails new example-project

Hú, ez sok!

Először is, a Rails létrehozza az új Rails alkalmazáshoz szükséges összes fájlt és mappát.

Ezután drágaköveket hoz be és kötegel; ezekre a függőségekre van szüksége a Rails-nek ahhoz, hogy webhelyét a legegyszerűbb iterációban futtassa. Soknak tűnik? Bizonyos mértékig ez az, de ezek a drágakövek hozzáadják azt a funkcionalitást, amely miatt a Rails projekt olyan könnyű leszállni a földről. Lényegében csak annyit kell tennie, hogy futtatja, rails serverés van egy webfájlja, amely helyben fut: ez elég erős, és nem olyasmi, amit ilyen egyszerűen / az összes kazán nélkül megszerezhetne.

Menjünk be az összes mappába:

 create README.md create Rakefile create .ruby-version create config.ru create .gitignore create Gemfile run git init from "." Initialized empty Git repository in /Users/tfantina/Documents/Code/FileStructure/.git/ create package.json create app create app/assets/config/manifest.js create app/assets/stylesheets/application.css create app/channels/application_cable/channel.rb create app/channels/application_cable/connection.rb create app/controllers/application_controller.rb create app/helpers/application_helper.rb create app/javascript/channels/consumer.js create app/javascript/channels/index.js create app/javascript/packs/application.js create app/jobs/application_job.rb create app/mailers/application_mailer.rb create app/models/application_record.rb create app/views/layouts/application.html.erb create app/views/layouts/mailer.html.erb create app/views/layouts/mailer.text.erb create app/assets/images/.keep create app/controllers/concerns/.keep create app/models/concerns/.keep create bin create bin/rails create bin/rake create bin/setup create bin/yarn create config create config/routes.rb create config/application.rb create config/environment.rb create config/cable.yml create config/puma.rb create config/spring.rb create config/storage.yml create config/environments create config/environments/development.rb create config/environments/production.rb create config/environments/test.rb create config/initializers create config/initializers/application_controller_renderer.rb create config/initializers/assets.rb create config/initializers/backtrace_silencers.rb create config/initializers/content_security_policy.rb create config/initializers/cookies_serializer.rb create config/initializers/cors.rb create config/initializers/filter_parameter_logging.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/new_framework_defaults_6_0.rb create config/initializers/wrap_parameters.rb create config/locales create config/locales/en.yml create config/master.key append .gitignore create config/boot.rb create config/database.yml create db create db/seeds.rb create lib create lib/tasks create lib/tasks/.keep create lib/assets create lib/assets/.keep create log create log/.keep create public create public/404.html create public/422.html create public/500.html create public/apple-touch-icon-precomposed.png create public/apple-touch-icon.png create public/favicon.ico create public/robots.txt create tmp create tmp/.keep create tmp/cache create tmp/cache/assets create vendor create vendor/.keep create test/fixtures create test/fixtures/.keep create test/fixtures/files create test/fixtures/files/.keep create test/controllers create test/controllers/.keep create test/mailers create test/mailers/.keep create test/models create test/models/.keep create test/helpers create test/helpers/.keep create test/integration create test/integration/.keep create test/channels/application_cable/connection_test.rb create test/test_helper.rb create test/system create test/system/.keep create test/application_system_test_case.rb create storage create storage/.keep create tmp/storage create tmp/storage/.keep 

Ugorjunk be:

cd example-project code . 

Sorrendben fogunk haladni, ahogy a Rails szervezi őket, többnyire minden egyes mappáról és fájlról fogok beszélni, az ismétlődő fájlok (például .keep) esetében csak egyszer említem meg. Észre fogja venni, sok egyezmények Rails, mint a „application_ [keret] s” ( application_controller.rb, application_helper.rb, application_job.rbstb.). Ilyen esetekben részletesen lefedem a mappát, hogy tudd, mi megy be, csak azt, hogy a létező „alkalmazás _ [...]. Rb” fájl egy szülőosztály, amelyet a mappában létrehozott többi osztály örököl.

Az alkalmazás mappa

Az a hely, ahol a fejlesztési munkája nagy része megtörténik / az alkalmazás tartalmazza azokat a modelleket, nézeteket és vezérlőket, amelyeket a böngésző kérésére kiszolgálnak a felhasználók számára.

alkalmazás / eszközök

Tárolja a Rails Asset Pipeline eszközeit. Az eszközvezeték az eszközöket (JavaScript, CSS és képek) egyesíti egy projektben, és a lehető leghatékonyabban szolgálja ki az ügyfél számára. Ezt az eszközök összefűzésével és kicsinyítésével teszi. Elõfordítja a Sass és a CoffeeScript fájlokat is.

További információ: Az eszközvezeték - Ruby on Rails útmutatók

alkalmazás / eszközök / konfiguráció

Lásd alább

app / assets / config / manifest.js

A fent említett eszközvezetéket egy Ruby-drágakő kezeli, amelyet „lánckerék-síneknek” neveznek, amely a fentieket elvégzi. A „lánckerék-sínek” néhány kapcsolódó segítő drágakővel rendelkezik, mint például a „sass-sínek”, „uglifier” és „coffee-sínek”. A kávé-sínek és a Sass-sínek előre fordítják a Sass-ot és a CoffeeScript-t CSS-be és JavaScript-be, míg az Uglifier aprítja ezeket az eszközöket. A Manifest.js segítségével konkrétan beállíthatja, hogy mi kerül előre lefordításra.

További információ erről a fájlról: eileen.codes | 5. sín: A lánckerék 4 manifesztuma

alkalmazás / eszközök / képek

Képelemek, például ikonok és SVG-k az eszközvezetékhez ide helyezhetők el.

.tart

Ez az első a sok .keep fájl közül, amelyet egy új Rails projekt során láthat. Ezek nem Rails fájlok, hanem a Git fájljai, amelyek általában nem követik az üres mappákat. A megtartás. fájl csak azt mondja, hogy „valaki itt van”. Bármit, ami rendelkezik .keep fájllal, Git fogja követni. Nem kell .keep, ha valami mást tesz a mappába.

alkalmazás / eszközök / stíluslapok

A stíluslapok mappába helyezheti el az alkalmazásához társított stílusokat. A stíluslapokat CSS vagy SASS formában is kiírhatja a dobozból. Az Eszközcsővezeték minden stíluslapot előre lefordít Önnek.

app / asset / stíluslapok / application.css

Minden olyan stílust tartalmaz, amelyet az eszközvezeték tartalmaz. A globális stílusok írhatók az Application.css fájlba, de írhat vezérlőspecifikus stíluslapokat is (amikor a parancs futtatásával rails g  új vezérlőt hoz létre, társított stíluslapot hoz létre.   =require_tree . Ez a Rails módja az összes társított mappa belefoglalása a könyvtárba, így minden más CSS A projekten belüli fájlok a fordításkor =require_selftartalmazzák azokat a CSS-eket, amelyeket maga az Application.css fájlba írt, ez helyspecifikus, így az Application.css fájlban található CSS ​​futni fog / utána / a többi mappa által, amelyeket behúzrequire_tree .

.app / csatornák

A Rails számos kisebb belső kerettel rendelkezik. Az ActionCable egy olyan keretrendszer, amely lehetővé teszi a WebSockets használatával valós idejű szolgáltatásokat az alkalmazásban, például csevegéseket, valamint az értesítések és az új tartalmak „előfizetésének” automatikus frissítését. Ha nem valós idejű szolgáltatásokat kíván megvalósítani, akkor nem kell aggódnia az ActionCable mappák miatt. A csatornák mappában a szerver oldali Ruby fájlok találhatók ezeknek a kapcsolatoknak a létrehozásához.

Az ActionCable-ről itt olvashat mindent: Action Cable Overview - Ruby on Rails Guides

alkalmazás / csatornák / alkalmazáskábel

Az Application_cable csatorna- és csatlakozási fájlokat tartalmaz, amelyek új valós idejű funkciókat hozhatnak létre az alkalmazásban.

alkalmazás / csatornák / alkalmazáskábel / csatorna.rb

Alkalmazásod minden egyes valós idejű funkcióját egy egyedi csatornacsatornába foglalják. Például egy csevegőfunkció csevegés lehet egy csatorna. Az újonnan közzétett tartalmak értesítési rendszere külön csatornát jelentene. Ez a mappa tartalmazza az alkalmazás összes csatornáját.

alkalmazás / csatornák / alkalmazáskábel / kapcsolat.rb

A kapcsolatok a felhasználó és a szerver közötti hitelesítés. Nem foglalkoznak semmilyen logikával (ezt csinálják a csatornák), ​​inkább csak ellenőrzik, hogy a jelenlegi felhasználó jogosult-e feliratkozni az alkalmazás különböző csatornáira. A legtöbb esetben ez egy egyszerű ellenőrzés azt jelenti, hogy a felhasználó be van-e jelentkezve.

alkalmazás / vezérlők

A „Model View Controllers” „MVC” mintájának „C” része. A vezérlők, mint egy közvetítő, a modell és a nézet között. A felhasználó kérése alapján az Adatkezelő megkapja a modell összes kapcsolódó adatait, és továbbítja azokat a nézethez, amelyet a felhasználó mutat. Például, ha egy felhasználó a localhost: 3000 / posts oldalra navigál, a Vezérlő meghatározza, hogy milyen nézetet jelenítsen meg, valamint a modell összes kapcsolódó rekordját.

alkalmazás / vezérlők / aggodalmak

Az aggodalmak a modellek visszaszorítására szolgálnak, ahelyett, hogy hatalmas mennyiségű újrafelhasználható módszert írnának egyetlen modellbe, aggodalomra adhat okot ezek a módszerek, ahol azokat egyszerűen újra felhasználhatja a vezérlőkben.

app / controllers / application_controller.rb

A vezérlők csak rubin osztályok, amelyek az ActionController nevű osztálytól örökölnek. Ha több modellt ad hozzá a projektjéhez, több vezérlővel kell megküzdenie. Az application_controller.rb szükséges minden Rails-projekthez, mert örököl ActionController::Baseés minden jövőbeli vezérlő örököl tőle, ezzel biztosítva számukra a Vezérlők funkcióit.

Sok „alkalmazás_ [relatív cím beillesztése ide] .rb” fájlt fog látni: application_controller.rb, application_helper.rb, application_record.rb. A legtöbb esetben ezek az alkalmazással való interakció globális módját jelentik, egy közvetítőt, amely egy alaposztálytól örököl, majd a jövő osztályai vagy mindkettő örökli. Nem minden esetben tárgyalom ezeknek a fájloknak a funkcióit.

alkalmazás / segítők

A segítők segítségével megőrizheti nézeteinek rendezettségét. A nézeteknek egyszerűen azzal kell foglalkozniuk, hogy az információkat HTML formátumban jelenítsék meg a felhasználó számára. Ha úgy találja, hogy a html.erb fájlok elakadnak sok apró számítással vagy logikával, akkor ezt a kódot segítő módszerekbe kell áthelyeznie.

app / helpers / application_helper.rb

Helyet biztosít globális segítők megírásához, mivel több vezérlőt hoz létre, több segítője lesz az adott vezérlőkkel és nézetekkel való együttműködéshez.

app / javascript

Ez a mappa praktikus hely az alkalmazásban használt összes javascript elhelyezéséhez. A Rails Asset Pipeline ebből a mappából fogja felvenni őket minden olyan oldalra, ahol alkalmazzák (az Asset Pipeline tudja, hová tartoznak a szkriptek, mert a fájlok általában követik a az általa alkalmazott Vezérlő elnevezési megállapodása).

app / javascript / channels

A fenti ActionCable csatornákat már megvizsgáltuk, de ez a mappa kliensoldali specifikus javascriptet tartalmaz a valós idejű WebSocket kapcsolatok létrehozásához.

app / javascript / channels / consumer.js

A fogyasztók a WebSocket kapcsolat ügyfelei; a csatornára feliratkozó végfelhasználók. Ez a szkript összekapcsolja ezeket a fogyasztókat az ügyféloldali csatornával.

app / javascript / channels / index.js

Egy alkalmazásnak több csatornája lehet (csevegés, riasztások, új bejegyzések stb.). Az index.js egy kliensoldali könyvtár az alkalmazás összes csatornájához.

app / javascript / packs / application.js

A Webpacker egy rubin drágakő, amely lehetővé teszi a Webpack használatát, a JavaScript csomagot a Rails projektben. Ez az Asset Pipeline-nel együtt működik, és nagy JavaScript keretrendszerekhez készült, nem pedig kis szkriptekhez vagy más eszközökhöz, például CSS-hez vagy képekhez (amelyeket a Webpack általában kezelne egy Javascript-projektben). A Webpacker azonban rugalmas, és ez csak az alapértelmezett. A Webpack képes kezelni a képeket és a kisebb JavaScripts-eket, ha akarja, teljesen megkerülve az eszközvezetéket. Ezt megadhatja ebben a mappában más eszközök megkövetelésével. A becsomagolt alapértelmezett eszközök a következők:

*require("@rails/ujs").start()* *require("turbolinks").start()* *require("@rails/activestorage").start()* *require("channels")* 

alkalmazás / munkák

A munkák olyan háttérfeladatok, amelyeket futtat, miközben a felhasználók továbbra is használják az alkalmazást. Bármely olyan művelet végrehajtásakor, amely sok feldolgozást igényel, elegendő ahhoz, hogy jelentősen lelassítsa a felhasználói élményt, és az alkalmazás „lefagyjon”. olyan feladat, amely a színfalak mögött futtatja a feladatot, lehetővé téve a felhasználó számára, hogy megszakítás nélkül folytassa a webhely használatát.

A munkákkal kapcsolatos további információkért lásd: Rails Active Job Tutorial: How to use activejob | Kódszám | @codeship-en keresztül

app / vagyon / munkahelyek / application_job.rb

Lásd fent.

alkalmazás / levelezők

A levelezőkről úgy gondolhat, mint az e-mailek vezérlőire. Új levelezőt hozhat létre a Rails generate mailer. Ez megadja Önnek a Modell és a Vezérlő megfelelőjét, ha e-maileket küld a felhasználóknak.

app / mailers / application_mailer.rb

Lásd fent.

alkalmazás / modellek

Az MVC „M”; A Model az adatbázisban tárolt adatok sablonja. Általában bármelyik táblázat „modellnek” tekinthető. A közös modellek lehetnek   User,   Post  vagy   Comment. Ne feledje, hogy ezek a dolgok inkább egyesek, mint többes számok, ez a modell prototípusos jellegére utal. Ez ellentétben áll a Vezérlőkkel, miért egyezés alapján többes szám, mert a Vezérlők több rekordra hivatkoznak.

alkalmazás / modellek / aggodalmak

Az aggodalmak modulok - az újrahasználható kód apró rögjei, amelyeket általában kivonnak a modellekből, ha túl kövérek. Az aggodalmak mappa az ActiveSupport nevű belső Rails keretrendszer része, amely egy kicsit megkönnyíti a modulok kezelését.

További információkért lásd a Rails útmutatókat az aggodalmakról.

app / models / application_record.rb

Az Application_record.rb ActiveRecord::Baseaz alkalmazás összes következő modelljétől örököl, örökölni fog ApplicationRecord, hasonlóan ahhoz, ahogy az Application_controller elérhetővé teszi az ActionControllerösszes többi vezérlő számára elérhető funkciókat .

alkalmazás / nézetek

Az MVC minta utolsó darabja a Views. A Views mappa mindent tartalmaz, amelyet a felhasználó a böngészőjében látni fog, főleg HTML formátumban, beágyazott Ruby (ERB) vagy .Haml néven, amely a Ruby sablonnyelve. Az új vezérlőknek valószínűleg egy társított nézetmappája lesz azonos nevű (hacsak nem API-t hoz létre). Általánosságban elmondható, hogy a vezérlő minden metódusához társított nézet tartozik.

alkalmazás / nézetek / elrendezések

Az új Rails alkalmazásnak lesz egy Elrendezések mappája, amely tartalmazza az alkalmazásokat.html.erb , mailer.html.erb és mailer.text.erb, amelyek a Rails alkalmazás globális elrendezését állítják be különböző tartományokban, például a böngészőben és a postaládában. Érdemes más elrendezési összetevőket is hozzáadni ebbe a mappába, például egy _header.html.erb fájlt, de a nézetek nagy része a vezérlőjük specifikus Nézet mappákba kerül. Az Application.html.erb az alkalmazás fő sablonja, ez a fájl létrehozza az alkalmazás fő HTML-jét és címkéit, amelyek maguk a nézetek jelennek meg . A hozam csak egy kis Ruby-kód, amely hozzáadja a megfelelő nézetet ahhoz az oldalhoz, amelyet a felhasználó néz. Miután egyAz Application.html.erb fájl szárazon tartja a kódot, mivel nem kell többször deklarálnia a doctype-t, a head elemeket, vagy szkripteket és stíluslapokat kell tartalmaznia a Nézet minden oldalához. A Rails és az eszközvezeték gondoskodik erről az Ön számára. A mappában található három fájl a fentiek szerint:

  • app / views / layouts / application.html.erb
  • app / views / layouts / mailer.html.erb
  • app / views / layouts / mailer.text.erb

bin mappa

A bin mappa segít beállítani a Rails alkalmazást, így az és a hozzá tartozó parancsok megfelelően futhatnak.

kuka / csomag

Biztosítja a Gem Bundler megfelelő működését.

kuka / sínek

A Spring egy olyan előzetes betöltő, amely a Rails működését a háttérben futtatja (vannak olyan esetek, amikor újra kell indítania a kiszolgálót, de a nézetek vagy a vezérlők változásai többnyire automatikusan és azonnal betöltődnek a fejlesztésben futó alkalmazásában környezet). Ez a fájl tavaszt tölt be, amikor elindítja a Rails alkalmazást.

kuka / gereblye

A Rake a Ruby Make rövidítése, és több olyan parancs futtatására szolgál, amelyek egyszerre állítják be és frissítik a szervert.

bin / setup

Olyan parancsokat írhat, amelyek az alkalmazás első indításakor futnak.

kuka / rugó

Lehetővé teszi, hogy a Spring úgy fusson, hogy az összes drágakövét nem a Bundler segítségével használja, ez lehetővé teszi, hogy a tavasz gyorsan újratöltse az oldalakat a fejlesztés során, amikor csak változtat.

bin / webpack

Amint azt fentebb tárgyaltuk, a Rails a Webpack használatával egyes JavaScripts csomagokat köt össze az AssetPipeline-vel szemben, ehhez a fájlhoz szükséges a szükséges beállítás, majd a Webpack fut.

bin / webpack-dev-server

Lehetővé teszi a Webpack dev szerverének testreszabását, amelyet érdemes lehet megtenni, ha nem szeretné, hogy az összes vagy az összes eszköz csomagban legyen a fejlesztői környezetben.

kuka / fonal

A fonal az NPM-hez hasonló JavaScript csomagkezelő. A Rails projektek bármelyikét használhatja.

konfig

A Config, hasonlóan a névhöz, tartalmaz fájlokat a Rails alkalmazás különböző környezetekben történő beállításához; fejlesztés és teszt.

config / környezetek

Ezzel a mappával konfigurálhatja az alkalmazás működését a fejlesztési, gyártási és tesztelési környezetekben. Érdemes lehet például meggyőződnie arról, hogy az action_mail konfigurálva van-e az e-mailek küldéséhez a gyártási levelezési szolgáltatáson keresztül, de nem a fejlesztés alatt.

config / inicializátorok

Ez a mappa lehetővé teszi részleges inicializálók beállítását annak meghatározásához, hogy a Rails alkalmazás hogyan formázza elő az előformákat. Nagy esély van rá, hogy nem fog sok időt tölteni itt, különösen akkor, ha az első néhány Rails alkalmazáson dolgozik.

config / inicializátorok / application_controller_renderer.rb

Lehetővé teszi a vezérlők számára, hogy azok a hatókörükön kívülre kerüljenek. További információ: Frissítés Ruby on Rails 5.0-ra a Rails 4.2-ből - alkalmazás használati eset - Futás Ruby-val

config / inicializátorok / vagyonok.rb

Az eszközvezetékhez kapcsolódik; amelyek emlékeznek arra, hogy a Rails alkalmazásban szereplő oldalakat a szükséges eszközökkel (CSS, JS stb.) szolgálják ki. Itt hozzáadhat olyan elemeket a terhelési útvonalhoz, mint a node_modules.

config / inicializátorok / backtrace_silencers.rb

A Backtraces egy hibakereső eszköz, amely lehetővé teszi, hogy lássa, mi történik a Rails alkalmazásban, különösen hasznos, ha a dolgok felrobbantak, és pontosan meghatározhatja a hiba konkrét területét. Annak meghatározásával, hogy a visszakövetések miként jelennek meg ebben a fájlban, meghatározhatja, hogy mely könyvtárak jeleníthetnek meg visszakövetést.

config / inicializátorok / content_security_policy.rb

A Mozilla alkalmazásból: „A HTTP Content-Security-Policy válaszfejléc lehetővé teszi a webhely rendszergazdáinak, hogy ellenőrizzék azokat az erőforrásokat, amelyeket a felhasználói ügynök betölthet egy adott oldalra. Néhány kivételtől eltekintve a házirendek többnyire a szerver eredetének és a szkript végpontjainak megadását tartalmazzák. MDN. Lényegében ez vezérli azokat az adatokat, amelyeknek szabad áramlania az alkalmazásába, és milyen külső forrásokból. Például külső szkriptekhez, betűtípusokhoz vagy képekhez történő linkelés az alkalmazáson kívül.

config / inicializátorok / cookie_szerializer.rb

Meghatározza a sütik formátumát, alapértelmezés szerint ez :json

config / inicializátorok / filter_parameter_logging.rb

Az alábbiakban megvitatjuk a naplózást, de vannak olyan paraméterek (elfogadott felhasználói bemenetek), például jelszavak vagy érzékeny felhasználói adatok, amelyeket nem szeretne megjeleníteni a naplójában, itt hozzáadhatja őket. A filter_paramiter_logging olyan, mint a .gitignore a paraméterekhez.

config / inicializátorok / ragozások.rb

Amint a Modell-magyarázatban tárgyaltuk, Rails elnevezési konvenciókat vezetett be az egyes és a többes számra. A területi beállítások alapján (az alkalmazás nyelvi beállításaiért lásd az alábbi Nyelvek mappát) frissítheti ezeket a ragozásokat ebben az inicializálóban, bár valószínűleg nem jó ötlet, hacsak nem feltétlenül szükséges.

config / inicializátorok / mime_types.rb

MIME típusok - A többcélú internetes levélkiterjesztések meghatározzák az e-mail mellékletek formátumát.

MIME - Wikipédia

config / inicializátorok / wrap_parameters.rb

Alapértelmezés szerint a Rails minden paramétert JSON-ba csomagol, de a wrap_parameterskivonat használatával más formátumokat is megadhat . ActionController :: ParamsWrapper

config / locales

Általában az en.yml fájl lesz az egyetlen fájl. Ha az alkalmazásnak több nyelvi opciója lesz, akkor az összes fordítást YML-fájlként beillesztheti ide.

config / webpack

Allows you to configure Webpack settings based on the environment. 

config / webpack / development.js

config / webpack / environment.js

config / webpack / production.js

config / webpack / test.js

config / application.rb

Futtatja a boot.rb fájlt, ha az utasokat használja. Behúzza a gem fájlban megkövetelt összes drágakövet a projektjébe, és létrehoz egy osztályt, Applicationamelyből örökölRails::Application

config / boot.rb

Létrehoz egy környezeti változót BUNDLE_GEMFILE, amely a projekt gyöngyfájljának helyére van beállítva. Így a Rails tudni fogja, hová kell húzni a függőségeket vagy a drágaköveket, amelyekből kb. 2 tucat van a dobozon kívüli Rails telepítés során.

config / cable.yml

Hasonlóan az database.yml fájlhoz (lásd alább), a cable.yml fejlesztési, tesztelési és gyártási adaptereket állít be az ActionCable számára, amelyekről emlékezni fog arra, hogy a Rails segítségével valós idejű szolgáltatásokat valósíthat meg alkalmazásában.

config / credentials.yml.enc

A credentials.yml titkos kulcsok helyeként a secrets.yml helyébe lép. Ez a fájl titkosítva van, így senki sem tudja elolvasni a titkos kulcsokat, és csak a fő kulcs dekódolja (lásd alább).

config / database.yml

Beállíthat egy alapértelmezett adatbázist (hogy a kód kissé DRYer legyen), valamint a fejlesztéshez, a teszteléshez és a gyártáshoz szükséges speciális adatbázisokat.

config / környezet.rb

A Rails alkalmazás inicializálása a szerveren sok lépést igényel, attól függően, hogy használja-e rails servervagy az Utas, ezek a lépések kissé eltérhetnek, de ha egyszer a environment.rb betöltődik, az alkalmazás inicializálódik, és elkezd futni.

config / master.key

Dobja be azonnal a .gitignore fájljába (lásd alább), ez az a fő kulcs, amely visszafejti a credentials.yml.enc fájlt a Rails fájlban, és senkinek sem szabadna megadnia. További információért olvassa el ezt a zseniális cikket: Rails 5.2 hitelesítő adatok - cedarcode - közepes

config / puma.rb

A Puma a Ruby webszervere, és a Rails fejlesztői környezetének alapértelmezett webszervere. A Puma ezen a mappán keresztül konfigurálható, megváltoztatva például a szálak számát és az alapértelmezett portot, amelyen a puma figyelni fogja a beérkező kéréseket (alapértelmezés szerint 3000).

config / route.rb

Az útvonalak a vezérlők körüli útitervek. Az útvonalak a beérkező kéréseket a kiszolgálóra viszik, és a megfelelő vezérlőhöz irányítják. Ellentétben a legtöbb más fájllal a config mappában, sok időt fog itt tölteni az útvonalak beállításával, miközben elkészíti az alkalmazást.

konfig / tavasz.rb

Amint arról a bin mappában beszámoltunk, a Spring egy előzetes betöltő, ez a fájl tulajdonképpen megmondja Springnek, hogy mely fájlok és mappák indítsák el az újraindítást.

config / storage.yml

Az ActiveStorage az Rails 5.2-ben bevezetett keretrendszer olyan eszközök feltöltésére és tárolására, mint a képek. Szüksége van egy helyre, ahol ezeket a dolgokat elhelyezheti, például egy AWS-példányt, ebben a fájlban adja meg azt a helyet.

config / webpacker.yml

Lehetővé teszi további környezetek hozzáadását a Webpackerhez is.

db

db / mag

A Seeds segítségével adatbázist tölthet fel adatokkal. Tegyük fel, hogy a lapozás funkcióját akarta látni; létrehozhat 11 hozzászólást kézzel, vagy használhat egy gyöngyszemet, például a Faker-t, hogy 11 véletlenszerű bejegyzést hozzon létre az Ön számára, és beillessze őket közvetlenül az adatbázisába.

lib

A Lib-t a Rails útmutatók „Kiterjesztett modulok az alkalmazásodhoz” határozzák meg. Ha ez homályosan hangzik, nem csak te érzel így. Ami konkrétan a lib mappába kerül, kissé ellentmondásos: lásd: Mi megy a Rails lib / - Extreme Programming - Medium és milyen kód a lib / könyvtárba? de az általános konszenzus az, hogy a lib-et olyan kódnak kell fenntartani, amely nem fér bele az alkalmazás mappájába, amelyet könnyen ki lehet használni más alkalmazásokhoz. Két almappatartalommal és feladattal rendelkezik

lib / vagyon

A Ruby on Rails útmutatókból:

"A lib / asset a saját könyvtárai kódjára vonatkozik, amely valójában nem illik bele az alkalmazás körébe, vagy azokba a könyvtárakba, amelyeket megosztanak az alkalmazások."

lib / feladatok

Írhat egyedi rakefeladatokat, és ebbe a mappába helyezheti őket. Ez nem túl gyakran használt hely.

napló

A naplózás fontos módja annak, hogy lássa az alkalmazás teljesítményét, valamint a problémák felkutatásához és elhárításához. Alapértelmezés szerint ez a mappa üres lesz. A config / environments mappában különféle naplózókat egy olyan paranccsal inicializálhat, mint például: config.log_level = :infoonnan az alkalmazás futtatásakor létrejön a Naplófájl. Részletesebb információkért lásd a Datadog e cikkét: A Rails alkalmazásnaplók gyűjtése, testreszabása és kezelése

A Napló mappában található:

  • napló / fejlesztés.log

csomópont_modulok

A projektben használt csomópont-csomagok (például a Webpack és a Babel) több tucat, ha nem száz más csomópont-csomagtól függenek. Egy csomagkezelő, például az NPM vagy a Yarn kezeli ezeket a csomagokat az Ön számára. Nem szabad belépnie ebbe a mappába és semmit sem szerkeszteni benne.

nyilvános

A nyilvános mappa külső erőforrásokat tartalmaz, amelyek az alkalmazás normál felépítésén kívül érhetők el, a favicon, az apple-touch-icons, a robots.txt és természetesen a hibaoldalak. Az olyan oldalak, mint: 404, 422 és 500. Ha a gyártásban lévő alkalmazás valamilyen hibát tapasztal, akkor ezeket a HTML-oldalakat az útvonalak, a vezérlők vagy bármely speciális nézet megkerülésével automatikusan kiszolgálják. Ezek az oldalak nem részei a Rails Asset Pipeline-nek, ezért bármilyen stílust be kell írnia.

public / robots.txt

Lehetővé teszi annak megadását, hogy a keresőmotorok hogyan térképezik fel az Ön webhelyét.

tárolás

A Rails 5.2 bevezette az ActiveStorage alkalmazást, amely felváltotta az olyan drágaköveket, mint a PaperClip, és lehetővé teszi a Rails számára, hogy közvetlenül kapcsolódjon az olyan felhőszolgáltatásokhoz, mint az AWS vagy a Google

teszt

A Rails az alapoktól kezdve beépített teszteléssel rendelkezik! A Rails alapértelmezett tesztcsomagja a MiniTest, így azt fogja tapasztalni, hogy ezek a mappák készen állnak a MiniTest használatára.

Vannak mappák, ahol tesztelhet bizonyos vezérlőket, segítőket, modelleket, levelezőket, valamint integrációs teszteket írhat, amelyek több vezérlőn keresztül működnek, és a tényleges felhasználói élményhez hasonlót hozhatnak létre. Ha többet szeretne tudni arról, hogy mi minősül kontroller tesztnek az integrációs teszthez, ajánlom ezt a cikket (Jason Swett)

teszt / csatornák

teszt / csatornák / alkalmazás_kábel / kapcsolat_teszt.rb

Az ActionCable kapcsolatok teszteléséhez, mint minden ActionCable dologhoz, erre csak akkor lesz szüksége, ha csatornákat használ az alkalmazásában.

teszt / kontrollerek

Itt tesztelheti a vezérlőket, ezek a tesztek általában azt vizsgálják, hogy az Ön vezérlője mennyire megy jól a modell és a nézet között. Ezek nagyobbak, mint a Modell tesztek, de kisebbek, mint az Integrációs tesztek.

teszt / felszerelések

Nem a tesztek írásához, hanem a próbavizsgálati adatok előállításához. A fixtures mappába tetszőleges számú YML-fájlt adhat meg előre definiált adatokkal. Ezeket az adatokat beviheti a tesztekbe, hogy megbizonyosodjon arról, hogy modelljei megfelelően működnek-e, és az elvárt módon interakcióba lépnek-e az alkalmazással.

teszt / szerelvények / fájlok

Most, hogy a Rails beépített fájlkezelővel rendelkezik az ActiveStorage szolgáltatással, nemcsak modellek adatait tesztelheti, hanem fájlokat is tesztelhet.

teszt / segítők

Írhat specifikus teszteket az alkalmazásban / segítőkben lévő segítők számára. A segítők tesztelése nem túl gyakori, de megteheti, ha egy segítő túl összetett vagy törékenynek tűnik.

teszt / integráció

Az integrációs tesztek lehetővé teszik a vezérlők közötti interakciók tesztelését, és a tényleges felhasználói élményhez közelebb eső tesztelési lehetőséget kínálnak.

teszt / levelezők

Akár teszteket is írhat a levelezőinek, hogy megbizonyosodjon arról, hogy az e-maileket helyesen küldik és formázzák.

teszt / modellek

Az egyik legszemcsésebb teszt; megbizonyosodhat arról, hogy a rekordokat megfelelően menti, az adatbázis frissült stb.

teszt / rendszer

A rendszer tesztek segítségével tesztelheti az alkalmazását egy valódi böngészőben, és képernyőképeket készíthet, amelyek megmutatják, hogyan néz ki minden működés közben. A rendszer tesztek a JavaScriptet is tesztelik, nem pedig azt, hogy a MiniTest rendszer teszteket kellene használni egy jó JavaScript tesztkönyvtár, mint például a Jest helyett. Rendszertesztek; azonban lehetővé teszi, hogy lássa, hogyan működik a böngészőben a JavaScript.

test / application_system_test_case.rb

Ez a fájl tartalmazza a rendszer tesztjeinek alapértelmezett értékeit, megváltoztathatja a böngészőket, az illesztőprogramokat vagy a képernyő felbontását.

teszt / teszt_segítő.rb

A tesztsegítő külső adatokat és könyvtárakat hoz létre, amelyek szükségesek a tesztekhez. Észre fogja venni, hogy rögtön fixtures :allimportálják. Ez hozzáférést biztosít a tesztekhez a szerelvényekhez. Beállíthat egy sor más tesztcsomagot és keretet a test_helper.rb oldalról a funkcióik és a DSL-ek beillesztésére, mint például a Capybara, a FactoryBot és a Faker.

tmp

Ideiglenes - ez a mappa gyorsítótárakat és munkameneteket tartalmaz, esetenként manuálisan vagy telepítéskor törölhető (attól függően, hogy hogyan telepíti az alkalmazást).

eladó

A szállítói mappa egy harmadik fél kódjának helye, kissé hasonló a Gems-hez. Drágakövek; azonban kissé önállóbbak, míg a szállítói mappa tartalmazhat olyan szkripteket, amelyek nem gyöngyszemként vannak csomagolva. Bővebben erről, valamint néhány előnyről lásd: Hogyan szállítsunk egy drágakövet.

.browserslistrc

A Browserslist egy olyan eszköz, amely az NPM eszközök, például a Babel meghatározott böngészőverzióit célozza meg. Alapértelmezés szerint az „alapértelmezett” értékre állítva biztosítja ezt

.gitignore

Mint minden más projektnél, a verziókezelője figyelmen kívül hagyja az itt megadott fájlokat vagy mappákat.

.ruby-verzió

Egyszerűen tartalmazza azt a Ruby verziót, amely alatt a projekt dolgozik, az RVM elolvashatja ezt a fájlt, és beállíthatja a rubin helyes verzióját a számítógépen (ha a Ruby több verziója van telepítve).

babel.config.js

A Babel egy olyan JavaScript-fordító, amely lehetővé teszi a JavaScript legújabb és legjobb funkcióinak használatát, és összeegyeztethetővé teszi azokat a webböngészőkkel, amelyek esetleg még nem vették át ezeket a funkciókat. A Bábel konfigurációjával kapcsolatos további információkért tekintse meg hivatalos dokumentumaikat.

config.ru

A Rack (a népszerű Ruby szerver) ezt a fájlt használja az alkalmazás elindításához.

drágakönyv

A gemfile-ben tárolja az alkalmazás összes függőségét, mivel látta, hogy a Rails New parancs sok drágakövet telepít, de amint további funkciókat ad hozzá az alkalmazásához, sokat ugrál be és ki ebből a fájlból.

gemfile.lock

Hasonlóan a Node projektek package-lock.json fájljához, ez a fájl is frissül, amikor futtatja bundle installvagy bundle updatemegoldja az összes drágakőfüggőséget, amely felülmúlja a gem fájlban manuálisan feltüntetett értékeket . Ne szórakozz ezzel a fájllal, amely automatikusan frissül.

csomag.json

NPM-függőségeket hoz létre a Javascript modulokhoz, ezeket a Webpacker csomagolja.

postscss.config.js

A PostCSS a CSS segítségével sok modern funkciót kínál, a szállítói előtagok automatikus hozzáadásától a CSS-modulok felvételéig. További információ erről a hűvös eszközről nézze meg.

rakefile

Rake ismét a „Ruby Make” rövidítést jelenti. A Rails számos parancsot tartalmaz, amelyek megkövetelik a Rake-től, például rake routes(az alkalmazás összes útvonalát megmutatva) rake db:migrateúj modellek és oszlopok hozzáadását a db-hez. Többek között ide adhat egyedi rake parancsokat.

README.md

Ez a projekt Readme-je, amely a projektek Github oldalán jelenik meg, és tartalmaz minden olyan információt, amelyről úgy gondolja, hogy hasznos lehet másoknak, akik a projektet vizsgálják vagy azzal dolgoznak.

fonal.zár

Hasonlóan a package.jsonhoz, a Yarn is a Webpacker alapértelmezett csomagkezelője. Ez egy zárfájl, így a Gemfile.lock-hoz hasonlóan ez is automatikusan frissül, és nem szabad manuálisan módosítania.

Te végigcsináltad! Gratulálunk!

a GIPHY-n keresztül

További források

Segítők (A kezdők útmutatója a Rails segítőkhöz - Mix & Go)

Információk a fájlok megőrzéséről (StackOverflow fájlok megőrzése)

Rails inicializálása (A Rails inicializálás folyamata - Ruby on Rails útmutatók)

Blogalkalmazás létrehozása (A sínek használatának megkezdése - Ruby on Rails útmutatók)

Tudom, hogy ez elég elsöprő, de hadd egyszerűsítsem egy kicsit. A Rails 99% -a azért van, hogy testre szabhassa az n-edik fokot, ezért a Rails továbbra is jól működik a nagyvállalkozások és az induló vállalkozások számára egyaránt; könnyedén beállíthatja és módosíthatja az alkalmazás szinte bármely részét, nagyon kevés erőfeszítéssel. Ez azt jelenti, hogy a legtöbb kezdő, személyes projekt és még megfelelő mennyiségű vállalati projekt számára is nagyon keveset fog használni ebből a funkcióból.

Mivel a Modellek, a Nézetek és a Vezérlők jelentik a Rails alkalmazás magját, fejlesztési idejének nagy részét az alkalmazásmappában fogja tölteni. A route.rb fájlt meglehetősen sokat fogja használni a config mappában, miközben beállítja, hogy a felhasználók hogyan lépjenek át az alkalmazásban, és amikor új vezérlőműveleteket ad hozzá. Ügyeljen arra, hogy mindig írja be a megfelelő teszt lefedettséget az alkalmazásaihoz. Ha igen, akkor sok időt tölt a tesztmappában. A gemfile egy utolsó hely, ahol gyakran meglátogatja a drágaköveket, ha szükséges.

Bár minden új fájlban rengeteg fájl és mappa van létrehozva, rails newnem szabad, hogy túlterhelje őket; ha valaha is eltévedsz, ennek a posztnak hátad van.