Mitä tapahtuu, kun luot uuden Rails-projektin

Kun avaat päätelaitteen ensimmäisen kerran ja kirjoitat rails newluotujen tiedostojen ja kansioiden määrän, voi olla ylivoimainen. Voit jopa työskennellä lukuisissa Rails-projekteissa avaamatta koskaan monia näistä kansioista - niin mitä ne tarkalleen ovat? Mitä he tekevät kulissien takana?

No, totuus on, että et tarvitse monia niistä ja Railsilla on useita lippuja, jotka on rakennettu newkomentoon, jonka avulla voit luoda uuden projektin ilman joitain Railsin sisäisistä oletuksista (lisätietoja saat kirjoittamalla vain rails new —help) . Se sanoi, että useimmissa projekteissa olet käynnissä rails newja luot peton projektikansion.

Tässä viestissä aion käydä läpi kaikki yksittäiset tiedostot ja kansiot uudessa Rails 6 -projektissa. Voit vapaasti käyttää tätä viitteenä, kun työskentelet uuden Rails-projektisi läpi ymmärtääksesi joitain epämääräisempiä kansioita. Lisää tämä viesti kirjanmerkkeihin ja palaa siihen milloin tahansa, kun löydät itsesi uuden Rails-projektin rikkaruohoon.

Joten aloitetaan:

rails new example-project

Vau, se on paljon!

Ensinnäkin Rails luo kaikki uuden Rails-sovelluksen edellyttämät tiedostot ja kansiot.

Sitten se hakee helmiä ja niputtaa ne; nämä ovat riippuvuuksia, joita Rails tarvitsee voidakseen käyttää verkkosivustoasi yksinkertaisimmalla iteraatiolla. Näyttää paljon? Jossakin määrin se on, mutta nämä helmet lisäävät toiminnallisuuden, joka tekee Rails-projektista niin helpon päästä irti maasta. Pohjimmiltaan kaikki mitä sinun tarvitsee tehdä nyt, on ajaa rails serverja sinulla on verkkosovellus, joka toimii paikallisesti: se on melko voimakas eikä mitään, jonka saat niin helposti / ilman / kaikkea tätä kattilaa.

Mennään kaikkiin näihin kansioihin:

 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 

Hypätään sisään:

cd example-project code . 

Menemme järjestyksessä, kun Rails järjestää ne, enimmäkseen puhun jokaisesta kansiosta ja tiedostosta, toistuville tiedostoille (kuten .keep) mainitsen sen vain kerran. Huomaat paljon yleissopimusten Kiskot kuten ”application_ [kehys] s” ( application_controller.rb, application_helper.rb, application_job.rbjne). Tällaisissa tapauksissa käsittelen kansion yksityiskohtaisesti, jotta tiedät, mitä sisällä on, vain tiedän, että olemassa oleva tiedosto "application _ [...]. Rb" on yläluokka, josta muut kansioon luomasi luokat perivät.

Sovelluskansio

Siellä missä suurin osa kehitystyöstäsi tapahtuu / sovellus sisältää mallit, näkymät ja ohjaimet, jotka tarjotaan käyttäjille selaimen pyynnöstä.

sovellus / varat

Tallentaa Rails Asset Pipeline -ominaisuudet. Asset Pipeline kokoaa omaisuuden (JavaScript, CSS ja kuvat) projektiin ja palvelee niitä asiakkaalle mahdollisimman tehokkaalla tavalla. Se tekee tämän yhdistämällä ja minimoimalla omaisuutta. Se myös kääntää valmiiksi Sass- ja CoffeeScript-kirjoitetut resurssit.

Lisätietoja: Asset Pipeline - Ruby on Rails -oppaat

sovellus / varat / määritys

Katso alempaa

app / resources / config / manifest.js

Edellä mainittua Asset Pipeline -ohjelmaa hallinnoi Ruby-helmi nimeltä “Rattaat-kiskot”, joka tekee kaikki edellä mainitut. "Rattaat-kiskot" sisältää joitain niihin liittyviä auttajahelmiä, kuten "sass-kiskot", "uglifier" ja "kahvikiskot". Kahvikiskot ja Sass-kiskot esikääntävät Sassin ja CoffeeScriptin CSS: ään ja JavaScriptiin, kun taas Uglifier minimoi nämä resurssit. Manifest.js: n avulla voit määrittää erityisesti, mitä esikoostetaan.

Lisätietoja tästä tiedostosta: eileen.codes | Kiskot 5: Ketjupyörät 4 -ilmoitus

sovellus / varat / kuvat

Tällöin voidaan sijoittaa kuvavaroja, kuten Asset Pipeline -kuvakkeet ja SVG: t.

.pitää

