(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); Einföld Ruby-forritun frá grunni með Active Record - The Codest
The Codest
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Iðnaðargreinar
    • Fjártæknifyrirtæki og bankastarfsemi
    • E-commerce
    • Adtech
    • Heilbrigðistækni
    • Framleiðsla
    • Flutningar
    • Bifreiða
    • Internet hlutanna
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
Aftur ör Farðu aftur
2020-04-24
Hugbúnaðarþróun

Einföld Ruby-forritun frá grunni með Active Record

The Codest

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.

 cat Gemfile

# frozen_string_literal: true

source 'https://rubygems.org'

ruby '2.7.2'

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:

tree.

├── Gemfile
├── Gemfile.lock
├── README.md
└── app
└── application.rbHljóðskrift

Gagnagrunnur

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.

# docker-compose.yml

version: '3.7'
services:
  postgresql:
    image: postgres:12.0-alpine
    ports:
- 5432:5432
    environment:
- PGDATA=/postgresql
- POSTGRESPASSWORD=postgres
- POSTGRESUSER=postgres
    volumes:
- db-volume:/postgresql
volumes:
  db-volume:

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. 

  1. 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'
  1. 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 
# frozen_string_literal: true

require 'dotenv'

Dotenv.load

require 'standalone_migrations'

StandaloneMigrations::Tasks.load_tasks

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.

Rúbínforrit
  1. Áð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:
# db/config.yml

default: &default

  adapter: postgresql

  encoding: unicode

  pool: 

  gagnagrunnur: 

  notandanafn: 

  lykillorð: 

  hýsil: 

  port: 

development:

  <<: *default

test:

  <<: *default

staging:

  <<: *default

production:

  <<: *default

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

# .env

DATABASE_NAME="development"

DATABASE_USER="postgres"

DATABASE_PASSWORD="postgres"

DATABASE_HOST="localhost"

DATABASE_PORT="5432"
  1. Á þessu stigi ættum við að geta keyrt rake db:create Skipun sem mun búa til gagnagrunninn

    Ruby-vefforrit

  2. 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

    Rails vefforrit

# frozen_string_literal: true

class CreatePosts < ActiveRecord::Migration[6.0]

  def change

 create_table :posts do |t|

 t.string :title

 end

  end

end
Ruby on Rails vefumsókn

Þú æ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:

 tree.

├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── .gitignore
├── .env.example
├── app
│   └── application.rb
├── db
│   ├── config.yml
│   ├── migrate
│   │   └── 20210504135128_create_posts.rb
│   └── schema.rb
└── docker-compose.yml

Virkt skrá

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 forritunar­lógík okkar úr 'forrit' Skrá og keyra forritið okkar í gegnum hlaupari Þjónusta bætt við í forritaskránni.

#!/usr/bin/env ruby
# frozen_string_literal: true

require 'bundler/setup'

$LOAD_PATH.unshift File.expand_path('..', __dir__)
require 'app/application'

Runner.start
# frozen_string_literal: true

class Runner
  def self.start
    puts 'Start'
  end
end
Rúbín forritunarþróun

Mundu líka að bæta við krefjast 'app/runner' til app/forrit.rb

Kóðinn er að finna á GitHub:

– https://github.com/dwatek/simplerúbínforrit

Lesa meira

GraphQL Ruby. Hvernig er frammistaðan?

Lestar og önnur samgöngutæki

Rails-þróun með tmux, vim, fzf og ripgrep

Tengdar greinar

Myndskreyting af heilbrigðisforriti fyrir snjallsíma með hjartatákni og hækkandi heilsufarsgrafík, merkt með The Codest-merkinu, sem táknar stafræna heilsu og HealthTech-lausnir.
Hugbúnaðarþróun

Heilbrigðis-hugbúnaður: gerðir og notkunartilvik

Tólin sem heilbrigðisstofnanir treysta á í dag líta ekkert út eins og pappírsskjöl frá fyrri áratugum. Heilbrigðisforrit styðja nú heilbrigðiskerfi, sjúklingameðferð og nútímalega heilbrigðisþjónustu á klínískum og...

