Einföld Ruby-forritun frá grunni með Active Record
Damian Watroba
Software Engineer
MVC er hönnunarmynstur sem skiptir ábyrgðum forrits til að auðvelda siglingar. Rails fylgir þessu hönnunarmynstri samkvæmt venju.
Hér er tómt.
Mér líkar að vinna með Relsar því ég get auðveldlega og fljótt búið til forrit sem virkar og sýnt því heiminum eða bara vinum mínum. Hins vegar eru til forritategundir sem þurfa ekki jafn stórt rammasett eins og Relsar og allar virkni þess.
Það getur gerst að forritið okkar þurfi aðeins M (líkan) úr öllu MVC-mynstrinu. Líkan-stýring. Er það þess virði að byrja á verkefni í Relsar Ef við vitum að V-C (View-Controller) hlutinn verður ekki þörf?
Gott er að vita að Virkt skrá , Active Model, Action Pack og Action View, sem bera ábyrgð á MVC, má nota sjálfstætt utan Relsar. Þetta gerir kleift okkur að búa til einfalt Rúbín umsókn sem hefur gagnagrunnstengingu og þróa það án óþarfa kóði og bókasöfn sem við fáum í pakka með því að keyra skipunina rails new.
Ég hef lýst skref fyrir skref hvernig á að ná þessu og þú getur fundið allan kóðann á GitHub. Tengillinn er neðst í þessari grein.
uppbygging
Til að hefja verkefnið okkar þurfum við ekki mikið. Skulum byrja á því að búa til Gems-skrá þar sem við bætum við gems sem við þurfum að vinna í forritinu, ásamt útgáfu af Rúbín munum við nota.
Valfrjálst Lesið mig.md Skjalið er til að lýsa hvernig forritið okkar virkar og hvernig á að halda áfram að vinna að því, bæði fyrir okkur sjálf og aðra forritara sem vilja þróa verkefnið með okkur í framtíðinni.
cat README.md
# forrit
GERÐU: Eyða þessu og textanum hér að ofan, og lýstu forritinu þínu
forrit skrá með forrit.rb skrár, sem mun sjá um stillingar og hleðslu bókasafna og skráa sem við bætum við forritið okkar. Mundu að keyra Sjálfvirk uppsetning að búa til Læstur gimsteinn. Uppbygging forritsins okkar á þessu stigi ætti að líta svona út:
Með slíkri uppbyggingu tilbúinni getum við íhugað hvaða gagnagrunnsvél eigi að velja og stilla. Fyrir þessa grein valdi ég PostgresQL, sem ég hef mestan reynslu af. Það getur einnig verið Mýskúel eða SQlite3, eða hvaða önnur vél sem vinnur með Virkt skrá. Þegar tækni er valin er gott að láta leiða sig af tilgangi forritsins, hvað það verður notað til og hvaða tilgang það mun hafa.
Fyrir fljótlega og einfalda gagnagrunnsstillingu notaði ég dökker og docker-compose. Ég vil ekki fjalla nánar um stillingar þessara verkfæra, kosti þeirra og galla, en ef þú hefur aldrei notað docker áður myndi ég vísa þér í opinberu skjölin fyrir Docker og Docker Compose fyrir frekari upplýsingar.
Við munum einnig þurfa að bæta við okkar Gems-skrá
gem 'pg'
Hljóðskrift
og til okkar forrit.rb skrá
# app/application.rb
require 'pg'
module Application
class Error < StandardError; end
# Kóðinn þinn fer hér...
end
Sjálfstæðar flutningar, Rake
Næsta skref í stillingu forritsins okkar er að bæta við the sjálfstæðar_flutningar og hrífu gems, sem gerir okkur kleift að stjórna flutningum eins og í Rails og fá aðgang að rake db: skipunum.
Uppfærsla Gems-skrá með nauðsynlegum gimsteinum og gera Sjálfvirk uppsetning
# gem notað í forritum sem ekki nota Rails né Ruby
gem 'standalone_migrations'
# standalone_migrations þarf rake til að geta búið til migrations og keyrt þau, eins og í Rails
gem 'rake'
# Gem sem þarf til að hlaða umhverfibreytum
gem 'dotenv'
Bætum við a Rake-skrá í verkefnið okkar í rótarmöppunni, þar sem við munum hlaða dotenv og sjálfstæðar_flutningar sem við bættum við fyrr
Með Rake-skrá Svo stillt getum við athugað hvort okkar hrífu er að vinna með því að nota rake -T skipun sem á að skila lista yfir tiltækar skipanir í forritinu okkar.
Áður rake db:create, við þurfum ennþá að hafa stillingarskrá í verkefninu okkar til að tengjast Postgres-dæminu. Til þess að gera þetta þurfum við að búa til db-möppu ásamt a stillingar.yml Skráin ætti að líta út eins og sú hér að neðan:
Eins og þú sérð notaði ég umhverfisbreytur til að stilla tenginguna við Postgres-kerfið okkar, þar sem við munum geyma viðkvæmar gögn sem ætti ekki að vera í gagnasafninu. Fyrir þetta notaði ég það sem áður hafði verið bætt við gem dotenv, sem var einnig bætt við í Rake-skrá ásamt sjálfstæðar_flutningar. Ef við erum að nota Git til að stjórna útgáfustjórnun forritsins okkar, skulum við muna að bæta við a .gitignore skrá þar sem við munum gera óvirka möguleika á að rekja .umhverfi skrá úr verkefni okkar.
# .gitignore
.env*
!.env.example
og bæta við.umhverfi Skrá sem inniheldur rétt stilltan ENV
Á þessu stigi ættum við að geta keyrt rake db:create Skipun sem mun búa til gagnagrunninn
Reynum að bæta við nýja flutningi í gegnum rake db:new_migration name=, þar sem við búum til a færslur borð með a :titill súla
# frozen_string_literal: true
class CreatePosts < ActiveRecord::Migration[6.0]
def change
create_table :posts do |t|
t.string :title
end
end
end
Þú ættir að taka eftir því að gagnagrunns/flytja Skrá var sjálfkrafa bætt við og skema.rb var búið til eftir farsæla flutning. Núna lítur verkefnisuppbygging okkar svona út:
Síðast en ekki síst, enn eitt skref í að búa til forritið okkar er að bæta við virkiskrá og stillingu þess. Til þess þurfum við að uppfæra Gemfile-skrána okkar með þremur viðbótar gemsum:
gem 'activerecord'
gem 'erb'
gem 'yaml'
Af hverju við bætum við erfðaefni og Ólíklegur er útskýrt hér að neðan í athugasemdunum. Allt virkureikningur Stilling verður í app/forrit.rb skrá.
Skoðum hvað gerist hér, eitt í einu:
# frozen_string_literal: true
# Ef við viljum geta keyrt forritið í mismunandi umhverfum,
# t.d. prófunar- eða framleiðsluumhverfi, er gott að stilla ENVIRONMENT-gildið
# í byrjun, sem er tekið úr umhverfisbreytunni
# eða `development` sem sjálfgefnu gildi.
ENV['ENVIRONMENT'] ||= 'development'
# Til að nota viðbótargemana þurfum við að hlaða þeim með `require`-aðferðinni í Kernel#require,
# sem hleður skrána eða bókasafnið sem gefið er sem breytur
require 'pg'
require 'active_record'
require 'dotenv'
require 'yaml'
require 'erb'
# Sjálfgefið leitar Dotenv.load-aðferðin til að hlaða umhverfibreytum í `.env`-skrána, svo ef við viljum nota önnur umhverfi er þess virði að framlengja hana í aðferðina hér að neðan, sem mun fyrst, fyrir fyrirfram skilgreint þróunarumhverfi, leita að skrá sem endar á `.env.development.local`,
# síðan `.env.development` og að lokum `.env`.
Dotenv.load(".env.#{ENV.fetch('ENVIRONMENT')}.local", ".env.#{ENV.fetch('ENVIRONMENT')}", '.env')
# Aðferð sem þarf til að hlaða gagnagrunnsstillingum
def db_configuration
# Aðferðin hér að neðan skilar slóðinni að skránni með stillingum okkar
db_configuration_file_path = File.join(File.expand_path('..', __dir__), 'db', 'config.yml')
# Með slóðinni að skránni getum við lesið gildi hennar. Vegna þess að config.yml
# skrá inniheldur umhverfisbreytur og, eins og þú gætir hafa tekið eftir,
# erb setningafræði, þurfum við einnig að nota erb gem. Án þess,
# gildi breytanna verða ekki lesin rétt og activerecord
# mun ekki geta tengst postgres. Eftirfarandi aðferð mun skila
# stillinguna sem streng
db_configuration_result = ERB.new(File.read(db_configuration_file_path)).result
# Með því að nota `yaml`-geminn sem bætt var við áður getum við örugglega hlaðið inn stillinguna okkar
YAML.safe_load(db_configuration_result, aliases: true)
end
# Að lokum þurfum við að búa til tengingu milli activerecord og postgres
# með `establish_connection` aðferðinni
ActiveRecord::Base.establish_connection(db_configuration[ENV['ENVIRONMENT']])
module Application
class Error < StandardError; end
# Kóðinn þinn fer hér...
end
Við höfum þegar stillingarnar, svo við getum bætt Post-líkaninu í okkar rúbín app.
├── app
│ └── models
│ └── post.rb
app/models/post.rb
# frozen_string_literal: true
class Post < ActiveRecord::Base;end
og mundu að hlaða skránni inn forrit.rb
krefst 'app/models/post'
Einnig, mundu að bæta við require 'app/hlaupari' til app/forrit.rb
Ef við viljum bæta við nýjum skrám í forritið okkar, þjónusturnar, fleiri módel, þurfum við að hlaða þeim inn. forrit.rb.
Yfirlit
Núna er Ruby-forritið okkar tilbúið til að halda áfram. Við höfum stillt:
gagnagrunnstenging,
Virkt skrá,
Sjálfstæðar flutningar með rake
Eins og þú sérð er ekki alltaf nauðsynlegt að nota rails nýtt. Á þennan hátt forðastum við óþarfa kóða í forritinu okkar sem er ekki notaður. Við höfum meiri stjórn á þróun forritsins okkar. Við getum bætt við fleiri bókasöfnum og viðskiptalógík með tímanum. Við getum notað slíkt stillt forrit til að búa til skriðforrit eða skrapara, tengst utanaðkomandi forritaskil úr þeim munum við sækja upplýsingar og vista í okkar eigin gagnagrunni eða hlaða inn skrár og draga úr þeim áhugaverðar upplýsingar. Ég óska þér velfarnaðar með frekari þróun eigin forrita!
Bónus
Forritið okkar þarf einnig að vera ræst á einhvern hátt. Við getum gert það á nokkra vegu, til dæmis úr skjáborðstólnum. Við getum búið til exe/app skrá sem mun hlaða forritunarlógík okkar úr 'forrit' Skrá og keyra forritið okkar í gegnum hlaupari Þjónusta bætt við í forritaskránni.