Tämä on ensimmäinen monista .keep-tiedostoista, jotka näet uudessa Rails-projektissa. Nämä eivät ole Rails-tiedostoja, mutta Gitin tiedostot, jotka eivät tavallisesti seuraa tyhjiä kansioita. Pidä. tiedosto vain sanoo "joku on täällä". Git seuraa mitä tahansa .keep-tiedostoa. Et tarvitse .peep-toimintoa, jos lisäät jotain muuta kansioon.

sovellus / varat / tyylitaulukot

Tyylitaulukot-kansio on paikka, johon sijoitat sovellukseesi liittyvät tyylit. Voit kirjoittaa tyylitaulukoita CSS: n tai SASS: n avulla laatikosta. Asset Pipeline kääntää kaikki tyylitaulukot puolestasi.

sovellus / varat / tyylitaulukot / sovellus.css

Sisältää kaikki tyylit, jotka sisällytetään omaisuuden putkistoon. Globaalit tyylit voidaan kirjoittaa Application.css-tiedostoon, mutta voit myös kirjoittaa ohjaimen erityisiä tyylitaulukoita (kun suoritat komennon rails g  uuden ohjaimen luomiseksi, se luo siihen liittyvän tyylitaulukon.   =require_tree . On Rails-tapa sisällyttää kaikki siihen liittyvät kansiot hakemistoon, joten muut CSS: t Tämän projektin sisällä olevat tiedostot sisällytetään käännettäessä =require_selfsisältävät kaikki CSS, jotka kirjoitat itse Application.css-tiedostoon, tämä on sijaintikohtainen, joten Application.css: n sisällä oleva CSS ajetaan / jälkeen / muut kansiot, jotkarequire_tree .

.app / kanavat

Railsilla on lukuisia pienempiä sisäisiä kehyksiä. ActionCable on kehys, jonka avulla voit käyttää WebSocketsia reaaliaikaisten ominaisuuksien luomiseen sovellukseesi, kuten keskusteluihin ja ilmoitusten ja uuden sisällön automaattisten tilausten päivittämiseen. Jos et aio ottaa käyttöön reaaliaikaisia ​​ominaisuuksia, sinun ei tarvitse huolehtia mistään ActionCable-kansiosta. Kanavat-kansio sisältää palvelinpuolen Ruby-tiedostot näiden yhteyksien luomiseen.

Voit lukea kaiken ActionCablesta täältä: Toimintakaapelin yleiskatsaus - Ruby on Rails -oppaat

sovellus / kanavat / sovelluskaapeli

Application_cable sisältää kanava- ja yhteystiedostot uusien reaaliaikaisten ominaisuuksien luomiseen sovellukseesi.

sovellus / kanavat / sovelluskaapeli / kanava.rb

Jokainen sovelluksesi reaaliaikainen ominaisuus kapseloidaan yksittäiseksi kanavakanavaksi. Esimerkiksi chat-ominaisuus chat voi olla yksi kanava. Äskettäin julkaistun sisällön ilmoitusjärjestelmä olisi erillinen kanava. Tämä kansio sisältää kaikki sovelluksesi kanavat.

sovellus / kanavat / sovelluskaapeli / yhteys.rb

Yhteydet ovat käyttäjän ja palvelimen välinen todennus. He eivät käsittele mitään logiikkaa (kanavat tekevät niin), vaan tarkistavat vain varmistaakseen, että nykyisellä käyttäjällä on oikeus tilata sovelluksesi eri kanavia. Useimmissa tapauksissa tämä olisi yksinkertainen vahvistus siitä, että käyttäjä on kirjautunut sisään.

sovellus / ohjaimet

Mallinäkymän ohjainten MVC-mallin osa C. Ohjaimet pitävät välittäjänä mallin ja näkymän välillä. Käyttäjän pyynnöstä rekisterinpitäjä nappaa kaikki siihen liittyvät tiedot mallista ja välittävät ne näkymään, joka käyttäjälle näytetään. Esimerkiksi, jos käyttäjä siirtyy localhost: 3000 / posts -sivulle, ohjain määrittää, minkä näkymän heille näytetään, sekä kaikki siihen liittyvät tietueet mallista.

sovellus / ohjaimet / huolenaiheet

Huolet ovat tapa pienentää mallejasi sen sijaan, että kirjoittaisit valtavan määrän uudelleenkäytettäviä menetelmiä yhteen malliin, voit heittää nämä menetelmät huolenaiheisiin, joissa niitä voidaan helposti käyttää uudelleen ohjaimissasi.

app / controllers / application_controller.rb

Ohjaimet ovat vain rubiiniluokkia, jotka perivät luokasta nimeltä ActionController. Kun lisäät projektiin lisää malleja, sinulla on enemmän ohjaimia. application_controller.rb vaaditaan mille tahansa Rails-projektille, koska se perii ActionController::Baseja kaikki tulevat ohjaimet harjoittavat sitä, mikä antaa heille ohjainten toiminnallisuuden.

Näet paljon "application_ [lisää suhteellinen otsikko tähän] .rb" -tiedostoja: application_controller.rb, application_helper.rb, application_record.rb. Useimmissa tapauksissa nämä edustavat maailmanlaajuista tapaa olla vuorovaikutuksessa sovelluksen kanssa, välittäjä, joka perii perusluokan ja perii sitten tulevat luokat tai molemmat. En keskustele näiden tiedostojen toiminnoista kaikissa tapauksissa.

sovellus / avustajat

Avustajat ovat tapa pitää näkemyksesi siistinä. Näkymien tulisi koskea yksinkertaisesti tietojen näyttämistä HTML-muodossa käyttäjälle. Jos huomaat, että html.erb-tiedostosi ovat jumissa, ja niissä on paljon pieniä laskelmia tai logiikkaa, siirrä tämä koodi auttajamenetelmiin.

app / helpers / application_helper.rb

Tarjoaa paikan maailmanlaajuisten avustajien kirjoittamiseen, kun luot enemmän ohjaimia, sinulla on enemmän avustajia työskentelemään tiettyjen ohjainten ja näkymien kanssa.

app / javascript

Tämä kansio on kätevä paikka laittaa kaikki sovelluksessasi käyttämäsi javascript, Rails Asset Pipeline sisällyttää ne tästä kansiosta mihin tahansa sivuihin, joissa niitä käytetään (Asset Pipeline tietää mihin komentosarjat kuuluvat, koska tiedostot seuraavat tavallisesti myös ohjaimen nimeämiskäytäntö).

app / javascript / channels

Olemme jo tarkastelleet ActionCable-kanavia yllä, mutta tämä kansio sisältää asiakaskohtaisen javascriptin reaaliaikaisten WebSocket-yhteyksien luomiseen.

app / javascript / channels / consumer.js

Kuluttajat ovat WebSocket-yhteyden asiakkaita; kanavaa tilaavat loppukäyttäjät. Tämä komentosarja yhdistää nämä kuluttajat asiakaspuolen kanavaan.

app / javascript / channels / index.js

Sovelluksella voi olla useita kanavia (chat, hälytykset, uudet viestit jne.). index.js on asiakaspuolen hakemisto kaikista sovelluksesi kanavista.

app / javascript / packs / application.js

Webpacker on rubiinihelmi, jonka avulla voit käyttää Webpackia, JavaScript-niputtajaa Rails-projektissasi. Se toimii yhdessä Asset Pipeline -ohjelman kanssa ja on tarkoitettu suurille JavaScript-kehyksille, ei pienille skripteille tai muille resursseille, kuten CSS: lle tai kuville (joita Webpack yleensä käsittelisi Javascript-projektissa). Webpacker on kuitenkin joustava, ja tämä on vain oletusarvo. Voit halutessasi saada Webpackin käsittelemään kuvia ja pienempiä JavaScriptejä ohittamalla kokonaan Asset Pipeline. Voit määrittää, että tässä kansiossa vaaditaan eri resursseja. Pakatut oletusvarat ovat:

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

sovellus / työpaikat

Työpaikat ovat taustatehtäviä, joita suoritat, kun käyttäjät jatkavat sovelluksesi käyttöä Aina, kun sinulla on toiminto, johon liittyy paljon käsittelyä, riittää hidastamaan käyttäjän kokemusta merkittävästi ja aiheuttamaan sovelluksesi jumittumisen, sinun on luotava tausta työ, joka suorittaa tehtävän kulissien takana, jolloin käyttäjä voi jatkaa sivuston käyttämistä keskeytyksettä.

Lisätietoja työtehtävistä: Rails Active Job Tutorial: How to use activejob | Koodaus | @codeshipin kautta

sovellus / varat / työpaikat / sovelluksen_työ.rb

Katso edellä.

sovellus / postittajat

Voit ajatella lähettäjiä sähköpostin valvojina. Voit luoda uuden postilaatikon Rails generate mailer. Tämä antaa sinulle vastaavan mallin ja ohjaimen sähköpostiviestien lähettämiseen käyttäjillesi.

app / mailers / application_mailer.rb

Katso edellä.

sovellus / mallit

MVC: n “M”; Malli on malli tietokantaan tallennetuille tiedoille. Yleensä mitä tahansa taulukkoa pidetään mallina. Yleiset mallit voivat olla   User,   Post  tai   Comment. Huomaa, että nämä asiat ovat yksikköä eikä monikkoa, tämä viittaa mallin prototyyppiseen luonteeseen. Tämä on toisin kuin ohjaimet, miksi sopimusten mukaan ovat monikkomuotoja, koska ohjaimet viittaavat useisiin tietueisiin.

sovellus / mallit / huolenaiheet

Huolet ovat moduuleja - pieniä uudelleenkäytettävien koodien palasia, jotka yleensä uutetaan malleista, kun ne lihavat. Huolenaiheet-kansio on osa ActiveSupport-nimistä sisäistä Rails-kehystä, joka helpottaa moduulien hallintaa.

Katso lisätietoja Rails-oppaista huolenaiheista.

app / models / application_record.rb

Application_record.rb perii ActiveRecord::Basekaikista sovelluksesi seuraavista malleista periytyy ApplicationRecordsamalla tavalla kuin Application_controller tekee ActionControllerkaikkien muiden ohjaimien saataville toiminnot .

sovellus / näkymät

MVC-kuvion viimeinen osa on Views. Views-kansio sisältää kaiken, mitä käyttäjä näkee selaimessaan, enimmäkseen HTML-muodossa upotetun Rubyn (ERB) tai .Haml-muodossa, joka on Rubyn mallikieli. Uusilla ohjaimilla on todennäköisesti liitetty näkymäkansio samalla nimellä (ellet luo sovellusliittymää). Yleisesti ottaen kaikilla ohjaimen menetelmillä on liitetty näkymä.

sovellus / näkymät / asettelut

Uudessa Rails-sovelluksessa on Layouts-kansio, jossa on sovellukset.html.erb , mailer.html.erb ja mailer.text.erb nämä Rails-sovelluksen globaalit asettelut eri toimialueilla, kuten selain ja postilaatikko. Voit halutessasi lisätä tähän kansioon muita asettelun komponentteja, esimerkiksi _header.html.erb, mutta suurin osa näkymistäsi järjestetään niiden ohjaimelle omiin Näytä-kansioihin. Application.html.erb on sovelluksesi päämalli, tämä tiedosto luo sovelluksellesi tärkeimmät HTML- koodit ja tunnisteet näillä näkymillä . Tuotto on vain vähän Ruby-koodia, joka lisää sopivan näkymän sivulle, jota käyttäjä tarkastelee. OttaaApplication.html.erb- tiedosto pitää koodisi kuivana, koska sinun ei tarvitse ilmoittaa toistuvasti doctypeä, pääelementtejä tai sisällyttää komentosarjoja ja tyylitaulukoita jokaiselle Näkymän sivulle. Rails ja Asset Pipeline huolehtivat tästä puolestasi. Kolme tiedostoa tässä kansiossa, kuten edellä todettiin, ovat:

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

bin-kansio

Roskakansi auttaa määrittämään Rails-sovelluksen, jotta se ja siihen liittyvät komennot voivat toimia oikein.

bin / nippu

Varmistaa, että Gem Bundler toimii oikein.

bin / kiskot

Spring on esiladaaja, joka pitää kiskot käynnissä taustalla työskennellessäsi (joissakin tapauksissa sinun on käynnistettävä palvelin uudelleen, mutta suurimmaksi osaksi muutokset näkymiin tai ohjaimiin ladataan automaattisesti ja välittömästi sovelluksessasi, joka on käynnissä kehityksessä ympäristö). Tämä tiedosto lataa kevään, kun käynnistät Rails-sovelluksen.

roska

Rake tarkoittaa Ruby Make ja sitä käytetään useiden komentojen suorittamiseen, jotka sekä määrittävät että päivittävät palvelimen.

bin / setup

Voit kirjoittaa komentoja, jotka suoritetaan, kun sovelluksesi käynnistetään ensimmäisen kerran.

astia / jousi

Antaa Springin juosta käyttämättä Bundler-ohjelmaa kaikkien helmiesi niputtamiseen, jolloin kevät lataa sivusi nopeasti kehityksessäsi aina, kun teet muutoksia.

bin / webpack

Kuten edellä on todettu, Rails käyttää Webpackia niputtamaan joitain JavaScriptejä toisin kuin AssetPipeline, tämä tiedosto vaatii tarvittavan asennuksen ja suorittaa sitten Webpackin.

bin / webpack-dev-palvelin

Antaa sinun mukauttaa Webpackin dev-palvelinta, jonka haluat tehdä, jos et halua kaikkia tai kaikkia resurssejasi niputettua kehitysympäristösi.

bin / lanka

Lanka on NPM: n kaltainen JavaScript-paketinhallinta. Voit käyttää kumpaakin Rails-projektissa.

kokoonpano

Config, aivan kuten nimi viittaa siihen, sisältää tiedostoja Rails-sovelluksen määrittämiseksi eri ympäristöissä; kehittäminen ja testaus.

config / ympäristöissä

Tämän kansion avulla voit määrittää, miten sovelluksesi toimii kehitys-, tuotanto- ja testausympäristöissä. Voit esimerkiksi varmistaa, että action_mail on määritetty lähettämään sähköposteja tuotantopalvelun kautta, mutta ei kehitteillä.

config / alustus

Tämän kansion avulla voit asettaa rakeiset alustusohjelmat määrittelemään, kuinka Rails-sovelluksesi muokkautuu, on hyvä mahdollisuus, ettet viettää täällä liikaa aikaa varsinkin kun työskentelet muutaman ensimmäisen Rails-sovelluksen parissa.

config / initializers / application_controller_renderer.rb

Antaa ohjainten hahmonnuksen kuuluvuusalueen ulkopuolelle. Katso lisätietoja: Päivittäminen Ruby on Rails 5.0 -versioon Rails 4.2: stä - sovelluksen käyttötapa - Juoksu Rubyn kanssa

config / alustusohjelmat / varat.rb

Liittyy omaisuuden putkilinjaan; joka muistaa palvelee Rails-sovelluksen sivuja heidän tarvitsemillaan varoilla (CSS, JS jne.). Täällä voit lisätä resursseja latauspolulle, kuten solmumoduulit.

config / initializers / backtrace_silencers.rb

Backtraces on virheenkorjaustyökalu, jonka avulla voit nähdä, mitä Rails-sovelluksessa tapahtuu, erityisen hyödyllinen, kun asiat räjähtävät ja voit määrittää tietyn vika-alueen. Määritä mitä jälkijäljet ​​näytetään määrittämällä, mitkä kirjastot saavat näyttää jälkijälkiä tässä tiedostossa.

config / initializers / content_security_policy.rb

Mozillasta: "HTTP Content-Security-Policy -vastausotsikon avulla verkkosivuston järjestelmänvalvojat voivat hallita resursseja, joita käyttäjäagentilla on oikeus ladata tietylle sivulle. Muutamia poikkeuksia lukuun ottamatta käytäntöihin sisältyy enimmäkseen palvelimen alkuperän ja komentosarjan päätepisteiden määrittäminen. “Content-Security-Policy - HTTP | MDN. Pohjimmiltaan tämä hallitsee tietoja, joiden sallitaan virrata sovellukseesi ja mistä ulkoisista lähteistä. Esimerkiksi linkittäminen ulkoisiin komentosarjoihin, kirjasimiin tai kuviin sovelluksesi ulkopuolella.

config / initializers / cookies_serializer.rb

Määrittää evästeiden muodon, oletuksena tämä on :json

config / initializers / filter_parameter_logging.rb

Keskustelemme kirjaamisesta alla, mutta on joitain parametreja (hyväksytyt käyttäjän syötteet), kuten salasanoja tai arkaluonteisia käyttäjätietoja, joita et halua näkyä lokissasi, voit lisätä ne tähän. filter_paramiter_logging on eräänlainen .gitignore parametreille.

config / alustusohjelmat / taivutukset. rb

Kuten Model-selityksessä todettiin, Railsilla on nimityskäytännöt yksikölle ja monikkomuodolle. Kieliasetusten (sovelluksesi kieliasetukset katso alla oleva Kieliasetukset-kansio) perusteella voit päivittää nämä käänteet tässä alustuksessa, vaikka se ei todennäköisesti ole hyvä idea, ellei se ole ehdottoman välttämätöntä.

config / initializers / mime_types.rb

MIME-tyypit - Monikäyttöiset Internet-postilaajennukset määrittävät sähköpostiliitteiden muodon.

MIME - Wikipedia

config / initializers / wrap_parameters.rb

Rails käärii oletusarvoisesti kaikki parametrit JSON: iin, mutta voit määrittää muut muodot wrap_parametershashilla. ActionController :: ParamsWrapper

config / locales

Ladataan yleensä en.yml-tiedostona ainoana tiedostona. Jos sovelluksessasi on useita kielivaihtoehtoja, voit sisällyttää kaikki käännökset YML-tiedostoina tähän.

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

Suorittaa boot.rb-tiedoston, jos käytät matkustajaa. Se vetää kaikki jalokivetiedostossa tarvitsemasi helmet projektiisi ja luo luokan, Applicationjosta periytyyRails::Application

config / boot.rb

Luo ympäristömuuttujan, joka on BUNDLE_GEMFILEasetettu projektisi helmitiedoston sijaintiin. Näin Rails tietää mistä vetää riippuvuuksia tai jalokiviä, joita Rails-asennuksissa on noin 2 tusinaa.

config / cable.yml

Samanlainen kuin database.yml (katso alla) cable.yml asettaa kehitys-, testaus- ja tuotantosovittimet ActionCablelle. Muistat, että Rails-tapa toteuttaa reaaliaikaiset ominaisuudet sovelluksessasi.

config / credentials.yml.enc

credentials.yml korvaa secrets.yml-salaisen avaimen sijaintina. Tämä tiedosto on salattu, joten kukaan ei voi lukea salaisia ​​avaimiasi, ja sen purkaa vain pääavain (katso alla).

config / database.yml

Voit asettaa oletustietokannan (jotta koodistasi tulee vähän DRYer) ja tietyt tietokannat kehitystä, testausta ja tuotantoa varten.

config / ympäristö.rb

Rails-sovelluksen alustus palvelimella vaatii paljon vaiheita, riippuen siitä, käytätkö rails servervai matkustajaa, nämä vaiheet voivat olla hieman erilaiset, mutta kun ympäristö. Rb latautuu, sovellus alustetaan ja alkaa toimia.

config / master.key

Heitä tämä .gitignore-tiedostoon heti (katso alla), tämä on pääavain, joka purkaa credentials.yml.enc-tiedoston salauksen Rails-tiedostossa, eikä kenelläkään pitäisi olla sitä. Lisätietoja voit lukea tämän loistavan artikkelin: Rails 5.2 -tiedot - cedarcode - Medium

config / puma.rb

Puma on Rubyn verkkopalvelin ja Railsin kehitysympäristön oletusverkkopalvelin. Voit määrittää Puman tämän kansion kautta muuttamalla esimerkiksi ketjumäärää ja oletusporttia, jolla puma kuuntelee saapuvia pyyntöjä (oletus on 3000).

config / reitit. rb

Reitit ovat tiekartta ohjaimesi ympärillä. Reitit vievät saapuvat pyynnöt palvelimelle ja ohjaavat ne oikeaan ohjaimeen. Toisin kuin useimmat muut tiedostot asetuskansiossa, vietät täällä paljon aikaa reittien määrittämiseen sovellusta rakennettaessa.

config / spring.rb

Kuten roskakorikansiossa kerrotaan, Spring on esiladaaja, tämä tiedosto kertoo Springille, mitkä tiedostot ja kansiot käynnistävät uudelleenkäynnistyksen.

config / storage.yml

ActiveStorage on Rails 5.2: ssä käyttöön otettu kehys resurssien, kuten kuvien, lataamiseen ja tallentamiseen. Tarvitset paikan laittaa nämä asiat, kuten AWS-ilmentymä, määrität kyseisen sijainnin tähän tiedostoon.

config / webpacker.yml

Voit lisätä muita ympäristöjä myös Webpackeriin.

db

db / siemenet

Siementen avulla voit täyttää tietokannan tiedoilla. Oletetaan, että halusit nähdä sivutusominaisuutesi toiminnassa; voit luoda 11 viestiä käsin tai voit käyttää vain helmiä, kuten Faker, luoda 11 satunnaista viestiä sinulle ja lisätä ne suoraan tietokantaan.

lib

Rails-ohjeet määrittelevät Lib: n "Laajennetut moduulit sovelluksellesi". Jos tämä kuulostaa epämääräiseltä, et ole ainoa, joka tuntee niin. Se, mikä nimenomaan menee lib-kansioon, on jonkin verran kiistanalaista: katso Mitä menee Rails lib / - Extreme Programming - Medium ja mikä koodi menee lib / hakemistoon? mutta yleinen yksimielisyys on, että lib tulisi varata koodille, joka ei sovi sovelluskansioon, joka voidaan helposti purkaa käytettäväksi muissa sovelluksissa. Siinä on kaksi alikansioiden sisältöä ja tehtävää

lib / omaisuus

Ruby on Rails -oppaista:

"lib / resources on tarkoitettu omien kirjastojesi koodille, joka ei todellakaan sovi sovelluksen tai kirjastojen, jotka on jaettu sovellusten, soveltamisalaan."

lib / tehtävät

Voit kirjoittaa mukautettuja raketehtäviä ja laittaa ne tähän kansioon. Se ei ole kovin yleisesti käytetty sijainti.

Hirsi

Kirjaaminen on tärkeä tapa nähdä sovelluksesi suorituskyky sekä ongelmien etsiminen ja vianmääritys. Oletusarvoisesti tämä kansio on tyhjä. Voit alustaa erilaiset loggaajat config / environments-kansioon komennolla, kuten: config.log_level = :infosieltä, kun suoritat sovellustasi, lokitiedosto luodaan. Lisätietoja on tässä upeassa Datadog-artikkelissa: Rails-sovelluslokien kerääminen, mukauttaminen ja hallinta

Sisältyy Lokikansioon:

  • log / development.log

solmu_moduulit

Kaikki projektissasi käyttämäsi solmupaketit (kuten Webpack ja Babel) ovat riippuvaisia ​​kymmenistä, ellei sadoista muista solmupaketeista. Pakettien hallinta, kuten NPM tai Lanka, hallinnoi näitä paketteja puolestasi. Sinun ei pitäisi mennä tähän kansioon tai muokata mitään siinä.

julkinen

Julkinen kansio sisältää ulkoisia resursseja, joita voidaan käyttää sovelluksen normaalin rakenteen ulkopuolella, favicon, apple-touch-icons, robots.txt ja tietysti virhesivut. Sivut, kuten: 404, 422 ja 500. Jos tuotantosovelluksessa ilmenee jonkinlainen virhe, HTML-sivut näytetään automaattisesti ohittamalla reitit, ohjaimet tai mahdolliset tietyt näkymät. Nämä sivut eivät ole osa Rails Asset Pipeline -ohjelmaa, joten sinun on kirjoitettava kaikki tyylit inline-muodossa.

public / robots.txt

Voit määrittää, miten hakukoneet indeksoivat verkkosivustoasi.

varastointi

Rails 5.2 esitteli ActiveStorage-sovelluksen, joka korvasi jalokivet, kuten PaperClip, ja sen avulla Rails pystyi suoraan liittymään pilvipalveluihin, kuten AWS tai Google

testata

Railsilla on sisäänrakennettu testaus alusta asti! Railsin oletustestipaketti on MiniTest, joten huomaat, että kaikki nämä kansiot ovat valmiita menemään MiniTestin kanssa.

On kansioita, joissa voit testata tiettyjä ohjaimia, auttajia, malleja, postittajia sekä kirjoittaa integraatiotestejä, jotka toimivat useissa ohjaimissa ja luovat jotain todellisen käyttökokemuksen kaltaista. Lisätietoja siitä, mikä on ohjaintesti vs. integraatiotesti, suosittelen tätä artikkelia (Jason Swett)

testi / kanavat

testi / kanavat / sovelluskaapeli / yhteystesti.rb

Testit ActionCable-yhteyksille, kuten kaikki ActionCable-jutut, tarvitset tätä vain, jos käytät kanavia sovelluksessasi.

testi / ohjaimet

Voit testata ohjaimesi täällä, nämä testit tarkastelevat yleensä kuinka hyvin ohjaimesi menee mallin ja näkymän välillä. Ne ovat laajempia kuin mallitestit, mutta pienempiä kuin integraatiotestit.

testi / kalusteet

Ei paikka testien kirjoittamiseen, mutta nuken testitietojen tuottamiseen. Kalustekansioon voit lisätä minkä tahansa määrän YML-tiedostoja, joissa on ennalta määritettyjä tietoja. Voit vetää nämä tiedot testeihisi varmistaaksesi, että mallit toimivat oikein ja ovat vuorovaikutuksessa sovelluksen kanssa odotetusti.

testi / kalusteet / tiedostot

Nyt kun Railsilla on sisäänrakennettu tiedostojen käsittely ActiveStorage-ohjelmalla, voit testata mallien tietoja ja testata tiedostoja.

testi / avustajat

Voit kirjoittaa erityisiä testejä apuohjelmille, joita sinulla on sovelluksessa / avustajissa. Avustajien testaaminen ei ole liian yleistä, mutta voit tehdä sen, jos auttaja on liian monimutkainen tai tuntuu hauraalta.

testi / integrointi

Integraatiotestien avulla voit testata ohjaimien välisiä vuorovaikutuksia ja tarjota testausvaihtoehdon lähempänä todellista käyttökokemusta.

testi / postittajat

Voit jopa kirjoittaa testejä postilaatikoillesi varmistaaksesi, että sähköpostit lähetetään oikein ja muotoillaan oikein.

testi / mallit

Yksi kaikkein rakeisimmista testeistä; voit varmistaa, että tietue tallennetaan oikein, tietokanta on päivitetty jne.

testi / järjestelmä

Järjestelmätestit ovat tapa testata sovellustasi todellisessa selaimessa, joka luo kuvakaappauksia näyttämään, miltä kaikki näyttää toiminnassa. Järjestelmätestit testaavat myös JavaScriptiä, eikä sinun pitäisi käyttää MiniTest-järjestelmätestejä korvaamaan hyvä Java-testikirjasto, kuten Jest. Järjestelmätestit; Sen avulla voit kuitenkin nähdä, kuinka JavaScript toimii selaimessa.

test / application_system_test_case.rb

Tämä tiedosto pitää sisällään järjestelmän testien oletusasetukset. Voit muuttaa selaimia, ohjaimia tai näytön tarkkuutta.

test / test_helper.rb

Testiapu auttaa tuomaan ulkoisia tietoja ja kirjastoja, joita tarvitaan testeihin. Huomaat, että fixtures :alltuodaan heti lepakosta . Tämä antaa testeillesi pääsyn kalusteisiin. Voit määrittää joukon muita testipaketteja ja kehyksiä test_helper.rb: stä sisällyttämään niiden toiminnot ja DSL: t, kuten Capybara, FactoryBot ja Faker.

tmp

Väliaikainen - tämä kansio sisältää välimuistit ja istunnot. Se voidaan tyhjentää toisinaan joko manuaalisesti tai asennuksen yhteydessä (sovelluksen käyttöönoton mukaan).

myyjä

Toimittajakansio on paikka kolmannen osapuolen koodille, joka on jonkin verran Gems. Jalokivet; ovat kuitenkin hieman itsenäisempiä, kun taas toimittajakansio saattaa sisältää tiettyjä komentosarjoja, joita ei ole niputettu helminä. Lisätietoja tästä ja joistakin eduista on ohjeartikkelissa Gem a Gem.

.browserslistrc

Selainlista on työkalu kohdistaa tiettyihin selainversioihin NPM-työkaluille, kuten Babelille. Oletusarvoisesti "oletusarvot" varmistaa, että

.gitignore

Kuten minkä tahansa muun projektin kohdalla, versionhallinta ohittaa kaikki tässä määritetyt tiedostot tai kansiot.

.ruby-versio

Sisältää yksinkertaisesti version Ruby-projektista, jonka alla projekti toimii, RVM voi lukea tämän tiedoston ja asettaa oikean version rubiinista tietokoneellesi (jos sinulla on useita Ruby-versioita asennettuna).

babel.config.js

Babel on JavaScript-kääntäjä, jonka avulla voit käyttää viimeisimpiä ja suurimpia JavaScript-ominaisuuksia ja koota ne yhteensopiviksi selainten kanssa, jotka eivät ehkä ole vielä ottaneet käyttöön näitä ominaisuuksia. Lisätietoja Babelin kokoonpanosta on heidän virallisissa asiakirjoissa.

config.ru

Rack (suosittu Ruby-palvelin) käyttää tätä tiedostoa sovelluksen käynnistämiseen.

jalokivi

Gem-tiedoston sisällä tallennat kaikki sovelluksesi riippuvuudet, koska olet nähnyt Rails New -komennon asentavan paljon helmiä, mutta kun lisäät sovelluksellesi lisää toimintoja, hyppäät sisään ja ulos tästä tiedostosta paljon.

gemfile.lock

Samanlainen kuin Node-projektien package-lock.json, tämä tiedosto päivitetään, kun suoritat bundle installtai bundle updateratkaiset kaikki jalokiviriippuvuudet, jotka ovat manuaalisesti helmi-tiedostossa. Älä sekoita tätä tiedostoa, joka päivitetään automaattisesti.

package.json

Muodostaa NPM-riippuvuudet Javascript-moduuleille, jotka pakataan Webpackeriin.

postscss.config.js

PostCSS tarjoaa paljon modernia toiminnallisuutta CSS: n kanssa toimittajan etuliitteiden automaattisesta lisäämisestä CSS-moduulien sisällyttämiseen. Katso lisätietoja tästä hienosta työkalusta.

rakefile

Jälleen Rake tarkoittaa ”Ruby Make”. Railsilla on useita sisäänrakennettuja komentoja, jotka edellyttävät Rakeen rake routes( kuten näyttää kaikki sovelluksesi reitit) rake db:migrateuusien mallien ja sarakkeiden lisäämisen db: ään. Voit lisätä tähän muun muassa mukautettuja rake-komentoja.

README.md

Tämä on projektisi lueminut, se näkyy projektien Github-sivulla, sisältää kaikki tiedot, joiden uskot olevan hyödyllisiä muille, jotka tutkivat tai työskentelevät projektisi kanssa.

lanka. lukko

Aivan kuten package.json, Lanka on Webpackerin oletuspakettien hallinta. Tämä on lukitustiedosto, joten kuten Gemfile.lock, se päivitetään automaattisesti eikä sinun pitäisi muuttaa sitä manuaalisesti.

Teit sen läpi! Onnittelut!

kautta GIPHY

Lisäresurssit

Avustajat (Aloittelijan opas kiskojen avustajille - Mix & Go)

Tietoja tiedostojen säilyttämisestä (StackOverflow säilytä tiedostot)

Kiskojen alustus (The Rails Initialization Process - Ruby on Rails Guides)

Blogisovelluksen luominen (Railsin käytön aloittaminen - Ruby on Rails -oppaat)

Ymmärrän, että se on melko ylivoimainen, mutta anna minun yksinkertaistaa sitä hieman. 99% Rails-palvelusta antaa sinun mukauttaa projektiasi n. Asteeseen, minkä vuoksi Rails toimii edelleen hyvin sekä suuryrityksille että startup-yrityksille; voit helposti säätää ja säätää melkein mitä tahansa sovelluksesi osaa hyvin pienellä vaivalla. Tästä huolimatta useimmille aloittelijoille, henkilökohtaisille projekteille ja jopa kohtuulliselle määrälle yritysprojekteja käytät hyvin vähän tätä toimintoa.

Koska mallit, näkymät ja ohjaimet edustavat Rails-sovelluksen ydintä, vietät suurimman osan kehitysajastasi sovelluskansiossa. Käytät Routes.rb-tiedostoa kohtuullisen määrän määrityskansioon samalla, kun määrität kuinka käyttäjät siirtyvät sovelluksesi läpi ja kun lisäät uusia ohjaimen toimintoja. Muista kirjoittaa sovelluksillesi aina oikea testikattavuus. Jos olet, vietät paljon aikaa testikansiossa. Gemfile on viimeinen paikka, jossa vierailet usein lisäämällä ja päivittämällä helmiä tarpeen mukaan.

Vaikka jokaisessa uudessa rails newon luotu tonni tiedostoja ja kansioita, siitä ei pidä hukkua; jos koskaan eksy tällä viestillä on selkäsi.