THECODEST
Yfirlitsmynd sem sýnir hnignandi súlurit með uppstrekktri ör og gullmynt sem táknar kostnaðarhagkvæmni eða sparnað. The Codest-merkið birtist í efra vinstra horni með slagorðinu "In Code We Trust" á ljósgráum bakgrunni.
Hugbúnaðarþróun

Hvernig á að stækka þróunarteymið án þess að fórna gæðum vörunnar

Ertu að stækka þróunarteymið þitt? Lærðu hvernig á að vaxa án þess að fórna gæðum vörunnar. Þessi leiðarvísir fjallar um merki um að kominn sé tími til að stækka, uppbyggingu teymisins, ráðningar, forystu og verkfæri—og hvernig teymið getur...

THECODEST
Hugbúnaðarþróun

Búðu til vefumsóknir sem þola framtíðina: innsýn frá sérfræðiteymi The Codest

Uppgötvaðu hvernig The Codest skarar fram úr við að búa til stigstækar, gagnvirkar vefumsóknir með nýjustu tækni, sem bjóða upp á hnökralausa notendaupplifun á öllum kerfum. Lærðu hvernig sérfræðiþekking okkar knýr fram stafræna umbreytingu og viðskipti...

THECODEST
Hugbúnaðarþróun

Topp 10 hugbúnaðarþróunarfyrirtæki í Lettlandi

Kynntu þér fremstu hugbúnaðarþróunarfyrirtæki Lettlands og nýstárlegar lausnir þeirra í nýjustu grein okkar. Uppgötvaðu hvernig þessir tækniforingjar geta hjálpað til við að efla fyrirtækið þitt.

thecodest
Lausnir fyrir fyrirtæki og vaxtarfyrirtæki

Grunnatriði í Java hugbúnaðarþróun: Leiðarvísir að árangursríkri útvistun

Kannaðu þessa ómissandi leiðbeiningu um árangursríka outsourcing Java hugbúnaðarþróun til að auka skilvirkni, afla aðgangs að sérfræðiþekkingu og tryggja árangur verkefna með The Codest.

thecodest

Gerðu þig áskrifanda að þekkingargrunni okkar og vertu upplýstur um sérfræðiþekkingu upplýsingatæknigeirans.

    Um okkur

    The Codest – Alþjóðlegt hugbúnaðarþróunarfyrirtæki með tæknimiðstöðvar í Póllandi.

    Bretland - Höfuðstöðvar

    • Skrifstofa 303B, 182-184 High Street North E6 2JA
      Lundúnir, England

    Pólland - staðbundin tæknimiðstöðvar

    • Fabryczna skrifstofugarður, Aleja
      Herbergi 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsjá, Pólland

    The Codest

    • Heim
    • Um okkur
    • Þjónusta
    • Case Studies
    • Vitið hvernig
    • Starfsferilmöguleikar
    • Orðabók

    Þjónusta

    • Það er ráðgjafi
    • Hugbúnaðarþróun
    • Bakendaþróun
    • Framhliðþróun
    • Staff Augmentation
    • Bakhliðaráþróunaraðilar
    • Skýjaverkfræðingar
    • Gagnaverkfræðingar
    • Annað
    • Gæðatryggingartæknimenn

    Auðlindir

    • Staðreyndir og goðsagnir um samstarf við utanaðkomandi hugbúnaðarþróunaraðila
    • Frá Bandaríkjunum til Evrópu: Af hverju ákveða bandarísk sprotafyrirtæki að flytja til Evrópu?
    • Samanburður á tæknifjarkerfisþróunarmiðstöðvum: Tech Offshore Europe (Pólland), ASEAN (Filippseyjar), Eurasia (Tyrkland)
    • Hvert eru helstu áskoranir CTO-a og CIO-a?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Höfundarréttur © 2026 af The Codest. Öll réttindi áskilin.

    is_ISIcelandic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech lvLatvian lt_LTLithuanian is_ISIcelandic